Contact: Isaac Held Reviewers: Peter Phillipps
A module that allows one to add processes that act in the grid domain to the dynamics of the shallow model on the sphere
A module that allows one to add processes that act in the grid domain to the dynamics of the shallow model on the sphere. Currently adds a relaxation to a specified "equilibrium geopotential" and relaxes the winds to zero
fms_mod transforms_mod time_manager_mod
use shallow_physics_mod [,only: shallow_physics_init, shallow_physics, shallow_physics_end, phys_type]
type phys_type real, pointer, dimension(:,:) :: empty end type fields from physics module made available for diagnostics
subroutine shallow_physics_init subroutine shallow_physics subroutine shallow_physics_end type(phys_type)subroutine shallow_physics_init(Phys) type(phys_type) , intent(inout) :: Phys Initializes module
subroutine shallow_physics (Time, dt_ug, dt_vg, dt_hg, ug, vg, hg, & delta_t, previous, current, Phys) real, intent(inout), dimension(:,:) :: dt_ug, dt_vg, dt_hg the u, v and geopotential tendencies onto which tendencies due to the grid-point physics are added (m/(s^2) for dt_ug, dt_vg; (m^2)/(s^3) for dt_hg) real, intent(in) , dimension(:,:, 2) :: ug, vg, hg the grid zonal and meridional velocities (m/s) and geopotential (m^2/s^2) the third index is the time-index used in the leapfrog step real , intent(in) :: delta_t time step (s) integer, intent(in) :: previous, current = 1 or 2 ug(:,:,previous) is the velocity at t-delta_t ug(:,:,current ) is the velocity at t type(time_type), intent(in) :: Time type(phys_type), intent(inout) :: Phys
subroutine shallow_physics_end (Phys) type(phys_type), intent(inout) :: Phys
&shallow_physics_nml real :: fric_damp_time = -20.0 rate at which ua nd v are relaxed to zero (seconds) (if negative, units are days instead -- negative sign is ignored) real :: therm_damp_time = -10.0 rate at which geopotential is relaxed to h_eq (units as above) real :: h_0 = 3.e04 (m^2/s^2) real :: h_amp = 2.e04 (m^2/s^2) real :: h_lon = 90.0 degrees real :: h_lat = 25.0 degrees real :: h_width = 15.0 degrees real :: h_itcz = 1.e05 (m^2/s^2) real :: itcz_width = 4.0 degrees h_eq is defined as h_0 + h_amp*exp(-r^2) + h_itcz*exp(-d^2) where r^2 = xx^2 + yy^2 xx = (lon - h_lon)/(2*h_width) yy = (lat - h_lat)/h_width and d = lat/itcz_width