Skip to content
Failed

Console Output

Started by an SCM change
Obtained jenkins_tests/clubb_release_diff_test/Jenkinsfile from git https://github.com/larson-group/clubb.git
[Pipeline] Start of Pipeline
[Pipeline] node
Still waiting to schedule task
Waiting for next available executor
Running on Jenkins in /home/jenkins/workspace/clubb_release_diff_test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
The recommended git tool is: git
Cloning the remote Git repository
Cloning repository https://github.com/larson-group/clubb.git
 > git init /home/jenkins/workspace/clubb_release_diff_test # timeout=10
Fetching upstream changes from https://github.com/larson-group/clubb.git
 > git --version # timeout=10
 > git --version # 'git version 2.30.2'
using GIT_ASKPASS to set credentials A token based key used by Jenkins to preform Github actions, created 6/21/2021
 > git fetch --tags --force --progress -- https://github.com/larson-group/clubb.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git config remote.origin.url https://github.com/larson-group/clubb.git # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 59786b03dd4afb944e5e9284a2b207220122dbb9 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 59786b03dd4afb944e5e9284a2b207220122dbb9 # timeout=10
Commit message: "QuadTune: Adds new parameter correlation matrix plot."
 > git rev-list --no-walk a4f7432f4f85c2ec4f9d97d723f9574cc1320623 # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Checkout Clubb and Clubb_Release)
