The big grid change. Converting gr from being an array of types containing 1D arrays, to a type containing 2D arrays. All cases BFB, cam multicolumn+silhs BFB, and cam multicolumn (no silhs) with backwards compatible settings BFB. (details)
Adds to tuning dashboard an arrow plot of biases. (details)
Removing the zt2zm interface from clubb_api and making the api calls just redirect to the grid class interface for it. (details)
Pushing column loop into mean advection procedures. (details)
Just a line to read me, because commit a19386022f26aa17da805381904bcde4c59cb521 fixed the bit diff tests after a previous commit broke it, RESOLVED:991ebceb8caba2ad56c1125871b7de1de3c04dba. (details)
modified clubb_ifort_configuration file to support nan trapping for uninitialized variables (details)
renamed clubb_ifort_build to clubb_ifort_debug_run and updated jenkinsfile to reflect (details)
forgot to change if statements in jenkinsfile (details)
created debug case for gfortran as well as updating jenkins files to work with it, as well as a forgotten change to the ifort debug test jenkinsfile (details)
Adds to the tuning dashboard a quadratic optimizer. (details)
updating timestep_convergence_test.py to python 3 #693 (details)
Refactored fill_holes_vertical to make GPUization simple. This is BIT_CHANGING, but results are bit-for-bit when using -O0 optimization, thus it is not answer changing. The first pass over each grid column will not parallelize well, the k-loop needs to be done in serial. Maximum parallelization has been exposed for the global hole-filling though, at the cost of occasionally doing unneccesary calculations. larson-group/clubb#972. (details)
Removing fill_holes_multiplicative and replacing magic numbers with parameters from constants_clubb. larson-group/clubb#972 (details)
Moving vertical_avg and vertical_integral to advance_helper_module. larson-group/clubb#972 (details)
Making compatible with latest clubb change. (details)
rewrote run_bindiff_all.bash into python, and added extra functionality to view output of diff_netcdf_outputs.py script that is run inside of it. #980 (details)
Removing elementalness from sat_vapor_press_liq and making interal procedures subroutines rather than functions to prevent unneccesary data copies. Doing the same for thlm2T_in_K since it is often used in conjunction with sat_vapor_press_liq. Bit-for-bit confirmed with O0 using all single column cases with or without l_diag_Lscale_from_tau, and with cam_coarse_res. larson-group/clubb#972 (details)
Cleaning up new subroutine calc_liquid_cloud_frac_component, and making sat_mixrat_ice a subroutine that works the same way as sat_mixrat_liq. larson-group/clubb#972 (details)
Removing these paratheses is BIT_CHANGING since it modifies the order of operations, but allows for the multiplication and subraction to be done in parallel for complex pipelines. (details)
Adding line to indicate BIT_CHANGING:055f83d512354e6330233a5eecd5cff0456c0292 to fix nightly tests. The commit which introduced calc_ice_cloud_frac_component was not BFB using -O2 optimization. See pull request https://github.com/larson-group/clubb/pull/1034 for detail. (details)
Adding a kludgy but functional trimming for the (non-CLUBB) variables that are (details)
In tuner, creates box and whiskers version of plot (details)
Making multicolumn version of advance_clubb_core in clubb_driver that accepts a number of columns to run clubb with. All bit-for-bit output on standalone cases, so the first column is correct. (details)
Improvements. Netcdf output is now functional and we can detect errors with multiple columns even when the standard output is identical. (details)
Now the multicolumn netcdf output is correct. Adding comments too. larson-group/clubb#1033 (details)
Made the multicolumn inout arrays save from timestep to timestep. This makes the extra columns more independent from the main column and allows differences in the extra columns to propagate more. larson-group/clubb#1033 (details)
Adding some fields to tweak for extra columns. This might be sufficient, the netcdf data for the column is similar but visually different, and I tested with up to 64 columns and there wasn't any crashes. larson-group/clubb#1033 (details)
Adding script to compare netcdf outputs. This will print the max absolute diff and max percent diff for each field. This is made specifically for the multicolumn netcdf output. The script is not done, but this is the basics of it. larson-group/clubb#1033 (details)
Casting 0.0 to correct precision that format_date wants. (details)
Updating script to compare netcdf output. larson-group/clubb#1033 (details)
Updating column num input in config flags. larson-group/clubb#1033 (details)
Adding small check to allow configurable_multi_column_nl to be optional. If configurable_multi_column_nl is omitted from configurable_model_flags, then we assume we only want 1 column and a warning is printed. larson-group/clubb#1033 (details)
Adding comments, setting to num_standalone_columns=1 by default, and preventing multicolumn output when l_stats=false. larson-group/clubb#1033 (details)
Namelists need to be closed with a '/', and omitting it will break many tests. (details)
Making save variables in the multicol code threadprivate, this fixes the openmp test. Also changing the way we name and save the multicol output, this allows the parallel run to run with multiple columns. I've reflected the changes in comments where relevant. larson-group/clubb#1033 (details)
Adds commented-out line that prevents the monotonic flux (details)
Updating monotonic flux limiter code to remove spikes. (#1038) (details)
Creating new flags to control monotonic flux limiter (#1039) (details)
I am adding cloudy_updraft_frac and cloudy_downdraft_frac as (details)
I forgot to add cld_updr_frac and cld_downdr_frac to all_stats.in (details)
The big grid change. Converting gr from being an array of types containing 1D arrays, to a type containing 2D arrays. All cases BFB, cam multicolumn+silhs BFB, and cam multicolumn (no silhs) with backwards compatible settings BFB.
Just a line to read me, because commit a19386022f26aa17da805381904bcde4c59cb521 fixed the bit diff tests after a previous commit broke it, RESOLVED:991ebceb8caba2ad56c1125871b7de1de3c04dba.
Adds to the tuning dashboard a quadratic optimizer. The quadratic optimizer minimizes a quadratic cost function that includes the 2nd-order term in the Taylor series expansion of metrics as a function of parameters. Also uses the high and low parameter values to calculate the sensitivity matrix, rather than the default parameter values.
Adds to tuner dashboard a plot of predicted and actual removal of regional biases. The plot displays an arrow for each regional bias that points from the default-run bias to the bias that remains after tuning.
I discovered a bug when trying to run with all_stats today. Apparently, at some point in the past, the stat variable Richardson_num had been entered twice. I am removing one of those instances so the code runs agaim.
1) The denominator term is now the "cloudy updraft" frac in each PDF component, rather than just the PDF component cloud_frac. This is more consistent with the quantity being integrated.
2) I also added a w_down_in_cloud for cloudy downdraft velocity.
Since these fields are not output as part of standard stats, this commit will be bit-for-bit for the normal CLUBB output files.
I altered the w_up_in_cloud and w_down_in_cloud code so that a thresholding is used similar to what is seen in the cloud fraction and cloud water code. If the PDF component mean of w more than the maximum allow number of standard deviations away from 0, the PDF component is either all-updrafty or all-downdrafty, and the code avoids expensive computations where large magnitude values can potentially be fed into ERF or EXP.
Of course, the results are not bit-for-bit with the previous version, meaning that there are some situations where these thresholds come into effect. However, plots of all cases show no visible differences in w_up_in_cloud and w_down_in_cloud.
Since w_up_in_cloud and w_down_in_cloud are not included in normal stats output, this commit does not change the bit-for-bitness of CLUBB code.
I have optimized the new w_up_in_cloud and w_down_in_cloud code by only doing repeated operations one time and then saving them as a local variable.
Since the numerical order of operations changes for the argument to the EXP term, the results will differ at the level of numerical round-off, making this revision not bit-for-bit with the last revision. This only affects the w_up_in_cloud and w_down_in_cloud statistical output variables, which in turn are not output as part of standard_stats.in.
Refactored fill_holes_vertical to make GPUization simple. This is BIT_CHANGING, but results are bit-for-bit when using -O0 optimization, thus it is not answer changing. The first pass over each grid column will not parallelize well, the k-loop needs to be done in serial. Maximum parallelization has been exposed for the global hole-filling though, at the cost of occasionally doing unneccesary calculations. larson-group/clubb#972.
Removing elementalness from sat_vapor_press_liq and making interal procedures subroutines rather than functions to prevent unneccesary data copies. Doing the same for thlm2T_in_K since it is often used in conjunction with sat_vapor_press_liq. Bit-for-bit confirmed with O0 using all single column cases with or without l_diag_Lscale_from_tau, and with cam_coarse_res. larson-group/clubb#972
Cleaning up new subroutine calc_liquid_cloud_frac_component, and making sat_mixrat_ice a subroutine that works the same way as sat_mixrat_liq. larson-group/clubb#972
Removing these paratheses is BIT_CHANGING since it modifies the order of operations, but allows for the multiplication and subraction to be done in parallel for complex pipelines.
Adding line to indicate BIT_CHANGING:055f83d512354e6330233a5eecd5cff0456c0292 to fix nightly tests. The commit which introduced calc_ice_cloud_frac_component was not BFB using -O2 optimization. See pull request https://github.com/larson-group/clubb/pull/1034 for detail.
Adding a kludgy but functional trimming for the (non-CLUBB) variables that are processed via the '_calc' key. These variables are not trimmed like the others since they are processed in a different place, and therefore the plots will not have the correct min/max height without this fix. This seems to matter for budget lines from non-CLUBB models (no CLUBB variables have the '_calc' key).
Making multicolumn version of advance_clubb_core in clubb_driver that accepts a number of columns to run clubb with. All bit-for-bit output on standalone cases, so the first column is correct.
Made the multicolumn inout arrays save from timestep to timestep. This makes the extra columns more independent from the main column and allows differences in the extra columns to propagate more. larson-group/clubb#1033
Adding some fields to tweak for extra columns. This might be sufficient, the netcdf data for the column is similar but visually different, and I tested with up to 64 columns and there wasn't any crashes. larson-group/clubb#1033
Adding script to compare netcdf outputs. This will print the max absolute diff and max percent diff for each field. This is made specifically for the multicolumn netcdf output. The script is not done, but this is the basics of it. larson-group/clubb#1033
Adding small check to allow configurable_multi_column_nl to be optional. If configurable_multi_column_nl is omitted from configurable_model_flags, then we assume we only want 1 column and a warning is printed. larson-group/clubb#1033
Making save variables in the multicol code threadprivate, this fixes the openmp test. Also changing the way we name and save the multicol output, this allows the parallel run to run with multiple columns. I've reflected the changes in comments where relevant. larson-group/clubb#1033
I am adding cloudy_updraft_frac and cloudy_downdraft_frac as outputs to the calculate_w_up_in_cloud code.
These fields are non-interactive for the standard set of cases. Thus, all cases are bit-for-bit identical.
However, for the w_up_in_cloud and w_down_in_cloud results themselves, it is possible that results might not be bit-for-bit since the location of the max(eps, ...) clipping in the denominator is changed. However, results should not be appreciable different.