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:

  1. Passing 'kvt' instead of 'kvh' into subroutine compute_molec_diff
  2. Removed calculation of 'kvt' and added to module gw_drag
  3. Added '.not. csnt_fixed_ubc(m)' to if statement to calculate upper boundary H
  4. Upward flux of H adjusted

Module dp_coupling.F90:

Subroutine d_p_coupling:

  1. H included in calculations of cpairv and mbarv

Module eddy_diff.F90:
  1. Added 'ifdef WACCMX' where 'hi-waccm' changes made

Module geopotential.F90:

*Subroutine geopotential_dse

  1. Corrected calculation of 'zvirv'(rh2o/rairv)(Two places: Lines 111,226)

Module gw_drag.F90:

Subroutine gw_intr:

  1. Use variable 'nbot_molec' from diffusion_solver module
  2. Declared local variable 'kvt'(molecular+eddy diffusion)
  3. Calculate 'kvt'
  4. Passing 'kvt' to subroutine 'gw_drag_prof' instead of 'kvh'

Subroutine gw_drag_prof:

  1. Add 'kvt' to call interface
  2. Removed 'ktop_gw' variable and just use 'ktop' TOA for gravity waves

*Subroutine gw_bgnd_beres

  1. Modified calculation of 'Umini' and 'Umaxi'(source level tau calculation loop indices)
    to not exceed number of waves allowed

Module iondrag.F90:

Subroutine iondrag:

  1. Added 'ifdef WACCMX' for 'hi-waccm' changes

Module majorsp_diffusion.F90:

Subroutine mspdiff:

  1. Vertical dimension size of variable 'expzi' changed from 'pver' to 'pverp' since it is on interface levels
  2. 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
  3. 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
  4. Replaced incorrect 'k' index with '1' in 'dzmid' when calculating upper boundary to vertical level in 'rdzmid'
  5. Added assignment of top vertical level values for 'dzmid', 'rzmid', and 'psclht'
  6. 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'
  7. 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:

  1. When calculating 'tint'(interface temperature) at top level, changed 'ntop_molec-1' index to 'ntop_molec+1'
  2. When initializing 'kq_scal'(interface temperature) to zero, changed 'ntop_molec-1' index to 'ntop_molec+1'
  3. 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:

  1. Added H to calculation of 'mbar'(mean mass)

Module mo_tgcm_ubc.F90:
  1. Added 'ifdef WACCMX' for 'hi-waccm' changes

Module mo_waccm_hrates.F90:
  1. Added 'ifdef WACCMX' for 'hi-waccm' changes

Module physics_types.F90:

Subroutine physics_update:

  1. When calculating N2 mixing ratio, include H

Module radheat.F90:
  1. Added 'ifdef WACCMX' for 'hi-waccm' changes

Module te_map.F90:
  1. 'omga_ik' set to zero at top level

Module upper_bc.F90:
  1. Added 'ifdef WACCMX' for 'hi-waccm' changes

Subroutine ubc_get_vals:

  1. If top level is 150km or greater, set NO 'ubc_mmr'(Upper boundary NO mixing ratio) to zero

Module vertical_diffusion.F90:
  1. Added 'ifdef WACCMX' for 'hi-waccm' changes

Subroutine vertical_diffusion_init:

  1. Set 'ntop_eddy' to level closest to pressure 1.E-05 Pascals
  • No labels