Here is a list of bugs and fixes as of version 3.5.48 Tag08 of WACCMX. This includes the work in getting this tag (and Tag06/Tag01) running correctly with upward extended version code mods in place.
Module diffusion_solver.F90:
Subroutine compute_vdiff:
- Passing 'kvt' instead of 'kvh' into subroutine compute_molec_diff
- Removed calculation of 'kvt' and added to module gw_drag
- Added '.not. csnt_fixed_ubc(m)' to if statement to calculate upper boundary H
- Upward flux of H adjusted
Module dp_coupling.F90:
Subroutine d_p_coupling:
- H included in calculations of cpairv and mbarv
Module eddy_diff.F90:
- Added 'ifdef WACCMX' where 'hi-waccm' changes made
Module geopotential.F90:
*Subroutine geopotential_dse
- Corrected calculation of 'zvirv'(rh2o/rairv)(Two places: Lines 111,226)
Module gw_drag.F90:
Subroutine gw_intr:
- Use variable 'nbot_molec' from diffusion_solver module
- Declared local variable 'kvt'(molecular+eddy diffusion)
- Calculate 'kvt'
- Passing 'kvt' to subroutine 'gw_drag_prof' instead of 'kvh'
Subroutine gw_drag_prof:
- Add 'kvt' to call interface
- Removed 'ktop_gw' variable and just use 'ktop' TOA for gravity waves
*Subroutine gw_bgnd_beres
- Modified calculation of 'Umini' and 'Umaxi'(source level tau calculation loop indices)
to not exceed number of waves allowed
Module iondrag.F90:
Subroutine iondrag:
- Added 'ifdef WACCMX' for 'hi-waccm' changes
Module majorsp_diffusion.F90:
Subroutine mspdiff:
- Vertical dimension size of variable 'expzi' changed from 'pver' to 'pverp' since it is on interface levels
- Variable 'pverp'(number of vertical interface levels) replaced by 'pver'(number of vertical midpoint levels) in loop to calculate 'dzmid' and 'rzmid' since top level value needs to be set to value on next level below
- Variable 'pverp'(number of vertical interface levels) replaced by 'pver'(number of vertical midpoint levels) in loop to calculate 'psclht' since top level value needs to be set to value on next level below
- Replaced incorrect 'k' index with '1' in 'dzmid' when calculating upper boundary to vertical level in 'rdzmid'
- Added assignment of top vertical level values for 'dzmid', 'rzmid', and 'psclht'
- When insuring non-negative values of O and O2, instead of using 'amax1', just check for values less than 'small'(currently set to 1.0E-20) and set those to 'small'
- To test for unreasonably large mixing ratios change test of O+O2>1 to O+O2+H>1
Module molec_diff.F90:
Subroutine compute_molec_diff:
- When calculating 'tint'(interface temperature) at top level, changed 'ntop_molec-1' index to 'ntop_molec+1'
- When initializing 'kq_scal'(interface temperature) to zero, changed 'ntop_molec-1' index to 'ntop_molec+1'
- In calculation of 'cc_top', 'kw_fac' is replaced by column (constituent?) dependent 'kw_top' (should be 'km_top'?)
Module mo_mean_mass.F90:
Subroutine set_mean_mass:
- Added H to calculation of 'mbar'(mean mass)
Module mo_tgcm_ubc.F90:
- Added 'ifdef WACCMX' for 'hi-waccm' changes
Module mo_waccm_hrates.F90:
- Added 'ifdef WACCMX' for 'hi-waccm' changes
Module physics_types.F90:
Subroutine physics_update:
- When calculating N2 mixing ratio, include H
Module radheat.F90:
- Added 'ifdef WACCMX' for 'hi-waccm' changes
Module te_map.F90:
- 'omga_ik' set to zero at top level
Module upper_bc.F90:
- Added 'ifdef WACCMX' for 'hi-waccm' changes
Subroutine ubc_get_vals:
- If top level is 150km or greater, set NO 'ubc_mmr'(Upper boundary NO mixing ratio) to zero
Module vertical_diffusion.F90:
- Added 'ifdef WACCMX' for 'hi-waccm' changes
Subroutine vertical_diffusion_init:
- Set 'ntop_eddy' to level closest to pressure 1.E-05 Pascals