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