!
! constants_mod |
! pi=>pi_8, kappa, radius, grav, rdgas |
!
!
! field_manager_mod |
! MODEL_ATMOS |
!
!
! fms_mod |
! write_version_number, open_namelist_file,
! check_nml_error, close_file, file_exist |
!
!
! fv_arrays_mod |
! fv_atmos_type, allocate_fv_atmos_type, deallocate_fv_atmos_type,
! R_GRID |
!
!
! fv_diagnostics_mod |
! fv_diag_init_gn |
!
!
! fv_eta_mod |
! set_eta |
!
!
! fv_grid_tools_mod |
! init_grid |
!
!
! fv_grid_utils_mod |
! grid_utils_init, grid_utils_end, ptop_min |
!
!
! fv_mp_mod |
! mp_start, mp_assign_gid, domain_decomp,ng, switch_current_Atm,
! broadcast_domains, mp_barrier, is_master, setup_master |
!
!
! fv_io_mod |
! fv_io_exit |
!
!
! fv_restart_mod |
! fv_restart_init, fv_restart_end |
!
!
! fv_timing_mod |
! timing_on, timing_off, timing_init, timing_prt |
!
!
! mpp_mod |
! mpp_send, mpp_sync, mpp_transmit, mpp_set_current_pelist, mpp_declare_pelist,
! mpp_root_pe, mpp_recv, mpp_sync_self, mpp_broadcast, read_input_nml,
! FATAL, mpp_error, mpp_pe, stdlog, mpp_npes, mpp_get_current_pelist,
! input_nml_file, get_unit, WARNING, read_ascii_file, INPUT_STR_LENGTH |
!
!
! mpp_domains_mod |
! mpp_get_data_domain, mpp_get_compute_domain, domain2D, mpp_define_nest_domains,
! nest_domain_type, mpp_get_global_domain, mpp_get_C2F_index, mpp_get_F2C_index,
! mpp_broadcast_domain, CENTER, CORNER, NORTH, EAST, WEST, SOUTH |
!
!
! mpp_parameter_mod |
! AGRID_PARAM=>AGRID |
!
!
! test_cases_mod |
! test_case, bubble_do, alpha, nsolitons, soliton_Umax, soliton_size |
!
!
! tracer_manager_mod |
! tm_get_number_tracers => get_number_tracers,tm_get_tracer_index => get_tracer_index,
! tm_get_tracer_indices => get_tracer_indices, tm_set_tracer_profile => set_tracer_profile,
! tm_get_tracer_names => get_tracer_names,tm_check_if_prognostic=> check_if_prognostic,
! tm_register_tracers => register_tracers |
!
!
use constants_mod, only: pi=>pi_8, kappa, radius, grav, rdgas
use field_manager_mod, only: MODEL_ATMOS
use fms_mod, only: write_version_number, open_namelist_file, &
check_nml_error, close_file, file_exist
use mpp_mod, only: FATAL, mpp_error, mpp_pe, stdlog, &
mpp_npes, mpp_get_current_pelist, &
input_nml_file, get_unit, WARNING, &
read_ascii_file, INPUT_STR_LENGTH
use mpp_domains_mod, only: mpp_get_data_domain, mpp_get_compute_domain
use tracer_manager_mod, only: tm_get_number_tracers => get_number_tracers, &
tm_get_tracer_index => get_tracer_index, &
tm_get_tracer_indices => get_tracer_indices, &
tm_set_tracer_profile => set_tracer_profile, &
tm_get_tracer_names => get_tracer_names, &
tm_check_if_prognostic=> check_if_prognostic,&
tm_register_tracers => register_tracers
use fv_io_mod, only: fv_io_exit
use fv_restart_mod, only: fv_restart_init, fv_restart_end
use fv_arrays_mod, only: fv_atmos_type, allocate_fv_atmos_type, deallocate_fv_atmos_type, &
R_GRID
use fv_grid_utils_mod, only: grid_utils_init, grid_utils_end, ptop_min
use fv_eta_mod, only: set_eta
use fv_grid_tools_mod, only: init_grid
use fv_mp_mod, only: mp_start, mp_assign_gid, domain_decomp
use fv_mp_mod, only: ng, switch_current_Atm
use fv_mp_mod, only: broadcast_domains, mp_barrier, is_master, setup_master
!!! CLEANUP: should be replaced by a getter function?
use test_cases_mod, only: test_case, bubble_do, alpha, nsolitons, soliton_Umax, soliton_size
use fv_timing_mod, only: timing_on, timing_off, timing_init, timing_prt
use mpp_domains_mod, only: domain2D
use mpp_domains_mod, only: mpp_define_nest_domains, nest_domain_type, mpp_get_global_domain
use mpp_domains_mod, only: mpp_get_C2F_index, mpp_get_F2C_index, mpp_broadcast_domain
use mpp_domains_mod, only: CENTER, CORNER, NORTH, EAST, WEST, SOUTH
use mpp_mod, only: mpp_send, mpp_sync, mpp_transmit, mpp_set_current_pelist, mpp_declare_pelist, mpp_root_pe, mpp_recv, mpp_sync_self, mpp_broadcast, read_input_nml
use fv_diagnostics_mod, only: fv_diag_init_gn
#ifdef MULTI_GASES
use constants_mod, only: rvgas, cp_air
use multi_gases_mod, only: multi_gases_init, &
rilist => ri, &
cpilist => cpi
#endif
implicit none
private
!-----------------------------------------------------------------------
! Grid descriptor file setup
!-----------------------------------------------------------------------
!------------------------------------------
! Model Domain parameters
! See fv_arrays.F90 for descriptions
!------------------------------------------
!CLEANUP module pointers
character(len=80) , pointer :: grid_name
character(len=120), pointer :: grid_file
integer, pointer :: grid_type
integer , pointer :: hord_mt
integer , pointer :: kord_mt
integer , pointer :: kord_wz
integer , pointer :: hord_vt
integer , pointer :: hord_tm
integer , pointer :: hord_dp
integer , pointer :: kord_tm
integer , pointer :: hord_tr
integer , pointer :: kord_tr
real , pointer :: scale_z
real , pointer :: w_max
real , pointer :: z_min
real , pointer :: lim_fac
integer , pointer :: nord
integer , pointer :: nord_tr
real , pointer :: dddmp
real , pointer :: d2_bg
real , pointer :: d4_bg
real , pointer :: vtdm4
real , pointer :: trdm2
real , pointer :: d2_bg_k1
real , pointer :: d2_bg_k2
real , pointer :: d2_divg_max_k1
real , pointer :: d2_divg_max_k2
real , pointer :: damp_k_k1
real , pointer :: damp_k_k2
integer , pointer :: n_zs_filter
integer , pointer :: nord_zs_filter
logical , pointer :: full_zs_filter
logical , pointer :: RF_fast
logical , pointer :: consv_am
logical , pointer :: do_sat_adj
logical , pointer :: do_f3d
logical , pointer :: no_dycore
logical , pointer :: convert_ke
logical , pointer :: do_vort_damp
logical , pointer :: use_old_omega
! PG off centering:
real , pointer :: beta
integer , pointer :: n_sponge
real , pointer :: d_ext
integer , pointer :: nwat
logical , pointer :: warm_start
logical , pointer :: inline_q
real , pointer :: shift_fac
logical , pointer :: do_schmidt
real(kind=R_GRID) , pointer :: stretch_fac
real(kind=R_GRID) , pointer :: target_lat
real(kind=R_GRID) , pointer :: target_lon
logical , pointer :: reset_eta
real , pointer :: p_fac
real , pointer :: a_imp
integer , pointer :: n_split
real , pointer :: fac_n_spl
real , pointer :: fhouri
! Default
integer , pointer :: m_split
integer , pointer :: k_split
logical , pointer :: use_logp
integer , pointer :: q_split
integer , pointer :: print_freq
logical , pointer :: write_3d_diags
integer , pointer :: npx
integer , pointer :: npy
integer , pointer :: npz
integer , pointer :: npz_rst
integer , pointer :: ncnst
integer , pointer :: pnats
integer , pointer :: dnats
integer , pointer :: ntiles
integer , pointer :: nf_omega
integer , pointer :: fv_sg_adj
integer , pointer :: na_init
logical , pointer :: nudge_dz
real , pointer :: p_ref
real , pointer :: dry_mass
integer , pointer :: nt_prog
integer , pointer :: nt_phys
real , pointer :: tau_h2o
real , pointer :: delt_max
real , pointer :: d_con
real , pointer :: ke_bg
real , pointer :: consv_te
real , pointer :: tau
real , pointer :: rf_cutoff
logical , pointer :: filter_phys
logical , pointer :: dwind_2d
logical , pointer :: breed_vortex_inline
logical , pointer :: range_warn
logical , pointer :: fill
logical , pointer :: fill_dp
logical , pointer :: fill_wz
logical , pointer :: check_negative
logical , pointer :: non_ortho
logical , pointer :: adiabatic
logical , pointer :: moist_phys
logical , pointer :: do_Held_Suarez
logical , pointer :: do_reed_physics
logical , pointer :: reed_cond_only
logical , pointer :: reproduce_sum
logical , pointer :: adjust_dry_mass
logical , pointer :: fv_debug
logical , pointer :: srf_init
logical , pointer :: mountain
logical , pointer :: remap_t
logical , pointer :: z_tracer
logical , pointer :: old_divg_damp
logical , pointer :: fv_land
logical , pointer :: nudge
logical , pointer :: nudge_ic
logical , pointer :: ncep_ic
logical , pointer :: nggps_ic
logical , pointer :: ecmwf_ic
logical , pointer :: gfs_phil
logical , pointer :: agrid_vel_rst
logical , pointer :: use_new_ncep
logical , pointer :: use_ncep_phy
logical , pointer :: fv_diag_ic
logical , pointer :: external_ic
logical , pointer :: external_eta
logical , pointer :: read_increment
character(len=128) , pointer :: res_latlon_dynamics
character(len=128) , pointer :: res_latlon_tracers
logical , pointer :: hydrostatic
logical , pointer :: phys_hydrostatic
logical , pointer :: use_hydro_pressure
logical , pointer :: do_uni_zfull !miz
logical , pointer :: adj_mass_vmr ! f1p
logical , pointer :: hybrid_z
logical , pointer :: Make_NH
logical , pointer :: make_hybrid_z
logical , pointer :: nudge_qv
real, pointer :: add_noise
integer , pointer :: a2b_ord
integer , pointer :: c2l_ord
integer, pointer :: ndims
real(kind=R_GRID), pointer :: dx_const
real(kind=R_GRID), pointer :: dy_const
real(kind=R_GRID), pointer :: deglon_start, deglon_stop, & ! boundaries of latlon patch
deglat_start, deglat_stop
real(kind=R_GRID), pointer :: deglat
logical, pointer :: nested, twowaynest
logical, pointer :: regional
integer, pointer :: bc_update_interval
integer, pointer :: parent_tile, refinement, nestbctype, nestupdate, nsponge, ioffset, joffset
real, pointer :: s_weight, update_blend
integer, pointer :: layout(:), io_layout(:)
integer :: ntilesMe ! Number of tiles on this process =1 for now
#ifdef OVERLOAD_R4
real :: too_big = 1.E8
#else
real :: too_big = 1.E35
#endif
public :: fv_init, fv_end
integer, public :: ngrids = 1
integer, public, allocatable :: pelist_all(:)
integer :: commID, max_refinement_of_global = 1.
integer :: gid
real :: umax = 350. !< max wave speed for grid_type>3
integer :: parent_grid_num = -1
integer :: halo_update_type = 1 !< 1 for two-interfaces non-block
!< 2 for block
!< 3 for four-interfaces non-block
! version number of this module
! Include variable "version" to be written to log file.
#include