[Pipeline] sh
+ git clone https://github.com/larson-group/clubb.git
Cloning into 'clubb'...
+ git clone https://github.com/larson-group/clubb_release.git
Cloning into 'clubb_release'...
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Diff)
[Pipeline] sh
+ diff --exclude=.git --exclude=version_clubb_core.txt --exclude=version_silhs.txt -r clubb clubb_release
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/input/stats/all_stats.in clubb_release/input/stats/all_stats.in
142c142
< 'gamma_Skw_fnc', 'coef_wp4_implicit', 'C6rt_Skw_fnc', 'C6thl_Skw_fnc', 'C6_term',
---
> 'gamma_Skw_fnc', 'coef_wp4_implicit', 'C6rt_Skw_fnc', 'C6thl_Skw_fnc',
179c179
< 'wpsclrprtp', 'wpsclrpthlp', 'wpedsclrp',  'stability_correction',
---
> 'wpsclrprtp', 'wpsclrpthlp', 'wpedsclrp',  'stability_correction', 'Richardson_num',
181,182c181
< 'bv_freq_sqd', 'bv_freq_sqd_splat', 'bv_freq_sqd_mixed', 'bv_freq_sqd_moist', 'bv_freq_sqd_dry',
< 'shear_sqd', 'invrs_tau_zm', 'invrs_tau_xp2_zm', 'invrs_tau_wp2_zm',
---
> 'bv_freq_sqd', 'bv_freq_sqd_splat', 'shear_sqd', 'invrs_tau_zm', 'invrs_tau_xp2_zm', 'invrs_tau_wp2_zm',
184c183
< 'invrs_tau_sfc', 'invrs_tau_shear', 'Ri_zm',
---
> 'invrs_tau_sfc', 'invrs_tau_shear', 'sqrt_Ri_zm',
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/input/stats/standard_stats.in clubb_release/input/stats/standard_stats.in
136c136
< 'gamma_Skw_fnc', 'coef_wp4_implicit', 'C6rt_Skw_fnc', 'C6thl_Skw_fnc', 'C6_term'
---
> 'gamma_Skw_fnc', 'coef_wp4_implicit', 'C6rt_Skw_fnc', 'C6thl_Skw_fnc',
170,171c170
< 'bv_freq_sqd', 'bv_freq_sqd_splat', 'bv_freq_sqd_mixed', 'bv_freq_sqd_moist', 'bv_freq_sqd_dry',
< 'shear_sqd', 'invrs_tau_zm', 'invrs_tau_xp2_zm', 'invrs_tau_wp2_zm',
---
> 'bv_freq_sqd', 'bv_freq_sqd_splat', 'shear_sqd', 'invrs_tau_zm', 'invrs_tau_xp2_zm', 'invrs_tau_wp2_zm',
173c172
< 'invrs_tau_sfc', 'invrs_tau_shear', 'Ri_zm',
---
> 'invrs_tau_sfc', 'invrs_tau_shear', 'Richardson_num',
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/input/tunable_parameters_Lscale/configurable_model_flags.in clubb_release/input/tunable_parameters_Lscale/configurable_model_flags.in
3,5c3
< ipdf_call_placement          = 2
< penta_solve_method           = 1
< tridiag_solve_method         = 1
---
> ipdf_call_placement          = 1
7,55c5,47
< 
< l_godunov_upwind_wpxp_ta          = .false.,
< l_upwind_xpyp_ta                  = .true.,
< l_godunov_upwind_xpyp_ta          = .false.,
< l_upwind_xm_ma                    = .true.,
< l_quintic_poly_interp             = .false.,
< l_tke_aniso                       = .true.,
< l_vert_avg_closure                = .false.,
< l_standard_term_ta                = .false.,
< l_partial_upwind_wp3              = .false.,
< l_use_cloud_cover                 = .false.,
< l_rcm_supersat_adj                = .true.,
< l_damp_wp3_Skw_squared            = .true.,
< l_min_wp2_from_corr_wx            = .true.,
< l_min_xp2_from_corr_wx            = .true.,
< l_C2_cloud_frac                   = .false.,
< l_predict_upwp_vpwp               = .true.,
< l_diag_Lscale_from_tau            = .false.,
< l_stability_correct_tau_zm        = .false.,
< l_damp_wp2_using_em               = .true.,
< l_use_C7_Richardson               = .true.,
< l_use_precip_frac                 = .true.,
< l_do_expldiff_rtm_thlm            = .false.,
< l_use_C11_Richardson              = .false.,
< l_use_shear_Richardson            = .false.,
< l_prescribed_avg_deltaz           = .false.,
< l_diffuse_rtm_and_thlm            = .false.,
< l_stability_correct_Kh_N2_zm      = .false.,
< l_trapezoidal_rule_zt             = .false.,
< l_trapezoidal_rule_zm             = .false.,
< l_call_pdf_closure_twice          = .false.,
< l_Lscale_plume_centered           = .false.,
< l_brunt_vaisala_freq_moist        = .false.,
< l_use_thvm_in_bv_freq             = .false.,
< l_lmm_stepping                    = .false.,
< l_e3sm_config                     = .false.,
< l_vary_convect_depth              = .false.,
< l_use_tke_in_wp3_pr_turb_term     = .true.,
< l_use_tke_in_wp2_wp3_K_dfsn       = .false.,
< l_use_wp3_lim_with_smth_Heaviside = .false.,
< l_smooth_Heaviside_tau_wpxp       = .false.,
< l_modify_limiters_for_cnvg_test   = .false.,
< l_enable_relaxed_clipping         = .false.,
< l_linearize_pbl_winds             = .false.,
< l_mono_flux_lim_thlm              = .true.,
< l_mono_flux_lim_rtm               = .true.,
< l_mono_flux_lim_um                = .true.,
< l_mono_flux_lim_vm                = .true.,
< l_mono_flux_lim_spikefix          = .true.
---
> l_godunov_upwind_wpxp_ta     = .false.,
> l_upwind_xpyp_ta             = .true.,
> l_godunov_upwind_xpyp_ta     = .false.,
> l_upwind_xm_ma               = .true.,
> l_quintic_poly_interp        = .false.,
> l_tke_aniso                  = .true.,
> l_vert_avg_closure           = .false.,
> l_standard_term_ta           = .false.,
> l_partial_upwind_wp3         = .false.,
> l_use_cloud_cover            = .false.,
> l_rcm_supersat_adj           = .true.,
> l_damp_wp3_Skw_squared       = .true.,
> l_min_wp2_from_corr_wx       = .true.,
> l_min_xp2_from_corr_wx       = .true.,
> l_C2_cloud_frac              = .false.,
> l_predict_upwp_vpwp          = .true.,
> l_diag_Lscale_from_tau       = .false.,
> l_stability_correct_tau_zm   = .false.,
> l_damp_wp2_using_em          = .true.,
> l_use_C7_Richardson          = .true.,
> l_use_precip_frac            = .true.,
> l_do_expldiff_rtm_thlm       = .false.,
> l_use_C11_Richardson         = .false.,
> l_use_shear_Richardson       = .false.,
> l_prescribed_avg_deltaz      = .false.,
> l_diffuse_rtm_and_thlm       = .false.,
> l_stability_correct_Kh_N2_zm = .false.,
> l_trapezoidal_rule_zt        = .false.,
> l_trapezoidal_rule_zm        = .false.,
> l_call_pdf_closure_twice     = .false.,
> l_Lscale_plume_centered      = .false.,
> l_brunt_vaisala_freq_moist   = .false.,
> l_use_thvm_in_bv_freq        = .false.,
> l_lmm_stepping               = .false.,
> l_e3sm_config                = .false.,
> l_vary_convect_depth         = .false.,
> l_use_tke_in_wp3_pr_turb_term = .false.,
> l_use_tke_in_wp2_wp3_K_dfsn  = .false.
> l_mono_flux_lim_thlm         = .true.,
> l_mono_flux_lim_rtm          = .true.,
> l_mono_flux_lim_um           = .true.,
> l_mono_flux_lim_vm           = .true.,
> l_mono_flux_lim_spikefix     = .true.
72,75d63
< /
< 
< &configurable_multi_column_nl
< num_standalone_columns = 1
Only in clubb/postprocessing/pyplotgen/config: VariableGroupBaseBudgetsLumpedBuoy.py
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupBaseBudgets.py clubb_release/postprocessing/pyplotgen/config/VariableGroupBaseBudgets.py
18c18
<                  priority_vars=False, background_rcm=False, background_rcm_folder=None):
---
>                  priority_vars=False):
538,539c538
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupBaseBudgetsSamStyle.py clubb_release/postprocessing/pyplotgen/config/VariableGroupBaseBudgetsSamStyle.py
18c18
<                  priority_vars=False, background_rcm=False, background_rcm_folder=None):
---
>                  priority_vars=False):
376,377c376
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupBase.py clubb_release/postprocessing/pyplotgen/config/VariableGroupBase.py
22,23c22
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
685,686c684
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupCorrelations.py clubb_release/postprocessing/pyplotgen/config/VariableGroupCorrelations.py
16c16
<                  priority_vars=False, background_rcm=False, background_rcm_folder=None):
---
>                  priority_vars=False):
161,162c161
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupIceMP.py clubb_release/postprocessing/pyplotgen/config/VariableGroupIceMP.py
14,15c14,15
<     def __init__(self, case, clubb_datasets=None, sam_benchmark_dataset=None, sam_datasets=None,
<                  coamps_benchmark_dataset=None, wrf_benchmark_dataset=None, 
---
>     def __init__(self, case, clubb_datasets=None, sam_benchmark_dataset=None, sam_datasets=None, coamps_benchmark_dataset=None,
>                   wrf_benchmark_dataset=None, 
17,18c17
<                  e3sm_datasets=None, wrf_datasets=None, priority_vars=False, background_rcm=False,
<                  background_rcm_folder=None):
---
>                  e3sm_datasets=None, wrf_datasets=None, priority_vars=False):
151,152c150
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupKKMP.py clubb_release/postprocessing/pyplotgen/config/VariableGroupKKMP.py
13,14c13,14
<     def __init__(self, case, clubb_datasets=None, sam_benchmark_dataset=None,
<                  coamps_benchmark_dataset=None, r408_dataset=None, wrf_benchmark_dataset=None, 
---
>     def __init__(self, case, clubb_datasets=None, sam_benchmark_dataset=None, coamps_benchmark_dataset=None, r408_dataset=None,
>                  wrf_benchmark_dataset=None, 
16,17c16
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
69,70c68
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupLiquidMP.py clubb_release/postprocessing/pyplotgen/config/VariableGroupLiquidMP.py
16,17c16
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None,priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None,priority_vars=False):
151,152c150
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupNondimMoments.py clubb_release/postprocessing/pyplotgen/config/VariableGroupNondimMoments.py
21,22c21
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
215,216c214
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupNormalizedVariations.py clubb_release/postprocessing/pyplotgen/config/VariableGroupNormalizedVariations.py
17,18c17
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
76,77c75
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupSamBudgets.py clubb_release/postprocessing/pyplotgen/config/VariableGroupSamBudgets.py
18c18
<                  priority_vars=False, background_rcm=False, background_rcm_folder=None):
---
>                  priority_vars=False):
984,985c984
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupSamMultilineProfiles.py clubb_release/postprocessing/pyplotgen/config/VariableGroupSamMultilineProfiles.py
18,19c18
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
451,452c450
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupSamProfiles.py clubb_release/postprocessing/pyplotgen/config/VariableGroupSamProfiles.py
18,19c18
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
1204,1205c1203
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupScalars.py clubb_release/postprocessing/pyplotgen/config/VariableGroupScalars.py
16,17c16
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
81,82c80
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupSubcolumns.py clubb_release/postprocessing/pyplotgen/config/VariableGroupSubcolumns.py
16,17c16
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None,
<                  background_rcm=False, background_rcm_folder=False):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None):
186,187c185
<                          cam_datasets=cam_datasets, sam_datasets=sam_datasets, wrf_datasets=wrf_datasets,
<                          background_rcm=background_rcm, background_rcm_folder=background_rcm_folder)
---
>                          cam_datasets=cam_datasets, sam_datasets=sam_datasets, wrf_datasets=wrf_datasets)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupTaus.py clubb_release/postprocessing/pyplotgen/config/VariableGroupTaus.py
16,17c16
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
37,81d35
<                 'clubb': ['bv_freq_sqd_mixed'],
<                 'sam': [],
<                 'coamps': [],
<                 'r408': ['bv_freq_sqd_mixed'],
<                 'hoc': ['bv_freq_sqd_mixed'],
<                 'e3sm': ['bv_freq_sqd_mixed'],
<                 'cam': ['bv_freq_sqd_mixed'],
<                 'wrf': ['bv_freq_sqd_mixed'],
<                 },
<                 'title': 'Mixed Brunt-Vaisala frequency squared',
<                 'axis_title': 'bv_freq_sqd_mixed [$\mathrm{1/s^2}$]',
<                 'sci_scale': 0,
<             },
<             {'var_names':
<                 {
<                 'clubb': ['bv_freq_sqd_moist'],
<                 'sam': [],
<                 'coamps': [],
<                 'r408': ['bv_freq_sqd_moist'],
<                 'hoc': ['bv_freq_sqd_moist'],
<                 'e3sm': ['bv_freq_sqd_moist'],
<                 'cam': ['bv_freq_sqd_moist'],
<                 'wrf': ['bv_freq_sqd_moist'],
<                 },
<                 'title': 'Brunt-Vaisala frequency squared in moist air',
<                 'axis_title': 'bv_freq_sqd_moist [$\mathrm{1/s^2}$]',
<                 'sci_scale': 0,
<             },
<             {'var_names':
<                 {
<                 'clubb': ['bv_freq_sqd_dry'],
<                 'sam': [],
<                 'coamps': [],
<                 'r408': ['bv_freq_sqd_dry'],
<                 'hoc': ['bv_freq_sqd_dry'],
<                 'e3sm': ['bv_freq_sqd_dry'],
<                 'cam': ['bv_freq_sqd_dry'],
<                 'wrf': ['bv_freq_sqd_dry'],
<                 },
<                 'title': 'Brunt-Vaisala frequency squared in dry air',
<                 'axis_title': 'bv_freq_sqd_dry [$\mathrm{1/s^2}$]',
<                 'sci_scale': 0,
<             },
<             {'var_names':
<                 {
171,239d124
<             {'var_names':
<                 {
<                 'clubb': ['C6_term'],
<                 'sam': ['C6_TERM'], # Dummy
<                 'coamps': ['C6_term'], # Dummy
<                 'r408': ['C6_term'], # Dummy
<                 'hoc': ['C6_term'], # Dummy
<                 'e3sm': ['C6_term'], # Dummy
<                 'cam': ['C6_term'], # Dummy
<                 'wrf': ['C6_term'], # Dummy
<                 },
<              'sci_scale': 0,
<             },
<             {'var_names':
<                 {
<                 'clubb': ['C1_Skw_fnc'],
<                 'sam': ['C1_SKW_FNC'], # Dummy
<                 'coamps': ['C1_Skw_fnc'], # Dummy
<                 'r408': ['C1_Skw_fnc'], # Dummy
<                 'hoc': ['C1_Skw_fnc'], # Dummy
<                 'e3sm': ['C1_Skw_fnc'], # Dummy
<                 'cam': ['C1_Skw_fnc'], # Dummy
<                 'wrf': ['C1_Skw_fnc'], # Dummy
<                 },
<                 'title': 'C1_Skw_fnc',
<                 'sci_scale': 0,
<             },
<             {'var_names':
<                 {
<                 'clubb': ['C6rt_Skw_fnc'],
<                 'sam': ['C6RT_SKW_FNC'], # Dummy
<                 'coamps': ['C6rt_Skw_fnc'], # Dummy
<                 'r408': ['C6rt_Skw_fnc'], # Dummy
<                 'hoc': ['C6rt_Skw_fnc'], # Dummy
<                 'e3sm': ['C6rt_Skw_fnc'], # Dummy
<                 'cam': ['C6rt_Skw_fnc'], # Dummy
<                 'wrf': ['C6rt_Skw_fnc'], # Dummy
<                 },
<                 'title': 'C6rt_Skw_fnc',
<                 'sci_scale': 0,
<             },
<             {'var_names':
<                 {
<                 'clubb': ['C6thl_Skw_fnc'],
<                 'sam': ['C6THL_SKW_FNC'], # Dummy
<                 'coamps': ['C6thl_Skw_fnc'], # Dummy
<                 'r408': ['C6thl_Skw_fnc'], # Dummy
<                 'hoc': ['C6thl_Skw_fnc'], # Dummy
<                 'e3sm': ['C6thl_Skw_fnc'], # Dummy
<                 'cam': ['C6thl_Skw_fnc'], # Dummy
<                 'wrf': ['C6thl_Skw_fnc'], # Dummy
<                 },
<                 'title': 'C6thl_Skw_fnc',
<                 'sci_scale': 0,
<             },
<             {'var_names':
<                 {
<                 'clubb': ['C7_Skw_fnc'],
<                 'sam': ['C7_SKW_FNC'], # Dummy
<                 'coamps': ['C7_Skw_fnc'], # Dummy
<                 'r408': ['C7_Skw_fnc'], # Dummy
<                 'hoc': ['C7_Skw_fnc'], # Dummy
<                 'e3sm': ['C7_Skw_fnc'], # Dummy
<                 'cam': ['C7_Skw_fnc'], # Dummy
<                 'wrf': ['C7_Skw_fnc'], # Dummy
<                 },
<                 'title': 'C7_Skw_fnc',
<                 'sci_scale': 0,
<             },
248,249c133
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/config/VariableGroupWs.py clubb_release/postprocessing/pyplotgen/config/VariableGroupWs.py
16,17c16
<                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False,
<                  background_rcm=False, background_rcm_folder=None):
---
>                  e3sm_datasets=None, sam_datasets=None, wrf_datasets=None, priority_vars=False):
211,212c210
<                          priority_vars=priority_vars, background_rcm=background_rcm,
<                          background_rcm_folder=background_rcm_folder)
---
>                          priority_vars=priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/pyplotgen.py clubb_release/postprocessing/pyplotgen/pyplotgen.py
48,50c48,50
<                  plot_budgets=False, bu_morr=False, lumped_buoy_budgets=False, background_rcm=False, diff=None,
<                  show_alphabetic_id=False, time_height=False, animation=None, samstyle=False, disable_multithreading=False,
<                  pdf=False, pdf_filesize_limit=None, plot_subcolumns=False, image_extension=".png"):
---
>                  plot_budgets=False, bu_morr=False, diff=None, show_alphabetic_id=False,
>                  time_height=False, animation=None, samstyle=False, disable_multithreading=False, pdf=False,
>                  pdf_filesize_limit=None, plot_subcolumns=False, image_extension=".png"):
88,89d87
<         :param lumped_buoy_budgets: Lump together wpxp_bp and wpxp_pr3 terms in CLUBB's budgets
<         :param background_rcm: Show a height-based "contour" plot of time-averaged rcm behind CLUBB profiles.
114,115d111
<         self.lumped_buoy_budgets = lumped_buoy_budgets
<         self.background_rcm = background_rcm
422,424c418,420
<                                                   plot_subcolumns=self.plot_subcolumns, lumped_buoy_budgets=self.lumped_buoy_budgets,
<                                                   background_rcm=self.background_rcm, image_extension=self.image_extension,
<                                                   total_panels_to_plot=0, priority_vars=self.priority_vars)
---
>                                                   plot_subcolumns=self.plot_subcolumns,
>                                                   image_extension=self.image_extension, total_panels_to_plot=0,
>                                                   priority_vars=self.priority_vars)
646,649d641
<     parser.add_argument("--lumped-buoy-budgets", help="Lump together wpxp_bp and wpxp_pr3 terms in CLUBB's budgets.",
<                         action="store_true")
<     parser.add_argument("--background-rcm", help="Show a height-based 'contour' plot of time-averaged rcm behind CLUBB profiles.",
<                         action="store_true")
803,806c795,798
<                           no_legends=args.no_legends, plot_budgets=args.plot_budgets, bu_morr=args.bu_morr,
<                           lumped_buoy_budgets=args.lumped_buoy_budgets, background_rcm=args.background_rcm, diff=args.diff,
<                           show_alphabetic_id=args.show_alphabetic_id, time_height=args.time_height_plots, animation=args.movies,
<                           samstyle=args.sam_style_budgets, disable_multithreading=args.disable_multithreading, pdf=args.pdf,
---
>                           no_legends=args.no_legends, plot_budgets=args.plot_budgets,
>                           bu_morr=args.bu_morr, diff=args.diff, show_alphabetic_id=args.show_alphabetic_id,
>                           time_height=args.time_height_plots, animation=args.movies, samstyle=args.sam_style_budgets,
>                           disable_multithreading=args.disable_multithreading, pdf=args.pdf,
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/README.md clubb_release/postprocessing/pyplotgen/README.md
52,53d51
< | --lumped-buoy-budgets | Lump together wpxp_bp and wpxp_pr3 terms in CLUBB's budgets |
< | --background_rcm | Show a height-based "contour" plot of time-averaged rcm behind CLUBB profiles |
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/src/CaseGallerySetup.py clubb_release/postprocessing/pyplotgen/src/CaseGallerySetup.py
11d10
< from config.VariableGroupBaseBudgetsLumpedBuoy import VariableGroupBaseBudgetsLumpedBuoy
33,35c32,34
<                  plot_les=False, plot_budgets=False, lumped_buoy_budgets=False, background_rcm=False, plot_r408=False,
<                  plot_hoc=False, e3sm_folders=[], cam_folders=[], time_height=False, animation=None, samstyle=False,
<                  plot_subcolumns=False, image_extension=".png", total_panels_to_plot=0, priority_vars=False):
---
>                  plot_les=False, plot_budgets=False, plot_r408=False, plot_hoc=False, e3sm_folders=[], cam_folders=[],
>                  time_height=False, animation=None, samstyle=False, plot_subcolumns=False, image_extension=".png",
>                  total_panels_to_plot=0, priority_vars=False):
49,50d47
<         :param lumped_buoy_budgets: If True and if plot_budgets in true, wpxp_bp and wpxp_pr3 will be lumped into one budget term
<         :param background_rcm: Show a height-based "contour" plot of time-averaged rcm behind CLUBB profiles.
69,70d65
<         self.lumped_buoy_budgets = lumped_buoy_budgets
<         self.background_rcm = background_rcm
98d92
<             self.lumped_buoy_budgets = False
117,122d110
<         # Preserve the CLUBB folder listed first to use for background rcm plots.
<         if len(clubb_folders) != 0:
<             self.background_rcm_folder = clubb_folders[0]
<         else:
<             self.background_rcm_folder = None
< 
172,177c160,161
<                             if not self.lumped_buoy_budgets:
<                                 budget_variables = VariableGroupBaseBudgets(self, priority_vars=self.priority_vars,
<                                                              clubb_datasets={folder_name:self.clubb_datasets[input_folder]})
<                             else:
<                                 budget_variables = VariableGroupBaseBudgetsLumpedBuoy(self, priority_vars=self.priority_vars,
<                                                              clubb_datasets={folder_name:self.clubb_datasets[input_folder]})
---
>                             budget_variables = VariableGroupBaseBudgets(self, priority_vars=self.priority_vars,
>                                                          clubb_datasets={folder_name:self.clubb_datasets[input_folder]})
250,251c234
<                                   e3sm_datasets=self.e3sm_datasets, cam_datasets=self.cam_file, priority_vars=self.priority_vars,
<                                   background_rcm=self.background_rcm, background_rcm_folder=self.background_rcm_folder)
---
>                                   e3sm_datasets=self.e3sm_datasets, cam_datasets=self.cam_file, priority_vars=self.priority_vars)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/src/Panel.py clubb_release/postprocessing/pyplotgen/src/Panel.py
34,36c34,35
<     def __init__(self, plots, bkgrnd_rcm_tavg, altitude_bkgrnd_rcm, start_alt_idx, end_alt_idx,
<                  panel_type="profile", title="Unnamed panel", dependent_title="dependent variable", sci_scale = None,
<                  centered = False, background_rcm = False):
---
>     def __init__(self, plots, panel_type="profile", title="Unnamed panel", dependent_title="dependent variable",
>                  sci_scale = None, centered = False):
41,44d39
<         :param bkgrnd_rcm_tavg: Time-average vertical profile of rcm that can be displayed in the background of plots.
<         :param altitude_bkgrnd_rcm: Heights corresponding with the background rcm profile.
<         :param start_alt_idx: Index of bkgrnd_rcm_tavg that corresponds with bottom of the plot.
<         :param end_alt_idx: Index of bkgrnd_rcm_tavg that corresponds with top of the plot.
52d46
<         :param background_rcm: Show a height-based "contour" plot of time-averaged rcm behind CLUBB profiles.
56,59d49
<         self.bkgrnd_rcm_tavg = bkgrnd_rcm_tavg
<         self.altitude_bkgrnd_rcm = altitude_bkgrnd_rcm
<         self.start_alt_idx = start_alt_idx
<         self.end_alt_idx = end_alt_idx
67d56
<         self.background_rcm = background_rcm
236,239c225
<             if not self.background_rcm:
<                 ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
<             else:
<                 ax.legend(loc='upper right', bbox_to_anchor=(1, 1))
---
>             ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
253,270d238
< 
<         # Background rcm contour plot
<         if self.background_rcm:
<             num_points = self.end_alt_idx - self.start_alt_idx + 1
<             bkgrnd_rcm_tavg_contours = np.eye( num_points )
<             for i in range(num_points):
<                 for j in range(num_points):
<                     bkgrnd_rcm_tavg_contours[i,j] = self.bkgrnd_rcm_tavg[self.start_alt_idx+i]
<             min_value = min( self.bkgrnd_rcm_tavg )
<             max_value = max( self.bkgrnd_rcm_tavg )
<             x_vector_contour = np.zeros( num_points )
<             x_diff = xlim[1] - xlim[0]
<             x_interval = x_diff / ( num_points - 1 )
<             for k in range(num_points):
<                 x_vector_contour[k] = xlim[0] + float(k) * x_interval
<             plt.contourf( x_vector_contour, self.altitude_bkgrnd_rcm[self.start_alt_idx:self.end_alt_idx+1], bkgrnd_rcm_tavg_contours,
<                           vmin=min_value, vmax=2.0*max_value, cmap=plt.set_cmap("gist_yarg") )
<             plt.colorbar( label="rcm [kg/kg]", orientation="vertical" )
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/postprocessing/pyplotgen/src/VariableGroup.py clubb_release/postprocessing/pyplotgen/src/VariableGroup.py
39c39
<                  priority_vars=False, background_rcm=False, background_rcm_folder=None):
---
>                  priority_vars=False):
55,56d54
<         :param background_rcm: Show a height-based "contour" plot of time-averaged rcm behind CLUBB profiles.
<         :param background_rcm_folder: Folder of CLUBB output data from which to pull the background rcm (if background_rcm is enabled).
80,81d77
<         self.background_rcm = background_rcm
<         self.background_rcm_folder = background_rcm_folder
98,137d93
<         if self.background_rcm:
<             if self.clubb_datasets is not None and len(self.clubb_datasets) != 0:
<                 # Extract rcm from the zt NetCDF file. Also extract the time and height values to which the
<                 # rcm data points correspond.
<                 bkgrnd_rcm = np.squeeze( self.clubb_datasets[self.background_rcm_folder]['zt'].variables['rcm'] )
<                 self.altitude_bkgrnd_rcm = np.squeeze( self.clubb_datasets[self.background_rcm_folder]['zt'].variables['altitude'] )
<                 time_bkgrnd_rcm = np.squeeze( self.clubb_datasets[self.background_rcm_folder]['zt'].variables['time'] )
<                 # Find the indices in the rcm data that correspond to the start time and end time requested as the
<                 # time-averaging interval for the case, as well as the minimum height and maximum height requested
<                 # for the plots.
<                 start_time_seconds = 60.0 * self.start_time # self.start_time is in minutes, while time_bkgrnd_rcm is in seconds.
<                 end_time_seconds = 60.0 * self.end_time # self.end_time is in minutes, while time_bkgrnd_rcm is in seconds.
<                 start_time_idx, end_time_idx = DataReader.__getStartEndIndex__(time_bkgrnd_rcm, start_time_seconds, end_time_seconds)
<                 self.start_alt_idx, self.end_alt_idx = DataReader.__getStartEndIndex__(self.altitude_bkgrnd_rcm, self.height_min_value, self.height_max_value)
<                 # Calculate the time-averaged vertical profile of rcm for use as contours in the background of plots
<                 # of CLUBB time-averaged vertical profiles of various model fields.
<                 nzt = np.shape(bkgrnd_rcm)[1]
<                 self.bkgrnd_rcm_tavg = np.zeros(nzt)
<                 for z_indx in range(nzt):
<                     lev_sum = 0
<                     count = 0
<                     for t_indx in range(start_time_idx, end_time_idx):
<                         lev_sum = lev_sum + bkgrnd_rcm[t_indx,z_indx]
<                         count = count + 1
<                     self.bkgrnd_rcm_tavg[z_indx] = lev_sum / float(count)
<             else:
<                 # Set the relevant "output" variables to a value just to have them set.
<                 # They will be flagged out of interacting with the code.
<                 self.bkgrnd_rcm_tavg = 0
<                 self.altitude_bkgrnd_rcm = 0
<                 self.start_alt_idx = 0
<                 self.end_alt_idx = 0
<         else:
<             # Set the relevant "output" variables to a value just to have them set.
<             # They will be flagged out of interacting with the code.
<             self.bkgrnd_rcm_tavg = 0
<             self.altitude_bkgrnd_rcm = 0
<             self.start_alt_idx = 0
<             self.end_alt_idx = 0
< 
438,440c394,395
<                     panel = Panel(plotset, self.bkgrnd_rcm_tavg, self.altitude_bkgrnd_rcm, self.start_alt_idx, self.end_alt_idx,
<                                   title=title, dependent_title=axis_label, panel_type=panel_type, sci_scale=sci_scale,
<                                   centered=centered, background_rcm=self.background_rcm)
---
>                     panel = Panel(plotset, title=title, dependent_title=axis_label, panel_type=panel_type,
>                                   sci_scale=sci_scale, centered=centered)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/src/CLUBB_core/advance_clubb_core_module.F90 clubb_release/src/CLUBB_core/advance_clubb_core_module.F90
365,368c365
<         ibrunt_vaisala_freq_sqd_mixed, &
<         ibrunt_vaisala_freq_sqd_moist, &
<         ibrunt_vaisala_freq_sqd_dry, &
<         iRi_zm
---
>         isqrt_Ri_zm
817,820c814,817
<        brunt_vaisala_freq_sqd_mixed, & ! A mixture of dry and moist N^2               [s^-2]
<        brunt_vaisala_freq_sqd_dry,   & ! dry N^2                                      [s^-2]
<        brunt_vaisala_freq_sqd_moist, & ! moist N^2                                    [s^-2]
<        brunt_vaisala_freq_sqd_splat, & !                                              [s^-2]
---
>        brunt_vaisala_freq_sqd_mixed, & ! A mixture of dry and moist N^2
>        brunt_vaisala_freq_sqd_dry,   & ! dry N^2
>        brunt_vaisala_freq_sqd_moist, & ! moist N^2
>        brunt_vaisala_freq_sqd_splat, &
822c819
<        Ri_zm                           ! Richardson number                            [-]
---
>        sqrt_Ri_zm                      ! square root of Richardson number
989,990c986,987
<     !$acc              brunt_vaisala_freq_sqd_splat, &
<     !$acc              brunt_vaisala_freq_sqd_zt, Ri_zm, Lscale_max, &
---
>     !$acc              brunt_vaisala_freq_sqd_plus, brunt_vaisala_freq_sqd_splat, &
>     !$acc              brunt_vaisala_freq_sqd_zt, sqrt_Ri_zm, Lscale_max, &
1555d1551
<           invrs_tau_wp3_zm(i,k)  = invrs_tau_zm(i,k)
1594c1590
<                         Ri_zm,                                                    & ! Out
---
>                         sqrt_Ri_zm,                                               & ! Out
1833c1829
<       !$acc              Ri_zm, invrs_tau_wp3_zm, invrs_tau_no_N2_zm, invrs_tau_bkgnd, &
---
>       !$acc              sqrt_Ri_zm, invrs_tau_wp3_zm, invrs_tau_no_N2_zm, invrs_tau_bkgnd, &
1835,1836c1831
<       !$acc              brunt_vaisala_freq_sqd_splat, brunt_vaisala_freq_sqd_mixed, &
<       !$acc              brunt_vaisala_freq_sqd_moist, brunt_vaisala_freq_sqd_dry )
---
>       !$acc              brunt_vaisala_freq_sqd_splat )
1848c1843
<         call stat_update_var(iRi_zm, Ri_zm(i,:), & ! intent(in)
---
>         call stat_update_var(isqrt_Ri_zm, sqrt_Ri_zm(i,:), & ! intent(in)
1861a1857,1858
>           call stat_update_var(ibrunt_vaisala_freq_sqd, brunt_vaisala_freq_sqd(i,:), & ! intent(in)
>                                stats_zm(i))                                          ! intent(inout)
1863,1864d1859
<         call stat_update_var(ibrunt_vaisala_freq_sqd, brunt_vaisala_freq_sqd(i,:), & ! intent(in)
<                              stats_zm(i))
1866,1872c1861
<                              stats_zm(i))                                       ! intent(inout)
<         call stat_update_var(ibrunt_vaisala_freq_sqd_mixed, brunt_vaisala_freq_sqd_mixed(i,:), & ! intent(in)
<                              stats_zm(i))                                          ! intent(inout)
<         call stat_update_var(ibrunt_vaisala_freq_sqd_moist, brunt_vaisala_freq_sqd_moist(i,:), & ! intent(in)
<                              stats_zm(i))                                          ! intent(inout)
<         call stat_update_var(ibrunt_vaisala_freq_sqd_dry, brunt_vaisala_freq_sqd_dry(i,:), & ! intent(in)
<                              stats_zm(i))                                          ! intent(inout)
---
>                                stats_zm(i))
2913,2914c2902,2903
<     !$acc                   brunt_vaisala_freq_sqd_splat, &
<     !$acc                   brunt_vaisala_freq_sqd_zt, Ri_zm, Lscale_max, &
---
>     !$acc                   brunt_vaisala_freq_sqd_plus, brunt_vaisala_freq_sqd_splat, &
>     !$acc                   brunt_vaisala_freq_sqd_zt, sqrt_Ri_zm, Lscale_max, &
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/src/CLUBB_core/advance_helper_module.F90 clubb_release/src/CLUBB_core/advance_helper_module.F90
335c335
<     !$acc                   lambda0_stability, Lscale_zm )
---
>     !$acc                   brunt_vaisala_freq_sqd_plus, lambda0_stability, Lscale_zm )
601c601,602
<         ishear_sqd, &           ! Variable(s)
---
>         iRichardson_num, &    ! Variable(s)
>         ishear_sqd, &
617c618
<       l_Cx_fnc_Richardson_vert_avg = .false.    ! Vertically average Cx_fnc_Richardson over a
---
>       l_Cx_fnc_Richardson_vert_avg = .false., & ! Vertically average Cx_fnc_Richardson over a
618a620,623
>       l_Richardson_vert_avg = .false.,        & ! Vertically average Richardson_num over a
>                                                 !  distance of Lscale
>       l_use_shear_turb_freq_sqd = .false.       ! Use turb_freq_sqd and shear_sqd in denominator of
>                                                 !  Richardson_num
676a682
>       Richardson_num, &
683a690
>       turb_freq_sqd, &
685a693
>       Richardson_num_clipped, &
706,708c714,716
<     !$acc                    Cx_fnc_interp, &
<     !$acc                    Ri_zm, ddzt_um, ddzt_vm, shear_sqd, Lscale_zm, &
<     !$acc                    Cx_fnc_Richardson_avg, fnc_Richardson, &
---
>     !$acc                    Richardson_num, Cx_fnc_interp, &
>     !$acc                    Ri_zm, ddzt_um, ddzt_vm, shear_sqd, turb_freq_sqd, Lscale_zm, &
>     !$acc                    Richardson_num_clipped, Cx_fnc_Richardson_avg, fnc_Richardson, &
710a719,723
>     if ( l_modify_limiters_for_cnvg_test .and. l_use_shear_turb_freq_sqd ) then
>       error stop "ERROR: l_modify_limiters_for_cnvg_test .and. l_use_shear_turb_freq_sqd "// &
>                  "both true in compute_Cx_fnc_Richardson"
>     end if
> 
744,752c757
<     if ( l_stats_samp ) then
<       !$acc update host(shear_sqd)
<       do i = 1, ngrdcol
<         call stat_update_var( ishear_sqd, shear_sqd(i,:), & ! intent(in)
<                               stats_zm(i) )               ! intent(inout)
<       end do
<     end if
< 
<     if ( l_use_shear_Richardson ) then
---
>     if ( l_use_shear_turb_freq_sqd ) then
757,758c762,764
<           Ri_zm(i,k) = max( 1.0e-7_core_rknd, brunt_vaisala_freq_sqd_mixed(i,k) ) &
<                        / max( shear_sqd(i,k), 1.0e-7_core_rknd )
---
>           turb_freq_sqd(i,k) = em(i,k) / Lscale_zm(i,k)**2
>           Richardson_num(i,k) = brunt_vaisala_freq_sqd(i,k) / max( shear_sqd(i,k), turb_freq_sqd(i,k), &
>                                                                    Richardson_num_divisor_threshold )
762a769,776
>       if ( l_stats_samp ) then
>         !$acc update host(shear_sqd)
>         do i = 1, ngrdcol
>           call stat_update_var( ishear_sqd, shear_sqd(i,:), & ! intent(in)
>                                 stats_zm(i) )               ! intent(inout)
>         end do
>       end if
>       
763a778,807
> 
>       if ( l_use_shear_Richardson ) then
> 
>         !$acc parallel loop gang vector collapse(2) default(present)
>         do k = 1, nz
>           do i = 1, ngrdcol
>             Richardson_num(i,k) = brunt_vaisala_freq_sqd_mixed(i,k) * invrs_num_div_thresh
> 
>             Ri_zm(i,k) = max( 1.0e-7_core_rknd, brunt_vaisala_freq_sqd_mixed(i,k) ) &
>                          / max( shear_sqd(i,k), 1.0e-7_core_rknd )
>           end do
>         end do
>         !$acc end parallel loop
> 
>       else
>         !$acc parallel loop gang vector collapse(2) default(present)
>         do k = 1, nz
>           do i = 1, ngrdcol
>             Richardson_num(i,k) = brunt_vaisala_freq_sqd(i,k) * invrs_num_div_thresh
>             Ri_zm(i,k) = Richardson_num(i,k)
>           end do
>         end do
>         !$acc end parallel loop
>       endif
> 
>     end if
> 
>     if ( l_Richardson_vert_avg ) then
> 
>       ! Clip below-min values of Richardson_num
767c811
<           Ri_zm(i,k) = brunt_vaisala_freq_sqd(i,k) * invrs_num_div_thresh
---
>           Richardson_num_clipped(i,k) = max( Richardson_num(i,k), Richardson_num_min )
770a815,818
> 
>       Richardson_num = Lscale_width_vert_avg( nz, ngrdcol, gr, smth_type, &
>                                               Richardson_num, Lscale_zm, rho_ds_zm, &
>                                               Richardson_num_max )
840a889,897
>     ! Stats sampling
>     if ( l_stats_samp ) then
>       !$acc update host(Richardson_num)
>       do i = 1, ngrdcol
>         call stat_update_var( iRichardson_num, Richardson_num(i,:), & ! intent(in)
>                               stats_zm(i) )                      ! intent(inout)
>       end do
>     end if
> 
843,845c900,902
<     !$acc                   Cx_fnc_interp, Ri_zm, &
<     !$acc                   ddzt_um, ddzt_vm, shear_sqd, Lscale_zm, &
<     !$acc                   Cx_fnc_Richardson_avg, fnc_Richardson, &
---
>     !$acc                   brunt_vaisala_freq_sqd_plus, Richardson_num, Cx_fnc_interp, &
>     !$acc                   Ri_zm, ddzt_um, ddzt_vm, shear_sqd, turb_freq_sqd, Lscale_zm, &
>     !$acc                   Richardson_num_clipped, Cx_fnc_Richardson_avg, fnc_Richardson, &
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/src/CLUBB_core/mixing_length.F90 clubb_release/src/CLUBB_core/mixing_length.F90
1258c1258
<                         Ri_zm, & ! intent out
---
>                         sqrt_Ri_zm, & ! intent out
1369c1369
<     ! (reduce threshold on limiters for Ri_zm in mixing_length.F90)
---
>     ! (reduce threshold on limiters for sqrt_Ri_zm in mixing_length.F90)
1379c1379
<       Ri_zm,                        &
---
>       sqrt_Ri_zm,                   &
1444,1445c1444,1445
<       Ri_zm_clipped, &
<       Ri_zm_smooth, &
---
>       sqrt_Ri_zm_clipped, &
>       sqrt_Ri_zm_smooth, &
1465,1466c1465,1466
<     !$acc            create( Ri_zm_clipped, ddzt_umvm_clipped, &
<     !$acc                    tau_zm_unclipped, tau_zt_unclipped, Ri_zm_smooth, em_clipped, &
---
>     !$acc            create( sqrt_Ri_zm_clipped, ddzt_umvm_clipped, &
>     !$acc                    tau_zm_unclipped, tau_zt_unclipped, sqrt_Ri_zm_smooth, em_clipped, &
1586c1586
<       brunt_vaisala_freq_sqd_smth = zm2zt2zm( nz,ngrdcol,gr, brunt_vaisala_freq_sqd_mixed )
---
>       brunt_vaisala_freq_sqd_smth = zm2zt2zm( nz,ngrdcol,gr, brunt_vaisala_freq_sqd )
1595c1595
<             tmp_calc(i,k) = 1.e8_core_rknd * abs(brunt_vaisala_freq_sqd_mixed(i,k))**3
---
>             tmp_calc(i,k) = 1.e8_core_rknd * abs(brunt_vaisala_freq_sqd(i,k))**3
1601c1601
<                                                  brunt_vaisala_freq_sqd_mixed, &
---
>                                                  brunt_vaisala_freq_sqd, &
1612,1613c1612,1613
<             brunt_vaisala_freq_clipped(i,k) = min( brunt_vaisala_freq_sqd_mixed(i,k), &
<                                                    1.e8_core_rknd * abs(brunt_vaisala_freq_sqd_mixed(i,k))**3)
---
>             brunt_vaisala_freq_clipped(i,k) = min( brunt_vaisala_freq_sqd(i,k), &
>                                                    1.e8_core_rknd * abs(brunt_vaisala_freq_sqd(i,k))**3)
1629,1630c1629,1630
<           Ri_zm_clipped(i,k) = max( 0.0_core_rknd, brunt_vaisala_freq_sqd_smth(i,k) ) &
<                                   / max( ddzt_umvm(i,k), 1.0e-12_core_rknd )
---
>           sqrt_Ri_zm_clipped(i,k) = sqrt( max( 0.0_core_rknd, brunt_vaisala_freq_sqd_smth(i,k) ) &
>                                 / max( ddzt_umvm(i,k), 1.0e-12_core_rknd) )
1635c1635
<       Ri_zm = zm2zt2zm( nz, ngrdcol, gr, Ri_zm_clipped )
---
>       sqrt_Ri_zm = zm2zt2zm( nz, ngrdcol, gr, sqrt_Ri_zm_clipped )
1650c1650
<             Ri_zm(i,k) = brunt_vaisala_freq_clipped(i,k) / ddzt_umvm_clipped(i,k)
---
>             sqrt_Ri_zm(i,k) = sqrt( brunt_vaisala_freq_clipped(i,k) / ddzt_umvm_clipped(i,k)   )
1660,1661c1660,1661
<             Ri_zm(i,k) = max( 1.0e-7_core_rknd, brunt_vaisala_freq_sqd_smth(i,k) ) &
<                             / max( ddzt_umvm(i,k), 1.0e-7_core_rknd )
---
>             sqrt_Ri_zm(i,k) = sqrt( max( 1.0e-7_core_rknd, brunt_vaisala_freq_sqd_smth(i,k) ) &
>                                     / max( ddzt_umvm(i,k), 1.0e-7_core_rknd) )
1844c1844
<           invrs_tau_xp2_zm(i,k) = invrs_tau_bkgnd(i,k) + invrs_tau_sfc(i,k) &
---
>           invrs_tau_xp2_zm(i,k) = 0.1_core_rknd * invrs_tau_bkgnd(i,k) + invrs_tau_sfc(i,k) &
1852,1861c1852,1861
< !      !$acc parallel loop gang vector collapse(2) default(present)
< !      do k = 1, nz
< !        do i = 1, ngrdcol
< !          if ( ice_supersat_frac_zm(i,k) <= 0.01_core_rknd &
< !               .and. invrs_tau_xp2_zm(i,k)  >= 0.003_core_rknd ) then
< !            invrs_tau_xp2_zm(i,k) = 0.003_core_rknd
< !          end if
< !        end do
< !      end do
< !      !$acc end parallel loop
---
>       !$acc parallel loop gang vector collapse(2) default(present)
>       do k = 1, nz
>         do i = 1, ngrdcol
>           if ( ice_supersat_frac_zm(i,k) <= 0.01_core_rknd &
>                .and. invrs_tau_xp2_zm(i,k)  >= 0.003_core_rknd ) then
>             invrs_tau_xp2_zm(i,k) = 0.003_core_rknd
>           end if
>         end do
>       end do
>       !$acc end parallel loop
1903,1904c1903,1904
<       Ri_zm_clipped = smooth_max( nz, ngrdcol, Ri_zm, zero, &
<                                   12.0_core_rknd * min_max_smth_mag )
---
>       sqrt_Ri_zm_clipped = smooth_max( nz, ngrdcol, sqrt_Ri_zm, zero, &
>                                        12.0_core_rknd * min_max_smth_mag )
1906,1907c1906,1907
<       Ri_zm_smooth = smooth_min( nz, ngrdcol, Ri_zm_clipped, 12.0_core_rknd, &
<                                  12.0_core_rknd * min_max_smth_mag )
---
>       sqrt_Ri_zm_smooth = smooth_min( nz, ngrdcol, sqrt_Ri_zm_clipped, 12.0_core_rknd, &
>                                       12.0_core_rknd * min_max_smth_mag )
1916c1916
<                                                 * C_invrs_tau_wpxp_Ri * sqrt ( Ri_zm_smooth(i,k) ))
---
>                                                 * C_invrs_tau_wpxp_Ri * sqrt_Ri_zm_smooth(i,k) )
1932c1932
<                                       * min( max( sqrt( Ri_zm(i,k) ), zero), 12.0_core_rknd ) )
---
>                                       * min( max( sqrt_Ri_zm(i,k), zero), 12.0_core_rknd ) )
2042,2043c2042,2043
<     !$acc           delete( Ri_zm_clipped, ddzt_umvm_clipped, &
<     !$acc                   tau_zm_unclipped, tau_zt_unclipped, Ri_zm_smooth, em_clipped, &
---
>     !$acc           delete( sqrt_Ri_zm_clipped, ddzt_umvm_clipped, &
>     !$acc                   tau_zm_unclipped, tau_zt_unclipped, sqrt_Ri_zm_smooth, em_clipped, &
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/src/CLUBB_core/model_flags.F90 clubb_release/src/CLUBB_core/model_flags.F90
604c604
<     l_use_tke_in_wp3_pr_turb_term = .true.
---
>     l_use_tke_in_wp3_pr_turb_term = .false.
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/src/CLUBB_core/stats_variables.F90 clubb_release/src/CLUBB_core/stats_variables.F90
1089,1092c1089,1090
<     ibrunt_vaisala_freq_sqd_mixed = 0, &
<     ibrunt_vaisala_freq_sqd_moist = 0, &
<     ibrunt_vaisala_freq_sqd_dry = 0, &
<     iRi_zm = 0,          &
---
>     isqrt_Ri_zm = 0, &
>     iRichardson_num = 0, &
1097c1095
< !$omp   threadprivate(iC7_Skw_fnc, iC1_Skw_fnc, iRi_zm)
---
> !$omp   threadprivate(iC7_Skw_fnc, iC1_Skw_fnc, isqrt_Ri_zm)
1099,1100c1097
< !$omp   threadprivate(ibrunt_vaisala_freq_sqd_mixed, ibrunt_vaisala_freq_sqd_moist)
< !$omp   threadprivate(ibrunt_vaisala_freq_sqd_dry, ishear_sqd)
---
> !$omp   threadprivate(iRichardson_num, ishear_sqd)
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/src/CLUBB_core/stats_zm_module.F90 clubb_release/src/CLUBB_core/stats_zm_module.F90
52c52
<         iRi_zm, &
---
>         isqrt_Ri_zm, &
323,325c323
<         ibrunt_vaisala_freq_sqd_mixed, &
<         ibrunt_vaisala_freq_sqd_moist, &
<         ibrunt_vaisala_freq_sqd_dry, &
---
>         iRichardson_num, &
2514,2534c2512,2515
<       case ( 'bv_freq_sqd_mixed' )
<         ibrunt_vaisala_freq_sqd_mixed = k
<         call stat_assign( var_index=ibrunt_vaisala_freq_sqd_mixed, var_name="bv_freq_sqd_mixed", &
<              var_description="Interpolated Brunt-Vaisala freq. squared between moist and dry air", &
<              var_units="1/s^2", &
<              l_silhs=.false., grid_kind=stats_zm )
<         k = k + 1
< 
<       case ( 'bv_freq_sqd_moist' )
<         ibrunt_vaisala_freq_sqd_moist = k
<         call stat_assign( var_index=ibrunt_vaisala_freq_sqd_moist, var_name="bv_freq_sqd_moist", &
<              var_description="Brunt-Vaisala freq. squared in moist air", &
<              var_units="1/s^2", &
<              l_silhs=.false., grid_kind=stats_zm )
<         k = k + 1
< 
<       case ( 'bv_freq_sqd_dry' )
<         ibrunt_vaisala_freq_sqd_dry = k
<         call stat_assign( var_index=ibrunt_vaisala_freq_sqd_dry, var_name="bv_freq_sqd_dry", &
<              var_description="Brunt-Vaisala freq. squared in dry air", &
<              var_units="1/s^2", &
---
>       case ( 'sqrt_Ri_zm' )
>         isqrt_Ri_zm = k
>         call stat_assign( var_index=isqrt_Ri_zm,var_name="sqrt_Ri_zm", &
>              var_description="Richardson number [-]", var_units="-", &
2538,2541c2519,2522
<       case ( 'Ri_zm' )
<         iRi_zm = k
<         call stat_assign( var_index=iRi_zm,var_name="Ri_zm", &
<              var_description="Richardson number [-]", var_units="-", &
---
>       case ( 'Richardson_num' )
>         iRichardson_num = k
>         call stat_assign( var_index=iRichardson_num, var_name="Richardson_num", &
>              var_description="Richardson_num, Richardson number", var_units="-", &
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/src/error.F90 clubb_release/src/error.F90
111c111
<   character(len=20), dimension(:), allocatable, private ::  &
---
>   character(len=10), dimension(:), allocatable, private ::  &
290c290
<     character(len=20), dimension(max_variables) :: &
---
>     character(len=10), dimension(max_variables) :: &
376c376
<       t_variables(1:max_variables)  = "                    "
---
>       t_variables(1:max_variables)  = "          "
423c423
<         if (t_variables(i) == "                    ") exit
---
>         if (t_variables(i) == "          ") exit
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/utilities/sens_matrix/sens_matrix_dashboard.py clubb_release/utilities/sens_matrix/sens_matrix_dashboard.py
11,14c11,14
<     from dash import dcc
<     #import dash_core_components as dcc
<     from dash import html
<     #import dash_html_components as html
---
>     #from dash import dcc
>     import dash_core_components as dcc
>     #from dash import html
>     import dash_html_components as html
71,72d70
<     #print("metricsNames=", metricsNames)
<     #print("obsMetricValsCol=", obsMetricValsCol)
112,113c110
<     # defaultBiasesCol + prescribedBiasesCol = -fwdFnc_tuned_params  (see objFnc).
<     # This lumps the prescribed-parameter adjustment into defaultBiasesCol
---
>     # defaultBiasesCol + prescribedBiasesCol = -fwdFnc_tuned_params  (see objFnc)
143,144d139
<     normlzdWeightedLinplusSensMatrixPoly = np.diag(np.transpose(metricsWeights)[0]) @ normlzdLinplusSensMatrixPoly
< 
231c226
<     #    For use in figures such as paramsErrorBarsFig.
---
>     #    For use in figures such as paramsBarChart.
244a240,250
> 
>     # Set up a column vector of metric values from the default simulation
>     defaultMetricValsCol = setupDefaultMetricValsCol(metricsNames, defaultNcFilename)
> 
>     # Set up a column vector of metric values from the global simulation based on optimized
>     #     parameter values.
>     linSolnMetricValsCol = setupDefaultMetricValsCol(metricsNames, linSolnNcFilename)
> 
>     # Store biases in default simulation, ( global_model - default )
>     linSolnBiasesCol = np.subtract(linSolnMetricValsCol, defaultMetricValsCol)
> 
248d253
<     normlzdWeightedDefaultBiasesCol = metricsWeights * normlzdDefaultBiasesCol
273,299d277
<     # Set up a column vector of metric values from the global simulation based on optimized
<     #     parameter values.
<     linSolnMetricValsCol = setupDefaultMetricValsCol(metricsNames, linSolnNcFilename)
< 
<     # Store biases in default simulation, ( global_model - obs )
<     linSolnBiasesCol = np.subtract(linSolnMetricValsCol, obsMetricValsCol)
<     #linSolnBiasesCol = linSolnBiasesCol + prescribedBiasesCol
< 
<     # Check whether the minimizer actually reduces chisqd
<     # Initial value of chisqd, which assumes parameter perturbations are zero
<     normlzdLinSolnBiasesCol = linSolnBiasesCol/np.abs(normMetricValsCol)
<     chisqdLinSolnMin = objFnc(np.zeros_like(defaultParamValsOrigRow), \
<                         normlzdSensMatrixPoly, normlzdLinSolnBiasesCol, metricsWeights, \
<                         normlzdCurvMatrix, reglrCoef, numMetrics)
< 
<     #print("chisqdZero =", chisqdZero)
<     #print("chisqdMin =", chisqdMin)
<     print("chisqdLinSolnMinRatio =", chisqdLinSolnMin/chisqdZero)
< 
<     chisqdUnweightedLinSolnMin = objFnc(np.zeros_like(defaultParamValsOrigRow), \
<                         normlzdSensMatrixPoly, normlzdLinSolnBiasesCol, np.ones_like(metricsWeights), \
<                         normlzdCurvMatrix, reglrCoef, numMetrics)
< 
<     #print("chisqdUnweightedZero =", chisqdUnweightedZero)
<     #print("chisqdUnweightedMin =", chisqdUnweightedMin)
<     print("chisqdUnweightedLinSolnMinRatio =", chisqdUnweightedLinSolnMin/chisqdUnweightedZero)
<     print("-----------------------------------------------------")
344c322
<     #linSolnBias = ( linSolnBiasesCol + defaultBiasesCol )
---
>     linSolnBias = ( linSolnBiasesCol + defaultBiasesCol )
346,347c324,325
<     #linSolnBiasMagRatio = np.linalg.norm(linSolnBias/np.abs(normMetricValsCol))**2 / \
<     #                      np.linalg.norm(defaultBiasesCol/np.abs(normMetricValsCol))**2
---
>     linSolnBiasMagRatio = np.linalg.norm(linSolnBias/np.abs(normMetricValsCol))**2 / \
>                           np.linalg.norm(defaultBiasesCol/np.abs(normMetricValsCol))**2
394,395c372,373
<     #weightedBiasLinSoln = metricsWeights * ( linSolnBiasesCol + defaultBiasesCol ) / np.abs(normMetricValsCol)
<     #weightedBiasLinSolnMagRatio = np.linalg.norm(weightedBiasLinSoln)**2 / np.linalg.norm(normlzdMDeltaB)**2
---
>     weightedBiasLinSoln = metricsWeights * ( linSolnBiasesCol + defaultBiasesCol ) / np.abs(normMetricValsCol)
>     weightedBiasLinSolnMagRatio = np.linalg.norm(weightedBiasLinSoln)**2 / np.linalg.norm(normlzdMDeltaB)**2
531,532c509
<         #y= (-linSolnBiasesCol-defaultBiasesCol)[metricsSensOrdered[i],0]/np.abs(normMetricValsCol[metricsSensOrdered[i],0]),
<         y= (-linSolnBiasesCol)[metricsSensOrdered[i],0]/np.abs(normMetricValsCol[metricsSensOrdered[i],0]),
---
>         y= (-linSolnBiasesCol-defaultBiasesCol)[metricsSensOrdered[i],0]/np.abs(normMetricValsCol[metricsSensOrdered[i],0]),
638,642d614
< 
<     #wide_df = px.data.medals_wide()
<     #paramsTotContrbBarFig = px.bar(wide_df, x="nation", y=["gold", "silver", "bronze"], base=[0,0,0])
<     #pdb.set_trace()
< 
645,646d616
<            #               barBase = np.zeros(numMetrics),
<                           #barBase = -defaultBiasesCol[metricsSensOrdered]/np.abs(normMetricValsCol[metricsSensOrdered]) @ np.ones((1,len(paramsNames))),
652,659c622
< #    paramsTotContrbBarFig = \
< #          createBarChart( minusNonlinMatrixOrdered.T, index=paramsNames, columns=metricsNamesOrdered,
< #                          orientation = 'v',
< #                          title="""Linear + nonlinear contributions of parameters to actual removal of regional biases""",
< #                          xlabel="Parameter", ylabel="Contribution to bias removal",
< #                          width=800, height=500 )
< 
<     sensMatrixBarFig = \
---
>     paramsTotContrbBarFig = \
661,662d623
<           #createBarChart( normlzdSensMatrixOrdered.T, index=paramsNames, columns=metricsNamesOrdered,
<           #                barBase = np.zeros_like(paramsScales),
664,672c625
<                           title="""Linear+nonlinear contributions of parameters to actual removal of regional biases""",
<                           xlabel="Parameter", ylabel="Contribution to bias removal",
<                           width=800, height=500 )
< 
<     linplusSensMatrixBarFig = \
<           createBarChart( normlzdLinplusSensMatrixPoly[metricsSensOrdered,:].T, index=paramsNames, columns=metricsNamesOrdered,
<           #                barBase = np.zeros_like(paramsScales),
<                           orientation = 'v',
<                           title="""Linplus contributions of parameters to actual removal of regional biases""",
---
>                           title="""Linear + nonlinear contributions of parameters to actual removal of regional biases""",
676,683d628
<     metricsCorrArrayFig = createCorrArrayFig( normlzdLinplusSensMatrixPoly, metricsNames,
<                           title='cos(angle) among metrics (i.e., rows of sens matrix)' ) 
< 
<     minusNormlzdDefaultBiasesCol = \
<              -defaultBiasesCol[metricsSensOrdered,0]/np.abs(normMetricValsCol[metricsSensOrdered,0])
<     metricsBarChart = createMetricsBarChart(metricsNames[metricsSensOrdered],paramsNames,
<                                             minusNormlzdDefaultBiasesCol,minusNonlinMatrixOrdered)
< 
1066c1011
<     paramsErrorBarsFig = px.scatter(df, x=df.index, y=df.columns,
---
>     paramsBarChart = px.scatter(df, x=df.index, y=df.columns,
1069c1014
<     paramsErrorBarsFig.update_traces( go.Scatter(
---
>     paramsBarChart.update_traces( go.Scatter(
1074c1019
<     #paramsErrorBarsFig.add_trace(go.Scatter(x=paramsNames, y=paramsLowValsPCBound[:,0]*paramsScales,
---
>     #paramsBarChart.add_trace(go.Scatter(x=paramsNames, y=paramsLowValsPCBound[:,0]*paramsScales,
1077c1022
<     #paramsErrorBarsFig.add_trace(go.Scatter(x=paramsNames, y=paramsHiValsPCBound[:,0]*paramsScales, fill='tonexty',
---
>     #paramsBarChart.add_trace(go.Scatter(x=paramsNames, y=paramsHiValsPCBound[:,0]*paramsScales, fill='tonexty',
1080c1025
<     #paramsErrorBarsFig.add_trace(go.Scatter(x=paramsNames, y=defaultParamValsOrigRow[0,:]*paramsScales,
---
>     #paramsBarChart.add_trace(go.Scatter(x=paramsNames, y=defaultParamValsOrigRow[0,:]*paramsScales,
1082c1027
<     paramsErrorBarsFig.add_trace(go.Scatter(x=paramsAbbrv, y=paramsSolnLin[:,0]*paramsScales,
---
>     paramsBarChart.add_trace(go.Scatter(x=paramsAbbrv, y=paramsSolnLin[:,0]*paramsScales,
1087c1032
<     paramsErrorBarsFig.add_trace(go.Scatter(x=paramsAbbrv, y=paramsSolnNonlin[:,0]*paramsScales,
---
>     paramsBarChart.add_trace(go.Scatter(x=paramsAbbrv, y=paramsSolnNonlin[:,0]*paramsScales,
1093c1038
<     paramsErrorBarsFig.add_trace(go.Scatter(x=paramsAbbrv, y=paramsSolnElastic[:,0]*paramsScales,
---
>     paramsBarChart.add_trace(go.Scatter(x=paramsAbbrv, y=paramsSolnElastic[:,0]*paramsScales,
1103,1106c1048,1051
<     paramsErrorBarsFig.update_yaxes(title="User-scaled parameter value")
<     paramsErrorBarsFig.update_xaxes(title="Parameter Name")
<     paramsErrorBarsFig.update_layout(hovermode="x")
<     paramsErrorBarsFig.update_layout( width=1000, height=500  )
---
>     paramsBarChart.update_yaxes(title="User-scaled parameter value")
>     paramsBarChart.update_xaxes(title="Parameter Name")
>     paramsBarChart.update_layout(hovermode="x")
>     paramsBarChart.update_layout( width=1000, height=500  )
1139,1174c1084,1152
<     # Create figure that shows the sensitivity matrix and bias column, both color coded.
<     sensMatrixBiasFig = createMatrixPlusColFig( matrix = normlzdLinplusSensMatrixPoly,
<                          matIndexLabel = metricsNames,
<                          matColLabel = paramsNames,
<                          colVector = -np.around(defaultBiasesCol/np.abs(normMetricValsCol), decimals=2),
<                          colVectIndexLabel = metricsNames,
<                          colVectColLabel = ['-Normalized Biases'],
<                          plotTitle='Color-coded normalized sensitivity matrix',
<                          reversedYAxis = 'reversed' )
< 
< 
<     # Create figure that plots color-coded parameter correlation matrix plus parameter-bias correlation column.
<     XT_dot_X_Linplus = normlzdLinplusSensMatrixPoly.T @ normlzdLinplusSensMatrixPoly
<     (XT_dot_X_Linplus_corr, stdMatrixInv ) = covMatrix2corrMatrix( XT_dot_X_Linplus, returnStd=True )
<     normlzdStdDefaultBiasesCol = stdMatrixInv @ normlzdLinplusSensMatrixPoly.T @ normlzdDefaultBiasesCol
<     paramsCorrArrayBiasFig = createMatrixPlusColFig( matrix = XT_dot_X_Linplus_corr,
<                          matIndexLabel = paramsNames,
<                          matColLabel = paramsNames,
<                          colVector = -np.around(normlzdStdDefaultBiasesCol, decimals=2),
<                          colVectIndexLabel = paramsNames,
<                          colVectColLabel = ['-Normalized, Standardized Biases'],
<                          plotTitle='XTdotX and bias column, converted to correlation',
<                          reversedYAxis = 'reversed' )
< 
<     # Create figure that plots color-coded projection matrix plus bias column.
<     XT_dot_X_Linplus_inv = np.linalg.inv( XT_dot_X_Linplus )
<     projMatrix = normlzdLinplusSensMatrixPoly @ XT_dot_X_Linplus_inv @ normlzdLinplusSensMatrixPoly.T
<     print("projMatrix rows=", np.linalg.norm( projMatrix, axis=1))
<     projectionMatrixFig = createMatrixPlusColFig( matrix = projMatrix,
<                          matIndexLabel = metricsNames,
<                          matColLabel = metricsNames,
<                          colVector = -np.around(normlzdDefaultBiasesCol, decimals=2),
<                          colVectIndexLabel = metricsNames,
<                          colVectColLabel = ['-Normalized Biases'],
<                          plotTitle='Projection matrix',
<                          reversedYAxis = 'reversed' )
---
>     roundedNormlzdSensMatrix = np.around( normlzdLinplusSensMatrixPoly, decimals=2)
>     df_sensmat = pd.DataFrame(roundedNormlzdSensMatrix,
>                   index=metricsNames,
>                   columns=paramsNames)
>     matMaxAbs = np.max(np.abs(roundedNormlzdSensMatrix))
>     normlzdSensMatrixFig = ff.create_annotated_heatmap(
>                    z=df_sensmat.to_numpy(),
>                    x=df_sensmat.columns.tolist(),
>                    y=df_sensmat.index.tolist(),
>                    #coloraxis="coloraxis",
>                    #colorscale=px.colors.diverging.balance,
>                    colorscale='balance',
>                    zmin=-matMaxAbs, zmax=matMaxAbs,
>                    showscale=False, ygap=1, xgap=1
>                    )
>     normlzdSensMatrixFig.update_xaxes(side="bottom")
>     normlzdSensMatrixFig.update_layout(
>     title_text='Color-coded normalized sensitivity matrix', 
>     title_x=0.5, 
>     #width=800, 
>     #height=1400,
>     xaxis_showgrid=False,
>     yaxis_showgrid=False,
>     xaxis_zeroline=False,
>     yaxis_zeroline=False,
>     #yaxis_autorange='reversed',
>     template='plotly_white'
>     )
>     df_biasArray = pd.DataFrame( -np.around(defaultBiasesCol/np.abs(normMetricValsCol), decimals=2),
>                    index=metricsNames,
>                    columns= ['-Normalized Biases'])
>     normlzdBiasArrayFig = ff.create_annotated_heatmap(
>                    z=df_biasArray.to_numpy(),
>                    x=df_biasArray.columns.tolist(),
>                    y=df_biasArray.index.tolist(),
>                    #colorscale=normlzdSensMatrixFig.colorscale,
>                    #colorscale=px.colors.diverging.balance,
>                    #coloraxis="coloraxis",
>                    colorscale='balance',
>                    zmin=-matMaxAbs, zmax=matMaxAbs,
>                    showscale=True, ygap=1, xgap=1
>                    )
>     normlzdBiasArrayFig.update_layout(
>     title_text='', 
>     title_x=0.5, 
>     #width=10, 
>     #height=1400,
>     xaxis_showgrid=False,
>     yaxis_showgrid=False,
>     xaxis_zeroline=False,
>     yaxis_zeroline=False,
>     #yaxis_autorange='reversed',
>     #template='plotly_white'
>     )
>     sensMatrixBiasFig = make_subplots(
>     rows=1, cols=2,
>     column_widths=[0.9, 0.1],
>     horizontal_spacing=0.2,
>     )
>     sensMatrixBiasFig.add_trace(normlzdSensMatrixFig.data[0], row=1, col=1)
>     #sensMatrixBiasFig.add_trace(normlzdBiasArrayFig.data[0], 1, 1)
>     sensMatrixBiasFig.add_trace(normlzdBiasArrayFig.data[0], row=1, col=2)
>     sensMatrixBiasFig.update_layout(
>         title_text='Color-coded normalized sensitivity matrix',
>         height=700,
>         template='plotly_white') 
>     sensMatrixBiasFig.update_layout(coloraxis=dict(colorscale='RdBu',cmin=-1,cmax=1), showlegend=False)
> 
>     #pdb.set_trace()
1175a1154,1200
>     cosAnglesMatrix = calcMatrixAngles( normlzdLinplusSensMatrixPoly )
>     roundedCosAnglesMatrix = np.around(cosAnglesMatrix, decimals=2)
>     df = pd.DataFrame(roundedCosAnglesMatrix,
>                   index=metricsNames,
>                   columns=metricsNames)
>     upTriMask = np.logical_not( np.tril(np.ones_like(roundedCosAnglesMatrix, dtype=bool)) )
>     df_mask = df.mask(upTriMask)
>     #maskedRoundedCosAnglesMatrix = np.ma.masked_array(roundedCosAnglesMatrix, mask=upTriMask)
>     #maskedRoundedCosAnglesMatrix.filled(np.nan)
>     #print("maskedAngles =", maskedRoundedCosAnglesMatrix)
>     #print("cosAnglesMatrix =", cosAnglesMatrix)
>     #print("upTriMask =", upTriMask)
>     metricsCorrArrayFig = ff.create_annotated_heatmap(
>                    z=df_mask.to_numpy(),
>                    x=df_mask.columns.tolist(),
>                    y=df_mask.columns.tolist(),
>                    colorscale=px.colors.diverging.balance,
>                    showscale=True, ygap=1, xgap=1
>                    )
>     #metricsCorrArrayFig = go.Figure(data=go.Heatmap(
>     #                z=roundedCosAnglesMatrix,  
>     ##                labels=dict(x="Metrics", y="Metrics")x=['SWCF_GLB', 'SWCF_DYCOMS', 'SWCF_HAWAII', 'SWCF_VOCAL', 'SWCF_VOCAL_near', 'SWCF_LBA', 'SWCF_WP', 'SWCF_EP', 'SWCF_NP', 'SWCF_SP', 'SWCF_CAF', 'SWCF_Nambian', 'SWCF_Nambian_near', 'LWCF_GLB', 'PRECT_GLB'])
>     ##                 labels=dict(x="hullo")
>     #                x=metricsNames.tolist(),
>     #                y=metricsNames.tolist() )
>     ##                text_auto=True  )
>     #                )
>     #    metricsCorrArrayFig = px.imshow(
>     #                   img=roundedCosAnglesMatrix,
>     #                   x=metricsNames.tolist(),
>     #                   y=metricsNames.tolist(),
>     #                   color_continuous_scale=px.colors.diverging.balance
>     #                    )
>     #    metricsCorrArrayFig.update_traces(text=roundedCosAnglesMatrix)
>     metricsCorrArrayFig.update_xaxes(side="bottom")
>     metricsCorrArrayFig.update_layout(
>     title_text='cos(angle) among metrics (i.e., rows of sens matrix)', 
>     title_x=0.5, 
>     width=800, 
>     height=700,
>     xaxis_showgrid=False,
>     yaxis_showgrid=False,
>     xaxis_zeroline=False,
>     yaxis_zeroline=False,
>     yaxis_autorange='reversed',
>     template='plotly_white'
>     )
1179d1203
<     #normlzdSensMatrixConcatBiases = np.hstack((normlzdWeightedLinplusSensMatrixPoly, -1*normlzdWeightedDefaultBiasesCol))
1210c1234
<     invrsCosFactorPlusMatrix = np.power( np.maximum( np.finfo(float).eps, 2. * ( 1. + cosAnglesMatrix ) ), -0.5 )
---
>     invrsCosFactorPlusMatrix = np.power( 2. * ( 1. + cosAnglesMatrix ) , -0.5 )
1253d1276
< 
1259c1282
<         dcc.Graph( id='paramsErrorBarsFig', figure=paramsErrorBarsFig ),
---
>         dcc.Graph( id='paramsBarChart', figure=paramsBarChart ),
1261d1283
<         dcc.Graph( id='metricsBarChart', figure=metricsBarChart ),
1263,1265c1285
< #        dcc.Graph( id='paramsTotContrbBarFig', figure=paramsTotContrbBarFig ),
<         dcc.Graph( id='sensMatrixBarFig', figure=sensMatrixBarFig ),
<         #dcc.Graph( id='linplusSensMatrixBarFig', figure=linplusSensMatrixBarFig ),
---
>         dcc.Graph( id='paramsTotContrbBarFig', figure=paramsTotContrbBarFig ),
1271d1290
<         dcc.Graph( id='paramsCorrArrayBiasFig', figure=paramsCorrArrayBiasFig ),
1274d1292
<         dcc.Graph( id='projectionMatrixFig', figure=projectionMatrixFig ),
1301,1314d1318
< def covMatrix2corrMatrix( covMatrix, returnStd=False ):
< 
<     # https://gist.github.com/wiso/ce2a9919ded228838703c1c7c7dad13b
< 
<     import numpy as np
< 
<     stdVector = np.sqrt( np.diag( covMatrix ) )
<     stdMatrixInv = np.diag( 1.0 / stdVector )
<     corrMatrix = stdMatrixInv @ covMatrix @ stdMatrixInv
<     if returnStd:
<         return ( corrMatrix, stdMatrixInv )
<     else:
<         return corrMatrix
< 
1370,1371d1373
<     #pdb.set_trace()
< 
1375c1377
<     dnormlzdParamsSolnNonlin = minimize(objFnc,x0=np.zeros_like(np.transpose(defaultParamValsOrigRow[0])), \
---
>     dnormlzdParamsSolnNonlin = minimize(objFnc,x0=np.zeros_like(np.transpose(defaultParamValsOrigRow)), \
1419c1421
<     dnormlzdParamsSolnLin = minimize(objFnc,x0=np.zeros_like(np.transpose(defaultParamValsOrigRow[0])), \
---
>     dnormlzdParamsSolnLin = minimize(objFnc,x0=np.zeros_like(np.transpose(defaultParamValsOrigRow)), \
1606,1739d1607
< 
< 
< 
< def createMatrixPlusColFig( matrix, matIndexLabel, matColLabel,
<                             colVector, colVectIndexLabel, colVectColLabel,
<                             plotTitle, reversedYAxis=None ):
<     '''Creates a figure that displays a color-coded matrix and an accompanying column vector.'''
< 
<     import numpy as np
<     import pandas as pd
<     import plotly.figure_factory as ff
<     import plotly.express as px
<     from plotly.subplots import make_subplots
<     import pdb
< 
<     # First create a sub-figure that displays color-coded matrix
<     roundedNormlzdSensMatrix = np.around( matrix, decimals=2)
<     df_sensmat = pd.DataFrame(roundedNormlzdSensMatrix,
<                   index=matIndexLabel,
<                   columns=matColLabel)
<     matMaxAbs = np.max(np.abs(roundedNormlzdSensMatrix))
<     matSubfig = px.imshow(
<                    df_sensmat.to_numpy(),
<                    x=df_sensmat.columns.tolist(),
<                    y=df_sensmat.index.tolist(),
<                    text_auto=True
<                    )
<     matSubfig.update_xaxes(side="bottom")
<     matSubfig.update_layout(
<     title_text=plotTitle,
<     title_x=0.5,
<     #width=800,
<     #height=1400,
<     xaxis_showgrid=False,
<     yaxis_showgrid=False,
<     xaxis_zeroline=False,
<     yaxis_zeroline=False,
<     )
< 
<     # Now create a sub-figure showing a color-coded column matrix
<     df_biasArray = pd.DataFrame( colVector,
<                    index=colVectIndexLabel,
<                    columns= colVectColLabel)
<     colVectSubfig = px.imshow(
<                    df_biasArray.to_numpy(),
<                    x=df_biasArray.columns.tolist(),
<                    y=df_biasArray.index.tolist(),
<                    text_auto=True
<                    )
<     colVectSubfig.update_layout(
<     title_text='', 
<     title_x=0.5, 
<     #width=10, 
<     #height=1400,
<     xaxis_showgrid=False,
<     yaxis_showgrid=False,
<     xaxis_zeroline=False,
<     yaxis_zeroline=False,
<     )
< 
<     # Now combine the matrix and column sub-figures into one figure
<     matrixPlusColFig = make_subplots(
<     rows=1, cols=2,
<     column_widths=[0.9, 0.1],
<     horizontal_spacing=0.3,
<     )
<     matrixPlusColFig.add_trace(matSubfig.data[0], row=1, col=1)
<     matrixPlusColFig.add_trace(colVectSubfig.data[0], row=1, col=2)
<     matrixPlusColFig.update_layout(
<         title_text=plotTitle,
<         height=700,
<         width= 1000,
<         template='plotly_white')
<     matrixPlusColFig.update_layout(coloraxis=dict(colorscale='RdBu_r',cmin=-matMaxAbs,cmax=matMaxAbs), showlegend=False)
<     matrixPlusColFig.update_yaxes( autorange=reversedYAxis, row=1, col=2 ) 
<     matrixPlusColFig.update_yaxes( autorange=reversedYAxis, row=1, col=1 ) 
< 
<     #pdb.set_trace()
< 
<     return ( matrixPlusColFig )
< 
< 
< def createMetricsBarChart( metricsNames, paramsNames, biases, sensMatrix ):
< 
< 
<     import plotly.graph_objects as go
<     import numpy as np
<     import pdb
< 
<     biases = np.reshape(biases, (-1,1))
<     barBase = np.copy(biases)  # np.copy prevents biases variable from changing
<     rightEnd = np.copy(biases)
<     leftEnd = np.copy(biases)
<     barsData = []
<     for col in range(len(paramsNames)):
<         #print("paramsNames[col]=", paramsNames[col])
<         sensCol = sensMatrix[:,[col]]
<         #print("sensCol=", sensCol )
<         #print("rightEnd=", rightEnd )
<         for row in range( len(sensCol) ):
<             if ( np.sign(sensCol[row]) > 0 ):
<                 barBase[row] = rightEnd[row]
<             else:
<                 barBase[row] = leftEnd[row]
< 
<         #print("barBase=", barBase)
<         #print("biases during=", biases)
<         barsData.append( go.Bar(name=paramsNames[col], y=metricsNames, x=sensCol[:,0],
<             base=barBase[:,0], orientation="h" ) )
<         rightEnd = rightEnd + np.maximum( np.zeros_like(sensCol), sensCol )
<         leftEnd  = leftEnd + np.minimum( np.zeros_like(sensCol), sensCol )
< 
<     #print("biases after=", biases)
<     # Insert a black line in each bar to denote default biases that we want to remove
<     barsData.append( go.Bar(name='default bias',
<                             y=metricsNames, x=np.zeros(len(metricsNames)), base=biases[:,0],
<                             orientation="h",
<                             marker_line_color = 'black', marker_color='black', marker_line_width = 4
<                             )
<                    )
< 
<     metricsBarChart = go.Figure(data=barsData)
< 
<     # Change the bar mode
<     metricsBarChart.update_layout(barmode='stack')
<     metricsBarChart.update_xaxes(visible=True,zeroline=True,zerolinewidth=4,zerolinecolor='gray') # Plot y axis
<     metricsBarChart.update_layout( width=800, height=50*len(metricsNames)  )
<     metricsBarChart.update_xaxes(title="-Normalized biases")
< 
<     #pdb.set_trace()
< 
<     return metricsBarChart
< 
< 
1741d1608
<      #                   barBase,
1748d1614
<     import plotly.graph_objects as go
1754,1757c1620
<     barChart = px.bar(df, x=df.index, y=df.columns,
<                           #base=barBase,
<                           #offset=1,
<                           orientation=orientation,
---
>     barChart = px.bar(df, x=df.index, y=df.columns, orientation=orientation,
1765d1627
<     #barChart.update_layout(barmode='relative')
1915,1976d1776
< def createCorrArrayFig( matrix, indexLabels, title ):
< 
<     import numpy as np
<     import pandas as pd
<     import plotly.figure_factory as ff
<     import plotly.express as px
<     import pdb
< 
<     cosAnglesMatrix = calcMatrixAngles( matrix )
<     #cosAnglesMatrix = np.copy( matrix )
<     roundedCosAnglesMatrix = np.around(cosAnglesMatrix, decimals=2)
< 
<     df = pd.DataFrame(roundedCosAnglesMatrix,
<                   index=indexLabels,
<                   columns=indexLabels)
<     # Display only the lower-triangular elements of the matrix
<     upTriMask = np.logical_not( np.tril(np.ones_like(roundedCosAnglesMatrix, dtype=bool)) )
<     df_mask = df.mask(upTriMask)
<     #maskedRoundedCosAnglesMatrix = np.ma.masked_array(roundedCosAnglesMatrix, mask=upTriMask)
<     #maskedRoundedCosAnglesMatrix.filled(np.nan)
<     #print("maskedAngles =", maskedRoundedCosAnglesMatrix)
<     #print("cosAnglesMatrix =", cosAnglesMatrix)
<     #print("upTriMask =", upTriMask)
<     corrArrayFig = ff.create_annotated_heatmap(
<                    z=df_mask.to_numpy(),
<                    x=df_mask.columns.tolist(),
<                    y=df_mask.columns.tolist(),
<                    colorscale=px.colors.diverging.balance,
<                    showscale=True, ygap=1, xgap=1
<                    )
<     #metricsCorrArrayFig = go.Figure(data=go.Heatmap(
<     #                z=roundedCosAnglesMatrix,  
<     ##                labels=dict(x="Metrics", y="Metrics")x=['SWCF_GLB', 'SWCF_DYCOMS', 'SWCF_HAWAII', 'SWCF_VOCAL', 'SWCF_VOCAL_near', 'SWCF_LBA', 'SWCF_WP', 'SWCF_EP', 'SWCF_NP', 'SWCF_SP', 'SWCF_CAF', 'SWCF_Nambian', 'SWCF_Nambian_near', 'LWCF_GLB', 'PRECT_GLB'])
<     ##                 labels=dict(x="hullo")
<     #                x=metricsNames.tolist(),
<     #                y=metricsNames.tolist() )
<     ##                text_auto=True  )
<     #                )
<     #    metricsCorrArrayFig = px.imshow(
<     #                   img=roundedCosAnglesMatrix,
<     #                   x=metricsNames.tolist(),
<     #                   y=metricsNames.tolist(),
<     #                   color_continuous_scale=px.colors.diverging.balance
<     #                    )
<     #    metricsCorrArrayFig.update_traces(text=roundedCosAnglesMatrix)
<     corrArrayFig.update_xaxes(side="bottom")
<     corrArrayFig.update_layout(
<     title_text=title, 
<     title_x=0.5, 
<     width=800, 
<     height=700,
<     xaxis_showgrid=False,
<     yaxis_showgrid=False,
<     xaxis_zeroline=False,
<     yaxis_zeroline=False,
<     yaxis_autorange='reversed',
<     template='plotly_white'
<     )
< 
<     #pdb.set_trace()
< 
<     return ( corrArrayFig )
diff '--exclude=.git' '--exclude=version_clubb_core.txt' '--exclude=version_silhs.txt' -r clubb/utilities/sens_matrix/set_up_dashboard_inputs.py clubb_release/utilities/sens_matrix/set_up_dashboard_inputs.py
56,58c56
< #                        ['SWCF_RACC', 0.01, 0.2], \
<                         ['SWCF_RMSEP', 4.01, 15.], \
< #                        ['SWCF_RMSE', 0.01, 15.], \
---
>                         ['SWCF_RMSE', 4.00, 15.], \
61,62c59,60
<                         ['SWCF_HAWAII', 1.00, -999], \
<                         ['SWCF_VOCAL', 1.00, -999], \
---
>                         ['SWCF_HAWAII', 2.00, -999], \
>                         ['SWCF_VOCAL', 2.00, -999], \
69c67
< ##                        ['SWCF_PA', 1.01, -999], \
---
> #                        ['SWCF_PA', 1.01, -999], \
71c69
<                         ['SWCF_Namibia', 4.00, -999], \
---
>                         ['SWCF_Namibia', 1.00, -999], \
78c76
< ##                       ['LWCF_WP', 1.00, -999], \
---
> #                       ['LWCF_WP', 1.00, -999], \
80,81c78,79
< ##                        ['LWCF_NP', 1.01, -999], \
< ##                        ['LWCF_SP', 1.01, -999], \
---
> #                        ['LWCF_NP', 1.01, -999], \
> #                        ['LWCF_SP', 1.01, -999], \
85,87d82
< #                        ['PRECT_RACC', 0.01, 1.0], \
< #                        ['PRECT_RMSEP', 0.01, 1.0], \
< #                        ['PRECT_RMSE', 0.01, 1.0], \
129c124
<     folder_name = 'Regional_files/20230910/'  # folder where regional netcdf files are stored.
---
>     folder_name = 'Regional_files/20230804/'  # folder where regional netcdf files are stored.
153,155c148,150
< #                    ['clubb_c_invrs_tau_sfc', 1.0, \
< #                     folder_name + 'sens0707_6_Regional.nc',
< #                     folder_name + 'sens0707_7_Regional.nc'], \
---
>                     ['clubb_c_invrs_tau_sfc', 1.0, \
>                      folder_name + 'sens0707_6_Regional.nc',
>                      folder_name + 'sens0707_7_Regional.nc'], \
185,187d179
< #                    ['cldfrc_dp2', 1.0, \
< #                     folder_name + 'sens0707_38_Regional.nc',
< #                     folder_name + 'sens0707_39_Regional.nc'], \
211,231d202
< #                    ['clubb_c8', 1.0, 0.7, \
< #                     folder_name + 'sens0707_14_Regional.nc',  \
< #                     folder_name + 'sens0707_15_Regional.nc'], \
< #                    ['clubb_c_k10', 1.0, 0.3, \
< #                     folder_name + 'sens0707_12_Regional.nc', \
< #                     folder_name + 'sens0707_13_Regional.nc'], \
< #                    ['clubb_c_invrs_tau_n2', 1.0, 0.4, \
< #                     folder_name + 'sens0707_10_Regional.nc',
< #                     folder_name + 'sens0707_11_Regional.nc'], \
<                     ['clubb_c_invrs_tau_sfc', 1.0, 0.05, \
<                      folder_name + 'sens0707_6_Regional.nc',
<                      folder_name + 'sens0707_7_Regional.nc'], \
< #                    ['clubb_c_invrs_tau_wpxp_n2_thresh', 1.e3, 0.00045, \
< #                     folder_name + 'sens0707_8_Regional.nc', \
< #                     folder_name + 'sens0707_9_Regional.nc'], \
< #                    ['clubb_c_invrs_tau_shear', 1.0, 0.22, \
< #                     folder_name + 'sens0707_2_Regional.nc', \
< #                     folder_name + 'sens0707_3_Regional.nc'], \
< #                    ['clubb_c_invrs_tau_bkgnd', 1.0, 1.1, \
< #                     folder_name + 'sens0707_16_Regional.nc',
< #                     folder_name + 'sens0707_17_Regional.nc'], \
234a206,208
> #                    ['clubb_c_invrs_tau_bkgnd', 1.0, 1.50686559, \
> #                     folder_name + 'sens0707_16_Regional.nc', \
> #                     folder_name + 'sens0707_17_Regional.nc'], \
264c238
<            folder_name + 'sens0707_25_Regional.nc'
---
>            folder_name + 'sens0707_1_Regional.nc'
273,274d246
<     'SWCF_RACC': 0, \
<     'SWCF_RMSEP': 0, \
290,292d261
<     'PRECT_RACC': 0, \
<     'PRECT_RMSEP': 0, \
<     'PRECT_RMSE': 0, \
394,395d362
< 
<     #print("defaultMetricValsCol=", defaultMetricValsCol)
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] script
[Pipeline] {
[Pipeline] cleanWs
[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Deferred wipeout is used...
[WS-CLEANUP] done
[Pipeline] }
[Pipeline] // script
[Pipeline] script
[Pipeline] {
[Pipeline] emailext
Sending email to: messnermet@uwm.edu
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE