Contact: Isaac Held, Bruce Wyman Reviewers: Change history: WebCVS Log for shallow_physics.f90
Provides simple forcing for a shallow water model.
Forcing is generated by relaxing geopotential height to an equilibrium state. The velocities are also relaxed linearly to zero. Two mass sources may be specified. The ITCZ source results in a zonally symmetric Hadley cell response. The monsoonal source results in a subtropical anticyclone. When both the ITCZ and monsoonal sources are present (the default), one also generates a quasi-stationary Rossby wave emanating from the monsoonal source.
fms_mod time_manager_mod
use shallow_physics_mod [,only: shallow_physics_init, shallow_physics, shallow_physics_end ] shallow_physics_init : initializes module shallow_physics : adds tendencies to existing tendencies shallow_physics_end : releases memory and terminates the module Notes: Optional namelist input can be read from file input.nml. No restart files are needed or generated by this module. No data files are needed.
call shallow_physics_init ( axes, Time, lon, lat ) INPUT: axes -- integer, dimension(4) axis indices (x,y,zfull,zhalf) returned by module diag_manager_mod Time -- type(time_type) the current time lon -- longitude in radians at the center of a grid box [real, dimension(:) or dimension(:,:)] lat -- latitude in radians at the center of a grid box [real, dimension(:) or dimension(:,:)]
call shallow_physics ( is, ie, js, je, timelev, dt, Time, um, vm, hm, u, v, h, u_dt, v_dt, h_dt ) INPUT: is, ie, js, je, timelev, dt, Time, u, v, h, um, vm, hm is, ie, js, je -- integer, scalar indices of the data window being passed timelev -- integer, scalar time level used to compute the forcing if timelev = -1, values at previous time level (tau-1) are used (um,vm,hm) if timelev = 0, values at current time level (tau) are used (u,v,h) if timelev = +1, values at next time level (tau+1) are used (e.g., um+dt*u_dt) dt -- real, scalar the time step (seconds) for leap-frog schemes use 2*dt Time -- type(time_type) the current time um, vm, hm -- real, dimension(:.:) zonal wind (m/s), meridional wind(m/s), geopotential height (m2/s2) at the previous time level u, v, h -- real, dimension(:.:) zonal wind (m/s), meridional wind(m/s), geopotential height (m2/s2) at the current time level IN/OUT: u_dt, v_dt, h_dt -- real, dimension(:,:) u_dt = du/dt = tendency of u (m/(s^2)), etc output has heating and friction added to input tendencies
(all values listed are default values) logical :: no_forcing = .false. Turns off all forcing. (Interfaces become dummy routines) real :: h_0 = 3.e04 (m2/s2) mean height of flow real :: h_monsoon = 2.e04 (m2/s2) amplitude of monsoon source real :: lon_monsoon = 90.0 (degrees) longitude of monsoon source origin real :: lat_monsoon = 25.0 (degrees) latitude of monsoon source origin real :: width_monsoon = 15.0 (degrees) width of monsoon source real :: h_itcz = 1.e05 (m2/s2) amplitude of ITCZ source real :: width_itcz = 4.0 (degrees) latitude width of ITCZ source real :: fric_damp_time = -20.0 frictional damping time real :: therm_damp_time = -10.0 thermal damping time damping times units are (1/s) The namelist value is the inverse of damping time, if positive the units are in (seconds), and if negative the units are in (days).
None.
FATAL errors in shallow_physics_mod module has already been initialized You have attempted to call shallow_physics_init more than once. If this is what you intend to do, then call shallow_physics_end before recalling shallow_physics_init. module has not been initialized A FATAL error will occur in shallow_physics if you have not previously called shallow_physics_init. Also, a WARNING will occur in shallow_physics_end if you have not previously called shallow_physics_init. invalid value for timelev argument The value of timelev must be set as -1, 0, or +1. Refer to the namelist documentation for details.
None.
None.
None.