This pull request contains the code changes to implement modifications on skewness clippings of wp3 that are found to be beneficial for the convergence in CLUBB-SCM.
In default setup of CLUBB-SCM for skewness clippings on wp3 in src/CLUBB_core/clip_explicit.F90, the code attempts to apply different magnitudes of clippings below and above 100m AGL level, which sometimes can cause a discontinuity at around100 m AGL level in the clipped vertical profiles. Such discontinuities are found in the wp3 profile in BOMEX case when we implement a linear diffusion scheme (from our test simulations, the diffusions terms are reduced in linear diffusion), which can cause significant degradation of solution convergence when the model vertical grid is refined. The changes here are to introduce a smoothed Heaviside function in the calculation of skewness clippings, which we found can eliminate the discontinuities as mentioned above.
I introduced a flag variable "l_use_wp3_lim_with_smth_Heaviside" to activate the new option in the CLUBB namelist. The strategy follows the same way suggested by @bmg929 in the previous two pull requests (i.e. add the flag in the cases that we have tested but leave other cases unchanged). I currently explicitly added this flag in the namelist files for RICO, BOMEX, Wangara, and Dycoms2_RF02 cases. Other modifications in the code are made to pass the flag to the subroutine where the modified code is inserted.
It should be noted that the code changes for this pull request are based on the most recent code in CLUBB master branch (which has already included code changes from the two previous pull requests)
The test simulations on my side suggested that:
the solution (with and without code changes) is bit-for-bit identical for all cases when "l_modify_limiters_for_cnvg_test = .false."
When l_modify_limiters_for_cnvg_test = .true., changes in the solution for RICO, BOMEX, Wangara and Dycoms2_RF02 cases are observed. Here I conducted simulations for these four cases with
[ ] l_use_wp3_lim_with_smth_Heaviside = .false.
[ ] l_use_wp3_lim_with_smth_Heaviside = .true.
respectively. (all test simulations were conducted with run_scm_all.bash. All configurations (except for what I changed) are the same as the default CLUBB setup). I attached the hovmoller diagrams of cloud fraction and wp3 from my test simulations here for your reference:
Overall, I think there are noticeable changes in wp3 for BOMX when the code changes is activated, while the overall change for RICO, DYCOMS_RF02 and Wangara cases are relatively small.
Hi Vince (@vlarson) and Brian (@bmg929):
This pull request contains the code changes to implement modifications on skewness clippings of wp3 that are found to be beneficial for the convergence in CLUBB-SCM.
In default setup of CLUBB-SCM for skewness clippings on wp3 in src/CLUBB_core/clip_explicit.F90, the code attempts to apply different magnitudes of clippings below and above 100m AGL level, which sometimes can cause a discontinuity at around100 m AGL level in the clipped vertical profiles. Such discontinuities are found in the wp3 profile in BOMEX case when we implement a linear diffusion scheme (from our test simulations, the diffusions terms are reduced in linear diffusion), which can cause significant degradation of solution convergence when the model vertical grid is refined. The changes here are to introduce a smoothed Heaviside function in the calculation of skewness clippings, which we found can eliminate the discontinuities as mentioned above.
I introduced a flag variable "l_use_wp3_lim_with_smth_Heaviside" to activate the new option in the CLUBB namelist. The strategy follows the same way suggested by @bmg929 in the previous two pull requests (i.e. add the flag in the cases that we have tested but leave other cases unchanged). I currently explicitly added this flag in the namelist files for RICO, BOMEX, Wangara, and Dycoms2_RF02 cases. Other modifications in the code are made to pass the flag to the subroutine where the modified code is inserted.
It should be noted that the code changes for this pull request are based on the most recent code in CLUBB master branch (which has already included code changes from the two previous pull requests)
The test simulations on my side suggested that:
- cloud fraction for RICO, BOMEX, Wangara and Dycoms2_RF02 cases: hovmoller_cloud_frac.pdf - wp3 for RICO, BOMEX, Wangara and Dycoms2_RF02 cases: hovmoller_wp3.pdf
Overall, I think there are noticeable changes in wp3 for BOMX when the code changes is activated, while the overall change for RICO, DYCOMS_RF02 and Wangara cases are relatively small.