Skip to content

Commit

Permalink
Code changes related to EMC FMS mixedmode (NOAA-EMC#163)
Browse files Browse the repository at this point in the history
* Update code to use 'constantsR4_mod' module (NOAA-EMC#59)

* update tools/fv_nudge.F90
* modify the following files to use 'constantsR4_mod' module:
driver/fvGFS/atmosphere.F90
driver/fvGFS/fv_nggps_diag.F90
model/fv_dynamics.F90
model/fv_nesting.F90
model/fv_update_phys.F90
model/nh_core.F90
model/nh_utils.F90
tools/coarse_grained_diagnostics.F90
tools/external_ic.F90
tools/fv_diagnostics.F90
tools/fv_nudge.F90
tools/fv_restart.F90
tools/test_cases.F90

* revise external_ic.F90 and fv_nudge.F90 to use allocatable arrays
  • Loading branch information
MinsukJi-NOAA committed Dec 12, 2022
1 parent f04433c commit 2cdf37b
Show file tree
Hide file tree
Showing 13 changed files with 58 additions and 7 deletions.
4 changes: 4 additions & 0 deletions driver/fvGFS/atmosphere.F90
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,11 @@ module atmosphere_mod
! FMS modules:
!-----------------
use block_control_mod, only: block_control_type
#ifdef OVERLOAD_R4
use constantsR4_mod, only: cp_air, rdgas, grav, rvgas, kappa, pstd_mks
#else
use constants_mod, only: cp_air, rdgas, grav, rvgas, kappa, pstd_mks
#endif
use time_manager_mod, only: time_type, get_time, set_time, operator(+), &
operator(-), operator(/), time_type_to_real
use fms_mod, only: error_mesg, FATAL, &
Expand Down
4 changes: 4 additions & 0 deletions driver/fvGFS/fv_nggps_diag.F90
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,11 @@ module fv_nggps_diags_mod
! </table>

use mpp_mod, only: mpp_pe, mpp_root_pe,FATAL,mpp_error, input_nml_file, stdlog
#ifdef OVERLOAD_R4
use constantsR4_mod, only: grav, rdgas
#else
use constants_mod, only: grav, rdgas
#endif
use time_manager_mod, only: time_type, get_time
use diag_manager_mod, only: register_diag_field, send_data
use diag_axis_mod, only: get_axis_global_length, get_diag_axis, get_diag_axis_name
Expand Down
4 changes: 4 additions & 0 deletions model/fv_dynamics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,11 @@ module fv_dynamics_mod
! </tr>
! </table>

#ifdef OVERLOAD_R4
use constantsR4_mod, only: grav, pi=>pi_8, radius, hlv, rdgas, omega, rvgas, cp_vapor
#else
use constants_mod, only: grav, pi=>pi_8, radius, hlv, rdgas, omega, rvgas, cp_vapor
#endif
use dyn_core_mod, only: dyn_core, del2_cubed, init_ijk_mem
use fv_mapz_mod, only: compute_total_energy, Lagrangian_to_Eulerian, moist_cv, moist_cp
use fv_tracer2d_mod, only: tracer_2d, tracer_2d_1L, tracer_2d_nested
Expand Down
4 changes: 4 additions & 0 deletions model/fv_nesting.F90
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,11 @@ module fv_nesting_mod
use fv_arrays_mod, only: allocate_fv_nest_BC_type, fv_atmos_type, fv_grid_bounds_type, deallocate_fv_nest_BC_type
use fv_grid_utils_mod, only: ptop_min, g_sum, cubed_to_latlon, f_p
use init_hydro_mod, only: p_var
#ifdef OVERLOAD_R4
use constantsR4_mod, only: grav, pi=>pi_8, radius, hlv, rdgas, cp_air, rvgas, cp_vapor, kappa
#else
use constants_mod, only: grav, pi=>pi_8, radius, hlv, rdgas, cp_air, rvgas, cp_vapor, kappa
#endif
use fv_mapz_mod, only: mappm, remap_2d
use fv_timing_mod, only: timing_on, timing_off
use fv_mp_mod, only: is_master
Expand Down
4 changes: 4 additions & 0 deletions model/fv_update_phys.F90
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,11 @@ module fv_update_phys_mod
! </tr>
! </table>

#ifdef OVERLOAD_R4
use constantsR4_mod, only: kappa, rdgas, rvgas, grav, cp_air, cp_vapor, pi=>pi_8, radius, TFREEZE
#else
use constants_mod, only: kappa, rdgas, rvgas, grav, cp_air, cp_vapor, pi=>pi_8, radius, TFREEZE
#endif
use field_manager_mod, only: MODEL_ATMOS
use mpp_domains_mod, only: mpp_update_domains, domain2d
use mpp_parameter_mod, only: AGRID_PARAM=>AGRID
Expand Down
4 changes: 4 additions & 0 deletions model/nh_core.F90
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,11 @@ module nh_core_mod
! </tr>
! </table>

#ifdef OVERLOAD_R4
use constantsR4_mod, only: rdgas, cp_air, grav
#else
use constants_mod, only: rdgas, cp_air, grav
#endif
use tp_core_mod, only: fv_tp_2d
use nh_utils_mod, only: update_dz_c, update_dz_d, nh_bc
use nh_utils_mod, only: sim_solver, sim1_solver, sim3_solver
Expand Down
4 changes: 4 additions & 0 deletions model/nh_utils.F90
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,11 @@ module nh_utils_mod
! </tr>
! </table>

#ifdef OVERLOAD_R4
use constantsR4_mod, only: rdgas, cp_air, grav
#else
use constants_mod, only: rdgas, cp_air, grav
#endif
use tp_core_mod, only: fv_tp_2d
use sw_core_mod, only: fill_4corners, del6_vt_flux
use fv_arrays_mod, only: fv_grid_bounds_type, fv_grid_type,fv_nest_BC_type_3d
Expand Down
4 changes: 4 additions & 0 deletions tools/coarse_grained_diagnostics.F90
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
module coarse_grained_diagnostics_mod

#ifdef OVERLOAD_R4
use constantsR4_mod, only: rdgas, grav, pi=>pi_8
#else
use constants_mod, only: rdgas, grav, pi=>pi_8
#endif
use diag_manager_mod, only: diag_axis_init, register_diag_field, register_static_field, send_data
use field_manager_mod, only: MODEL_ATMOS
use fv_arrays_mod, only: fv_atmos_type, fv_coarse_graining_type
Expand Down
12 changes: 7 additions & 5 deletions tools/external_ic.F90
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,12 @@ module external_ic_mod
use tracer_manager_mod, only: get_tracer_names, get_number_tracers, get_tracer_index
use tracer_manager_mod, only: set_tracer_profile
use field_manager_mod, only: MODEL_ATMOS

use platform_mod, only: r4_kind, r8_kind
#ifdef OVERLOAD_R4
use constantsR4_mod, only: pi=>pi_8, omega, grav, kappa, rdgas, rvgas, cp_air
#else
use constants_mod, only: pi=>pi_8, omega, grav, kappa, rdgas, rvgas, cp_air
#endif
use fv_arrays_mod, only: fv_atmos_type, fv_grid_type, fv_grid_bounds_type, R_GRID
use fv_diagnostics_mod,only: prt_maxmin, prt_gb_nh_sh, prt_height
use fv_grid_utils_mod, only: ptop_min, g_sum,mid_pt_sphere,get_unit_vect2,get_latlon_vector,inner_prod
Expand Down Expand Up @@ -1648,7 +1652,7 @@ subroutine get_ncep_ic( Atm, nq )
call ncep2fms(im, jm, lon, lat, wk2)
if( is_master() ) then
write(*,*) 'External_ic_mod: i_sst=', i_sst, ' j_sst=', j_sst
call pmaxmin( 'SST_ncep_fms', sst_ncep, i_sst, j_sst, 1.)
call pmaxmin( 'SST_ncep_fms', real(sst_ncep), i_sst, j_sst, 1.)
endif
#endif
endif !(read_ts)
Expand Down Expand Up @@ -4170,8 +4174,6 @@ subroutine d2a3d(u, v, ua, va, im, jm, km, lon)

end subroutine d2a3d



subroutine pmaxmin( qname, a, im, jm, fac )

integer, intent(in):: im, jm
Expand Down Expand Up @@ -4207,7 +4209,7 @@ subroutine pmaxmin( qname, a, im, jm, fac )

end subroutine pmaxmin

subroutine pmaxmn(qname, q, is, ie, js, je, km, fac, area, domain)
subroutine pmaxmn(qname, q, is, ie, js, je, km, fac, area, domain)
character(len=*), intent(in):: qname
integer, intent(in):: is, ie, js, je
integer, intent(in):: km
Expand Down
5 changes: 5 additions & 0 deletions tools/fv_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,13 @@ module fv_diagnostics_mod
! </tr>
! </table>

#ifdef OVERLOAD_R4
use constantsR4_mod, only: grav, rdgas, rvgas, pi=>pi_8, radius, kappa, WTMAIR, WTMCO2, &
omega, hlv, cp_air, cp_vapor, TFREEZE
#else
use constants_mod, only: grav, rdgas, rvgas, pi=>pi_8, radius, kappa, WTMAIR, WTMCO2, &
omega, hlv, cp_air, cp_vapor, TFREEZE
#endif
use fms_mod, only: write_version_number
use time_manager_mod, only: time_type, get_date, get_time
use mpp_domains_mod, only: domain2d, mpp_update_domains, DGRID_NE, NORTH, EAST
Expand Down
8 changes: 6 additions & 2 deletions tools/fv_nudge.F90
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,17 @@ module fv_nwp_nudge_mod

use external_sst_mod, only: i_sst, j_sst, sst_ncep, sst_anom, forecast_mode
use diag_manager_mod, only: register_diag_field, send_data
#ifdef OVERLOAD_R4
use constantsR4_mod, only: pi=>pi_8, grav, rdgas, cp_air, kappa, cnst_radius =>radius
#else
use constants_mod, only: pi=>pi_8, grav, rdgas, cp_air, kappa, cnst_radius =>radius
#endif
use fms_mod, only: write_version_number, check_nml_error
use fms2_io_mod, only: file_exists
use mpp_mod, only: mpp_error, FATAL, stdlog, get_unit, mpp_pe, input_nml_file
use mpp_domains_mod, only: mpp_update_domains, domain2d
use time_manager_mod, only: time_type, get_time, get_date
use platform_mod, only: r4_kind, r8_kind

use fv_grid_utils_mod, only: great_circle_dist, intp_great_circle
use fv_grid_utils_mod, only: latlon2xyz, vect_cross, normalize_vect
Expand Down Expand Up @@ -1654,7 +1659,7 @@ subroutine get_ncep_analysis ( ps, u, v, t, q, zvir, ts, nfile, fname, bd )
#ifndef DYCORE_SOLO
! Perform interp to FMS SST format/grid
call ncep2fms( wk1 )
if(master) call pmaxmin( 'SST_ncep', sst_ncep, i_sst, j_sst, 1.)
if(master) call pmaxmin( 'SST_ncep', real(sst_ncep), i_sst, j_sst, 1.)
! if(nfile/=1 .and. master) call pmaxmin( 'SST_anom', sst_anom, i_sst, j_sst, 1.)
#endif
deallocate ( wk1 )
Expand Down Expand Up @@ -3531,7 +3536,6 @@ logical function leap_year(ny)

end function leap_year


subroutine pmaxmin( qname, a, imax, jmax, fac )

character(len=*) qname
Expand Down
4 changes: 4 additions & 0 deletions tools/fv_restart.F90
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,11 @@ module fv_restart_mod
! </table>


#ifdef OVERLOAD_R4
use constantsR4_mod, only: kappa, pi=>pi_8, omega, rdgas, grav, rvgas, cp_air, radius
#else
use constants_mod, only: kappa, pi=>pi_8, omega, rdgas, grav, rvgas, cp_air, radius
#endif
use fv_arrays_mod, only: fv_atmos_type, fv_nest_type, fv_grid_bounds_type, R_GRID
use fv_io_mod, only: fv_io_init, fv_io_read_restart, fv_io_write_restart, &
remap_restart, fv_io_register_nudge_restart, &
Expand Down
4 changes: 4 additions & 0 deletions tools/test_cases.F90
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,11 @@ module test_cases_mod
! </tr>
! </table>

#ifdef OVERLOAD_R4
use constantsR4_mod, only: cnst_radius=>radius, pi=>pi_8, omega, grav, kappa, rdgas, cp_air, rvgas
#else
use constants_mod, only: cnst_radius=>radius, pi=>pi_8, omega, grav, kappa, rdgas, cp_air, rvgas
#endif
use init_hydro_mod, only: p_var, hydro_eq
use fv_mp_mod, only: is_master, &
domain_decomp, fill_corners, XDir, YDir, &
Expand Down

0 comments on commit 2cdf37b

Please sign in to comment.