Skip to content

Generates bit-for-bit hashes for each validation driver using EAMxx's bfbhash approach.#504

Merged
jeff-cohere merged 4 commits intomainfrom
jeff-cohere/bfbhash
Feb 26, 2026
Merged

Generates bit-for-bit hashes for each validation driver using EAMxx's bfbhash approach.#504
jeff-cohere merged 4 commits intomainfrom
jeff-cohere/bfbhash

Conversation

@jeff-cohere
Copy link
Collaborator

@jeff-cohere jeff-cohere commented Feb 25, 2026

This PR uses a new Skywalker feature to traverse all input and output data in an ensemble,
creating a unique 64-bit integer hash from all the data that can be used to determine
whether answers are bit-for-bit identical, just like is done in EAMxx.

Currently, the two hashes are generated for each ensemble: one for inputs and another for
outputs. The hashes are printed to stdout. Sample driver output:

/home/jeff/projects/sandia/mam4xx/build/src/validation/nucleation/nucleation_driver: reading /home/jeff/projects/sandia/mam4xx/src/validation/mam_x_validation/nucleation/vehkamaki2002_fig8.yaml
/home/jeff/projects/sandia/mam4xx/build/src/validation/nucleation/nucleation_driver: writing mam4xx_vehkamaki2002_fig8.py
mam4xx hash> exe=nucleation_driver input=vehkamaki2002_fig8.yaml date=2026-01-25-81376
  input: 18cabe63e2b9de91
 output: d5b105eba0835081

With this in place, we can discuss how we'd like to compare these hashes against
baselines so we can understand when we're making non-BFB changes. Maybe we can experiment
with this branch to determine (a) if things work as we expect and (b) how best to make use of this
information.

Closes #496

…xx bfbhash approach.

This PR uses a new Skywalker feature to traverse all input and output data in an ensemble,
creating a unique 64-bit integer hash from all the data that can be used to determine
whether answers are bit-for-bit identical, just like is done in EAMxx.

Currently, the two hashes are generated for each ensemble: one for inputs and another for
 outputs. The hashes are printed to stdout.  Sample driver output:

```
/home/jeff/projects/sandia/mam4xx/build/src/validation/nucleation/nucleation_driver: reading /home/jeff/projects/sandia/mam4xx/src/validation/mam_x_validation/nucleation/vehkamaki2002_fig8.yaml
/home/jeff/projects/sandia/mam4xx/build/src/validation/nucleation/nucleation_driver: writing mam4xx_vehkamaki2002_fig8.py
mam4xx hash> exe=nucleation_driver date=2026-01-25-81376
  input: 18cabe63e2b9de91
 output: d5b105eba0835081
```

With this in place, we can discuss how we'd like to compare these hashes against
baselines so we can understand when we're making non-BFB changes.
@jeff-cohere
Copy link
Collaborator Author

I think someone more Special than me has to initiate the autotester. But this will keep while we discuss a mam4xx BFB methodology.

@odiazib
Copy link
Contributor

odiazib commented Feb 25, 2026

I approved the PR to let AT2 know that it’s okay to run the tests.

@codecov
Copy link

codecov bot commented Feb 25, 2026

Codecov Report

❌ Patch coverage is 93.61702% with 9 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.31%. Comparing base (390c6e1) to head (9a57921).
⚠️ Report is 9 commits behind head on main.

Files with missing lines Patch % Lines
src/validation/validation.cpp 93.05% 5 Missing ⚠️
src/validation/mo_drydep/mo_drydep_driver.cpp 88.57% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #504      +/-   ##
==========================================
- Coverage   93.31%   93.31%   -0.01%     
==========================================
  Files         301      302       +1     
  Lines       24486    24542      +56     
  Branches     2806     2816      +10     
==========================================
+ Hits        22849    22901      +52     
- Misses       1637     1641       +4     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@odiazib odiazib left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding this feature.

#define MAM4xx_BFBHASH_HPP

// This was copied from Andrew Bradley's original implementation at
// E3SM/components/eamxx/src/share/util/eamxx_bfbhash.hpp.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bartgol Are there any plans to move this eamxx_bfbhash code to EKAT?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know, but that might be a good idea.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's just one header file, and we'd have to do some gymnastics to avoid the inclusion of MPI on mam4xx standalone builds (or just live with it and incorporate MPI, which is probably fine).

@jeff-cohere
Copy link
Collaborator Author

Here's an example of how to get the hashes for a given commit from the testing logs (and what it looks like):

$ grep -A 2 "mam4xx hash" Testing/Temporary/LastTest.log 
mam4xx hash> exe=nucleation_driver input=vehkamaki2002_fig8.yaml date=2026-01-25-82426
  input: 18cabe63e2b9de91
 output: d5b105eba0835081
--
mam4xx hash> exe=nucleation_driver input=vehkamaki2002_fig9.yaml date=2026-01-25-82426
  input: 6d61a0846d5810b4
 output: c5f7b2927706d02a
--
mam4xx hash> exe=nucleation_driver input=vehkamaki2002_fig10.yaml date=2026-01-25-82426
  input: 9bcbbeae7ae3235c
 output: 01073576e12f1ddb
--
mam4xx hash> exe=nucleation_driver input=vehkamaki2002_fig11.yaml date=2026-01-25-82426
  input: db710f050b7803b0
 output: 50fb8960b3bcf20d
--
mam4xx hash> exe=nucleation_driver input=vehkamaki2002_contour.yaml date=2026-01-25-82427
  input: b8df6fbb5c28f70a
 output: e31a8d6e911ad397
--
mam4xx hash> exe=nucleation_driver input=merikanto2007_fig2.yaml date=2026-01-25-82427
  input: ca0e4a7ecf292e1f
 output: cf9385c6f8148ffa
--
mam4xx hash> exe=nucleation_driver input=merikanto2007_fig3.yaml date=2026-01-25-82427
  input: cc9daf20000000a0
 output: 5d6041eea88a9975
--
mam4xx hash> exe=nucleation_driver input=merikanto2007_fig4.yaml date=2026-01-25-82427
  input: e7770a12fddb50f7
 output: d5d0e851d80ef25b
--
mam4xx hash> exe=nucleation_driver input=nucgrowth_case1.yaml date=2026-01-25-82427
  input: 0a5e5a6dab3ec4d4
 output: 5eaca8bf6348a2fd
--
mam4xx hash> exe=nucleation_driver input=nucgrowth_case2.yaml date=2026-01-25-82427
  input: a87149568998e8f0
 output: 6f88769670c7d860
--
mam4xx hash> exe=nucleation_driver input=nucgrowth_case3.yaml date=2026-01-25-82428
  input: c8a56bbe27bea816
 output: d6db62ecf0bce0fe
--
mam4xx hash> exe=nucleation_driver input=binary_nuc_vehk2002.yaml date=2026-01-25-82428
  input: c184e2c7280f70e8
 output: b25de28e177c02c3
--
mam4xx hash> exe=nucleation_driver input=pbl_nuc_wang2008.yaml date=2026-01-25-82428
  input: 73abed0042e5a089
 output: ffec1509a293fdf3
--
mam4xx hash> exe=nucleation_driver input=mer07_veh02_nuc_mosaic_1box.yaml date=2026-01-25-82428
  input: 7f2ce8b7dbbd47c9
 output: f7a455818aebbf59
--
mam4xx hash> exe=calcsize_driver input=adjust_num_sizes_case1.yaml date=2026-01-25-82428
  input: 805818ec211eaf82
 output: c8d89ea7ed0a888e
--
mam4xx hash> exe=calcsize_driver input=adjust_num_sizes_case2.yaml date=2026-01-25-82428
  input: 8057aeaf05a1dc5d
 output: 88640f54cbfc1bd9
--
mam4xx hash> exe=calcsize_driver input=calcsize_e3sm.yaml date=2026-01-25-82428
  input: 53c3001e57bfc54f
 output: 18c821d1f220b6da
--
mam4xx hash> exe=calcsize_driver input=calcsize_sub.yaml date=2026-01-25-82428
  input: ace35c02b13471c4
 output: 73eb86d429b2ff4a
--
mam4xx hash> exe=calcsize_driver input=aitken_accum_exchange_case1.yaml date=2026-01-25-82428
  input: 5143001e57bfc54f
 output: 0000000000000000
--
mam4xx hash> exe=calcsize_driver input=calcsize_compute_dry_volume.yaml date=2026-01-25-82428
  input: b7a965fadfcc10a8
 output: ccfe4db546c0dc31
--
mam4xx hash> exe=calcsize_driver input=stand_modal_aero_calcsize_sub.yaml date=2026-01-25-82429
  input: b383cc14ffaa53f4
 output: dfb0ee036d29e58b
--
mam4xx hash> exe=calcsize_driver input=stand_modal_aero_calcsize_sub_update_ptend.yaml date=2026-01-25-82429
  input: b383cc14ffaa53f4
 output: ae493d952081ff29
--
mam4xx hash> exe=calcsize_driver input=stand_calcsize_aero_model_wetdep_ts_379.yaml date=2026-01-25-82429
  input: 5cba3a3366230ab0
 output: 647e881f0b935b48
--
mam4xx hash> exe=convproc_driver input=update_tendency_final.yaml date=2026-01-25-82429
  input: fe20bc26aca3e7a9
 output: 8fa374f28cb1db9d
--
mam4xx hash> exe=convproc_driver input=compute_column_tendency.yaml date=2026-01-25-82429
  input: 049828fa89a69e33
 output: b0c52c8de484e648
--
mam4xx hash> exe=convproc_driver input=ma_precpevap.yaml date=2026-01-25-82429
  input: 9dad669c716c4c69
 output: bda7d5c28bc5edc1
--
mam4xx hash> exe=convproc_driver input=ma_precpprod.yaml date=2026-01-25-82429
  input: f9863d7d1712b5d9
 output: d58befcd3e1178f4
--
mam4xx hash> exe=convproc_driver input=initialize_dcondt.yaml date=2026-01-25-82430
  input: a7a31c4e95e977a8
 output: 5b23d5f82c5cbb4d
--
mam4xx hash> exe=convproc_driver input=compute_downdraft_mixing_ratio.yaml date=2026-01-25-82430
  input: a9805b3f9336e7a2
 output: db69fc61c32f704e
--
mam4xx hash> exe=convproc_driver input=ma_precpevap_convproc.yaml date=2026-01-25-82430
  input: 15181d13ebe1d49a
 output: 156e93ce67f12212
--
mam4xx hash> exe=convproc_driver input=ma_resuspend_convproc.yaml date=2026-01-25-82430
  input: 9ccf462489892c03
 output: 7779f8598d16d73d
--
mam4xx hash> exe=convproc_driver input=aer_vol_num_hygro.yaml date=2026-01-25-82430
  input: a627d59453b01541
 output: f70dbc15604a9fa9
--
mam4xx hash> exe=convproc_driver input=compute_wup.yaml date=2026-01-25-82430
  input: c40b36b0566ccdb2
 output: 80224025777c85e1
--
mam4xx hash> exe=convproc_driver input=compute_massflux.yaml date=2026-01-25-82430
  input: 0cdf6481a2604b78
 output: 5ee8132ca5aee042
--
mam4xx hash> exe=convproc_driver input=compute_massflux_small.yaml date=2026-01-25-82430
  input: 715d083ac8dac1e9
 output: 4c5dde91ac42da11
--
mam4xx hash> exe=convproc_driver input=compute_ent_det_dp.yaml date=2026-01-25-82431
  input: 2d113fc033bf651e
 output: b87fd1e63b1f6072
--
mam4xx hash> exe=convproc_driver input=compute_midlev_height.yaml date=2026-01-25-82431
  input: f72afb05bf0ec248
 output: 3403b9c9a906df56
--
mam4xx hash> exe=convproc_driver input=initialize_tmr_array_1.yaml date=2026-01-25-82431
  input: 86f4ec2b16d0ded2
 output: 93a327dc4c387a45
--
mam4xx hash> exe=convproc_driver input=initialize_tmr_array_2.yaml date=2026-01-25-82431
  input: 8704ec2b16d0ded2
 output: e4b923de8e959f03
--
mam4xx hash> exe=convproc_driver input=update_qnew_ptend_true.yaml date=2026-01-25-82431
  input: d3a0dc84bdd6cc80
 output: 6c3d3acb7b1b0432
--
mam4xx hash> exe=convproc_driver input=update_qnew_ptend_false.yaml date=2026-01-25-82431
  input: 86ef7d8b0d570631
 output: 5f4c24124ee39b17
--
mam4xx hash> exe=convproc_driver input=compute_wetdep_tend.yaml date=2026-01-25-82431
  input: 3406e002f491373d
 output: 3e4bac98e4c189b0
--
mam4xx hash> exe=convproc_driver input=ma_activate_convproc_54.yaml date=2026-01-25-82431
  input: 2769c8d7b2621d56
 output: 9e6f1b1f390b8ae9
--
mam4xx hash> exe=convproc_driver input=ma_activate_convproc_68.yaml date=2026-01-25-82431
  input: 276fc8d7b2621d56
 output: 9726305462f32380
--
mam4xx hash> exe=convproc_driver input=compute_activation_tend_do_act_true.yaml date=2026-01-25-82432
  input: 92981e4e490e12c1
 output: 944192d83ca5f09d
--
mam4xx hash> exe=convproc_driver input=compute_activation_tend_do_act_false.yaml date=2026-01-25-82432
  input: 156927dc8b15e869
 output: 9eeb40f75be097d4
--
mam4xx hash> exe=convproc_driver input=compute_updraft_mixing_ratio.yaml date=2026-01-25-82432
  input: 84eb458982325c27
 output: d7abd28a0c904212
--
mam4xx hash> exe=convproc_driver input=ma_convproc_tend.yaml date=2026-01-25-82432
  input: 312a326030986c0a
 output: f6239f26967dc5a8
--
mam4xx hash> exe=convproc_driver input=ma_convproc_dp_intr.yaml date=2026-01-25-82432
  input: ced5e7ae80ec7ef9
 output: 732954e9c983f9c5
--
mam4xx hash> exe=convproc_driver input=compute_tendencies.yaml date=2026-01-25-82432
  input: df85863f12616fc1
 output: d2b5b768da498ece
--
mam4xx hash> exe=coagulation_driver input=coag_1subarea.yaml date=2026-01-25-82432
  input: c50584bf2b9e7cdf
 output: b9b318145b850667
--
mam4xx hash> exe=coagulation_driver input=getcoags.yaml date=2026-01-25-82432
  input: b0785d9b1edcf5b7
 output: ef13c9a014215eae
--
mam4xx hash> exe=coagulation_driver input=getcoags_wrapper_f.yaml date=2026-01-25-82433
  input: 7f3c8bf8f9767759
 output: f370da91c0510486
--
mam4xx hash> exe=coagulation_driver input=coag_aer_update.yaml date=2026-01-25-82433
  input: c611a96ecd0a6fda
 output: c25ad95143f08c09
--
mam4xx hash> exe=coagulation_driver input=coag_num_update.yaml date=2026-01-25-82433
  input: 70071138089dd017
 output: cd391832178080f2
--
mam4xx hash> exe=aging_driver input=pcarbon_aging_frac.yaml date=2026-01-25-82433
  input: 8ea1e9de39ee41b4
 output: d39bb1c52297edea
--
mam4xx hash> exe=aging_driver input=pcarbon_aging_1subarea.yaml date=2026-01-25-82433
  input: ddd1e739155d1369
 output: 2de12bc58ad3ebde
--
mam4xx hash> exe=rename_driver input=rename_1subarea_ts_1111_iscldy_false.yaml date=2026-01-25-82433
  input: f5b1aac926f4c12e
 output: 8bd16f9d94d42043
--
mam4xx hash> exe=rename_driver input=rename_1subarea_ts_1111_iscldy_true.yaml date=2026-01-25-82433
  input: 9a6bf8ba6448093e
 output: 22aa1b53ad9e1fe1
--
mam4xx hash> exe=rename_driver input=find_renaming_pairs_ts_1111.yaml date=2026-01-25-82433
  input: 8000000000000000
 output: 063fe8735ec72ba1
--
mam4xx hash> exe=rename_driver input=compute_dryvol_change_in_src_mode_ts_1111.yaml date=2026-01-25-82433
  input: 2e94084c44218dfb
 output: 7a7238f866807fd4
--
mam4xx hash> exe=rename_driver input=rename_1subarea_epsilon.yaml date=2026-01-25-82433
  input: bfecb78e549c2103
 output: 982b27ac0142f40e
--
mam4xx hash> exe=nucleate_ice_driver input=nucleate_ice_cam_calc_merged.yaml date=2026-01-25-82433
  input: 98ac83e1c2095176
 output: 8935d4c1a0b68ec8
--
mam4xx hash> exe=nucleate_ice_driver input=hetero_merged.yaml date=2026-01-25-82434
  input: be49e93a10a558a1
 output: be2af037c78a5c9b
--
mam4xx hash> exe=nucleate_ice_driver input=hf_merged.yaml date=2026-01-25-82434
  input: 007e711f15e8f72f
 output: 7fb4386583a24778
--
mam4xx hash> exe=nucleate_ice_driver input=nucleati_merged.yaml date=2026-01-25-82434
  input: 41bb828e9e368032
 output: 070205756c7b33e0
--
mam4xx hash> exe=nucleate_ice_driver input=nucleate_ice.yaml date=2026-01-25-82434
  input: 1616545c02dd66e8
 output: 3d6cac17078eadd4
--
mam4xx hash> exe=hetfrz_driver input=get_reynolds_num.yaml date=2026-01-25-82434
  input: cb39b6a8fc9a219c
 output: 19508038406ed692
--
mam4xx hash> exe=hetfrz_driver input=get_temperature_diff.yaml date=2026-01-25-82434
  input: b6d8074c41cabd58
 output: 132117acc5eec4c4
--
mam4xx hash> exe=hetfrz_driver input=get_air_viscosity.yaml date=2026-01-25-82434
  input: 0ea4000000000000
 output: ea8d012d212a5816
--
mam4xx hash> exe=hetfrz_driver input=get_latent_heat_vapor.yaml date=2026-01-25-82434
  input: 0ea4000000000000
 output: a639fa3d7013a921
--
mam4xx hash> exe=hetfrz_driver input=calculate_collkernel_sub.yaml date=2026-01-25-82434
  input: e2c8cece3c319300
 output: f564f2f6c3795beb
--
mam4xx hash> exe=hetfrz_driver input=collkernel.yaml date=2026-01-25-82435
  input: 5cbb3da26bfaff49
 output: 23dc3432e24f235a
--
mam4xx hash> exe=hetfrz_driver input=get_Aimm.yaml date=2026-01-25-82435
  input: f51897c39c5761b2
 output: 40c8888f7508e9ea
--
mam4xx hash> exe=hetfrz_driver input=get_dg0imm.yaml date=2026-01-25-82436
  input: 7e6a9930be0ded29
 output: 3dc70732b86e4797
--
mam4xx hash> exe=hetfrz_driver input=get_form_factor.yaml date=2026-01-25-82436
  input: c0de66666666667f
 output: af85a8a0b8f53ccf
--
mam4xx hash> exe=hetfrz_driver input=calculate_hetfrz_contact_nucleation.yaml date=2026-01-25-82436
  input: 73c4a3fceb5b8998
 output: 7cf350bde8110e4b
--
mam4xx hash> exe=hetfrz_driver input=calculate_hetfrz_deposition_nucleation.yaml date=2026-01-25-82436
  input: b47c0f7c19a5ddc9
 output: 7e2bb05770000000
--
mam4xx hash> exe=hetfrz_driver input=calculate_vars_for_pdf_imm.yaml date=2026-01-25-82436
  input: 0000000000000000
 output: 2c7ff4af2d73477c
--
mam4xx hash> exe=hetfrz_driver input=calculate_hetfrz_immersion_nucleation.yaml date=2026-01-25-82436
  input: dfa4813bf2701804
 output: 8026000000000000
--
mam4xx hash> exe=hetfrz_driver input=calculate_water_activity.yaml date=2026-01-25-82436
  input: 42c036f7a0b5ed8d
 output: bfd10842e230dfa5
--
mam4xx hash> exe=hetfrz_driver input=calculate_rgimm_and_determine_spec_flag.yaml date=2026-01-25-82436
  input: 7e066304ab606b7c
 output: 833b78e9fe53784e
--
mam4xx hash> exe=hetfrz_driver input=calculate_interstitial_aer_num.yaml date=2026-01-25-82436
  input: b0f4276cd29131ef
 output: 448b3fe6d18d808b
--
mam4xx hash> exe=hetfrz_driver input=calculate_cloudborne_aer_num.yaml date=2026-01-25-82436
  input: bc0cc6cfe9b7bf34
 output: fce7c126bd167c16
--
mam4xx hash> exe=hetfrz_driver input=get_aer_radius.yaml date=2026-01-25-82436
  input: 43d8bce2ca20a042
 output: 13688c362a7e5c88
--
mam4xx hash> exe=hetfrz_driver input=calculate_mass_mean_radius.yaml date=2026-01-25-82436
  input: be1ea2da5332acfb
 output: bb80429d467dafd5
--
mam4xx hash> exe=hetfrz_driver input=calculate_coated_fraction.yaml date=2026-01-25-82437
  input: 29ed5efd4d857cc5
 output: 9cfe97800009ab05
--
mam4xx hash> exe=hetfrz_driver input=calculate_vars_for_water_activity.yaml date=2026-01-25-82437
  input: b945a9f576a4a20b
 output: 8582e0b536311a24
--
mam4xx hash> exe=hetfrz_driver input=hetfrz_rates_1box.yaml date=2026-01-25-82438
  input: 1b2ca41a5915fb0b
 output: 6d56c56b233f31f2
--
mam4xx hash> exe=hetfrz_driver input=hetfrz_classnuc_calc.yaml date=2026-01-25-82438
  input: 47664ce50701bbc0
 output: b229f787d5f599ea
--
mam4xx hash> exe=aero_model_driver input=calc_1_impact_rate_ts_0.yaml date=2026-01-25-82438
  input: 806c6e9d55c6fc5b
 output: 7ebdb6b46279efbe
--
mam4xx hash> exe=aero_model_driver input=modal_aero_bcscavcoef_get_ts_355.yaml date=2026-01-25-82438
  input: ea18272de7c2948a
 output: fd322afa0da6d2aa
--
mam4xx hash> exe=aero_model_driver input=modal_aero_bcscavcoef_init_ts_0.yaml date=2026-01-25-82438
  input: 7f4f9f0b7e7a7e4c
 output: 07c19287a043a183
--
mam4xx hash> exe=aero_model_driver input=aero_model_wetdep_ts_379.yaml date=2026-01-25-82439
  input: 109fce2dddf1dc48
 output: b9fcd23ab2e0cca5
--
mam4xx hash> exe=aero_model_driver input=stand_aero_model_calcsize_water_uptake_dr_ts_379.yaml date=2026-01-25-82439
  input: 5cba3a3366230ab0
 output: dd3b8c07b6b011f4
--
mam4xx hash> exe=aero_model_driver input=baseline_aero_model_wetdep_ts_379.yaml date=2026-01-25-82439
  input: 109fce2dddf1dc48
 output: b9fcd23ab2e0cca5
--
mam4xx hash> exe=wetdep_driver input=clddiag.yaml date=2026-01-25-82439
  input: 10c1f456406c54be
 output: 0331b7fbe55329b2
--
mam4xx hash> exe=wetdep_driver input=wetdep_resusp_nonlinear_130.yaml date=2026-01-25-82439
  input: 7af75b9f3b68af53
 output: 3cf29f451b76d800
--
mam4xx hash> exe=wetdep_driver input=wetdep_resusp_nonlinear_230.yaml date=2026-01-25-82439
  input: 7dd316667e5b8a01
 output: 40229cc2b9d42024
--
mam4xx hash> exe=wetdep_driver input=wetdep_resusp_noprecip_130.yaml date=2026-01-25-82439
  input: f9043de0f84c0902
 output: 0000000000000000
--
mam4xx hash> exe=wetdep_driver input=wetdep_resusp_noprecip_230.yaml date=2026-01-25-82439
  input: 382f88875c90bafb
 output: 3f1ecaa66444b1f9
--
mam4xx hash> exe=wetdep_driver input=wetdep_scavenging_true.yaml date=2026-01-25-82439
  input: 3acdc6eecd78c781
 output: 7cbe07be00028112
--
mam4xx hash> exe=wetdep_driver input=wetdep_scavenging_false.yaml date=2026-01-25-82440
  input: 39c58d96626b5479
 output: 3c1aa4036d0b5021
--
mam4xx hash> exe=wetdep_driver input=compute_evap_frac.yaml date=2026-01-25-82440
  input: fe15982037d01c32
 output: 3f8111336e9a2486
--
mam4xx hash> exe=wetdep_driver input=rain_mix_ratio.yaml date=2026-01-25-82440
  input: 0087d6521b92d6e2
 output: 3eec58c93222bea1
--
mam4xx hash> exe=wetdep_driver input=calculate_cloudy_volume.yaml date=2026-01-25-82440
  input: 1e72720254eedea6
 output: 2d95631dc9e13dcd
--
mam4xx hash> exe=wetdep_driver input=local_precip_production.yaml date=2026-01-25-82440
  input: fd2b4a02ba44fe64
 output: 3eedf572c4ce9efb
--
mam4xx hash> exe=wetdep_driver input=wetdep_resusp_130.yaml date=2026-01-25-82440
  input: baab9d35a7c647df
 output: 3ce7669cb0ff8000
--
mam4xx hash> exe=wetdep_driver input=wetdep_resusp_230.yaml date=2026-01-25-82440
  input: bd8757fceab9228d
 output: 40176469433fd08c
--
mam4xx hash> exe=wetdep_driver input=wetdepa_v2_0.yaml date=2026-01-25-82440
  input: 9dc51fa74b6b2cab
 output: 804bbfd061ce22cb
--
mam4xx hash> exe=wetdep_driver input=wetdepa_v2_130.yaml date=2026-01-25-82440
  input: ac600e38c3a42218
 output: 4e8584db6a58e1f6
--
mam4xx hash> exe=wetdep_driver input=wetdepa_v2_230.yaml date=2026-01-25-82440
  input: dac0a4a1900f6269
 output: 0000000000000000
--
mam4xx hash> exe=drydep_driver input=gravit_settling_velocity.yaml date=2026-01-25-82440
  input: 3d43c7dffe01f8fe
 output: 3e81b96b64b6e0a7
--
mam4xx hash> exe=drydep_driver input=air_dynamic_viscosity.yaml date=2026-01-25-82441
  input: 4071126666666666
 output: 3ef20b21f42b1353
--
mam4xx hash> exe=drydep_driver input=air_kinematic_viscosity.yaml date=2026-01-25-82441
  input: 81697c6666666666
 output: 3eec4b66def5857f
--
mam4xx hash> exe=drydep_driver input=radius_for_moment.yaml date=2026-01-25-82441
  input: fd75bfad2999567e
 output: 3eb0c6f7a0b5ed8d
--
mam4xx hash> exe=drydep_driver input=schmidt_number.yaml date=2026-01-25-82441
  input: 3d45e248428ef0c8
 output: 407f1a0d4d5ab526
--
mam4xx hash> exe=drydep_driver input=slip_correction_factor.yaml date=2026-01-25-82441
  input: fecb0a55a7d24180
 output: 3ff01211a222c828
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_3_imnt_0_imode_No_mode.yaml date=2026-01-25-82441
  input: 3d18c89c213c3037
 output: 7e465cade33cbde1
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_4_imnt_3_imode_No_mode.yaml date=2026-01-25-82441
  input: 7d3484ff2608900e
 output: 7e4932ea5080fbea
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_1_imnt_0_imode_1.yaml date=2026-01-25-82441
  input: 3c5471539b2e6020
 output: 7e4df74244c57807
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_1_imnt_0_imode_2.yaml date=2026-01-25-82441
  input: 3bf793fda1b51c11
 output: 7e7d9ab4d6951666
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_1_imnt_0_imode_3.yaml date=2026-01-25-82441
  input: 3cf262f1950603d1
 output: 7e42637ed3b3f9cf
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_1_imnt_0_imode_4.yaml date=2026-01-25-82441
  input: 3c0df369ce916f02
 output: 7e6e0bc1a9fcafd0
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_2_imnt_3_imode_1.yaml date=2026-01-25-82442
  input: 7c842f055cb3f577
 output: 7e38076f62296413
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_2_imnt_3_imode_2.yaml date=2026-01-25-82442
  input: 7c12a2fd8584c669
 output: 7e67963e0705c6e3
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_2_imnt_3_imode_3.yaml date=2026-01-25-82442
  input: 7d2978667d089cda
 output: 7e49ab0f0a729f65
--
mam4xx hash> exe=drydep_driver input=modal_aero_turb_drydep_velocity_input_ts_1393_jvlc_2_imnt_3_imode_4.yaml date=2026-01-25-82442
  input: 7c2bac30767848f3
 output: 7e5a5215a4cf38f2
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_3_imnt_0_imode_No_mode.yaml date=2026-01-25-82442
  input: 2771923ebaa53fc4
 output: d97e99dfdb386011
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_4_imnt_3_imode_No_mode.yaml date=2026-01-25-82442
  input: 6779923ebaa53fc4
 output: de77ffccba29e8fd
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_1_imnt_0_imode_1.yaml date=2026-01-25-82442
  input: 11661156952fb493
 output: b5ae9ff7d73a6fed
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_1_imnt_0_imode_2.yaml date=2026-01-25-82442
  input: 07e2a44a0475405a
 output: abd08b61ddfdf75c
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_1_imnt_0_imode_3.yaml date=2026-01-25-82442
  input: 2289dcf14f6786ab
 output: cc2bb1988ab1148e
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_1_imnt_0_imode_4.yaml date=2026-01-25-82442
  input: 0bea389eb4e625dc
 output: b00e4cec199660d2
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_2_imnt_3_imode_1.yaml date=2026-01-25-82442
  input: 516e1156952fb493
 output: be2c947eb01d7cb3
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_2_imnt_3_imode_2.yaml date=2026-01-25-82442
  input: 47eaa44a0475405a
 output: b06842e6ceb9ef62
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_2_imnt_3_imode_3.yaml date=2026-01-25-82443
  input: 6291dcf14f6786ab
 output: d7356cd297c89649
--
mam4xx hash> exe=drydep_driver input=modal_aero_gravit_settling_velocity_input_ts_1393_jvlc_2_imnt_3_imode_4.yaml date=2026-01-25-82443
  input: 4bf2389eb4e625dc
 output: b511367dde6c0499
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_3_imnt_0_imode_No_mode.yaml date=2026-01-25-82443
  input: 2895b9a35ddf4690
 output: f1ddced80eefa7c6
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_4_imnt_3_imode_No_mode.yaml date=2026-01-25-82443
  input: 689db9a35ddf4690
 output: fbbfb48b3440326a
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_1_imnt_0_imode_1.yaml date=2026-01-25-82443
  input: 128a38bb3869bb5f
 output: aaca7bb53c48825b
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_1_imnt_0_imode_2.yaml date=2026-01-25-82443
  input: 0906cbaea7af4726
 output: 9770cb7cecdbe0f4
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_1_imnt_0_imode_3.yaml date=2026-01-25-82443
  input: 23ae0455f2a18d77
 output: d752dadeb0a3ad22
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_1_imnt_0_imode_4.yaml date=2026-01-25-82443
  input: 0d0e600358202ca8
 output: 9fd11271177c2643
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_2_imnt_3_imode_1.yaml date=2026-01-25-82443
  input: 529238bb3869bb5f
 output: bb88b73f84663ca7
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_2_imnt_3_imode_2.yaml date=2026-01-25-82443
  input: 490ecbaea7af4726
 output: a0772715288e5b52
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_2_imnt_3_imode_3.yaml date=2026-01-25-82444
  input: 63b60455f2a18d77
 output: ed3e836e34dfe27d
--
mam4xx hash> exe=drydep_driver input=modal_aero_depvel_part_input_ts_1393_jvlc_2_imnt_3_imode_4.yaml date=2026-01-25-82444
  input: 4d16600358202ca8
 output: a9ad7322ad2b8744
--
mam4xx hash> exe=drydep_driver input=calcram_input_ts_1400.yaml date=2026-01-25-82444
  input: 02c60fb75c2f533e
 output: 802ba4529f9454cc
--
mam4xx hash> exe=drydep_driver input=calcram_input_ts_1401.yaml date=2026-01-25-82444
  input: 02c42ab268d01590
 output: 802ba6ad5aa02e5a
--
mam4xx hash> exe=drydep_driver input=calcram_input_ts_1402.yaml date=2026-01-25-82444
  input: 02c2c2ae3ef42935
 output: 802bb416aa9c1423
--
mam4xx hash> exe=drydep_driver input=calcram_input_ts_1403.yaml date=2026-01-25-82444
  input: 02c164573241dc7b
 output: 802bbd06b8851223
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1381.yaml date=2026-01-25-82444
  input: e87b45ab310ede86
 output: 8815739c20ee79fb
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1382.yaml date=2026-01-25-82444
  input: 6981b780a4d06fca
 output: 03b365ee193ccdcf
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1383.yaml date=2026-01-25-82444
  input: 678e6ca90a21057c
 output: 7d3b771fb0278a3f
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1384.yaml date=2026-01-25-82444
  input: 6790756f6fbc86de
 output: 791c6c1cf4f5a283
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1385.yaml date=2026-01-25-82445
  input: 5ad288f3d7e986a5
 output: 6ad1944c1b459fb7
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1386.yaml date=2026-01-25-82445
  input: 5848f632f033e1a7
 output: 6d6407f7fd56e485
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1387.yaml date=2026-01-25-82445
  input: 539752aa7a6f72eb
 output: 7a0202b0154260d1
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1388.yaml date=2026-01-25-82445
  input: 4d1aaa6bf3500793
 output: f76a135f280eaac4
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1389.yaml date=2026-01-25-82445
  input: 4f0403ad5228d5e3
 output: fef9ead768cc6adb
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1390.yaml date=2026-01-25-82445
  input: 4f04f81a7d892632
 output: b26f6b384ec94b27
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1391.yaml date=2026-01-25-82445
  input: b7ee84caf8a796d3
 output: 5139d5638c5fcca5
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_ts_1392.yaml date=2026-01-25-82446
  input: 4c46070cc6f90162
 output: a7c4290ba90fd53e
--
mam4xx hash> exe=drydep_driver input=aero_model_drydep_input_compute_tendencies.yaml date=2026-01-25-82446
  input: c438d59aef74c739
 output: 8e6da38d9a8e4c1a
--
mam4xx hash> exe=gas_chem_driver input=indprd_ts_355.yaml date=2026-01-25-82446
  input: 1f4391be919cc699
 output: e56e25d4f509261e
--
mam4xx hash> exe=gas_chem_driver input=linmat_ts_355.yaml date=2026-01-25-82446
  input: b58314733b54625a
 output: 79943e0f4f9dade9
--
mam4xx hash> exe=gas_chem_driver input=nlnmat_ts_355.yaml date=2026-01-25-82446
  input: b8c67265c82ee8d6
 output: e5a2e97088b6f2fa
--
mam4xx hash> exe=gas_chem_driver input=imp_prod_loss_ts_355.yaml date=2026-01-25-82446
  input: b58314733b54625a
 output: 6a810b8fae92a4b5
--
mam4xx hash> exe=gas_chem_driver input=newton_raphson_iter_ts_355.yaml date=2026-01-25-82446
  input: de511bab879746fe
 output: 4e4cfd0452d61971
--
mam4xx hash> exe=gas_chem_driver input=imp_sol_ts_355.yaml date=2026-01-25-82446
  input: 22a4585d0b941799
 output: 81969ffac3a7923d
--
mam4xx hash> exe=gas_chem_driver input=adjrxt_ts_1400.yaml date=2026-01-25-82446
  input: 8d272551e72414c8
 output: 389e254f7cb5b0c2
--
mam4xx hash> exe=gas_chem_driver input=setrxt_ts_1400.yaml date=2026-01-25-82447
  input: 8c22aae3d79603e3
 output: bee401dd8921f09e
--
mam4xx hash> exe=gas_chem_driver input=usrrxt_merged.yaml date=2026-01-25-82447
  input: fa4dce9aa8e949cc
 output: 5fafccdbcf0db677
--
mam4xx hash> exe=gas_chem_driver input=usrrxt_ts_1416.yaml date=2026-01-25-82447
  input: 5a039ef88a5a4213
 output: 32cebdf6f74fb4a0
--
mam4xx hash> exe=ndrop_driver input=loadaertype1_merged.yaml date=2026-01-25-82447
  input: c013826057fca18d
 output: c2bcd0aa98d9ae2a
--
mam4xx hash> exe=ndrop_driver input=loadaertype2_merged.yaml date=2026-01-25-82447
  input: 49127d31b5598423
 output: b5aa48417cbf8055
--
mam4xx hash> exe=ndrop_driver input=loadaertype3_merged.yaml date=2026-01-25-82447
  input: d50ecec0e41b0b41
 output: 872ee46c05903581
--
mam4xx hash> exe=ndrop_driver input=activate_modal_ts_1400_type1.yaml date=2026-01-25-82447
  input: fb12f271495c3e1c
 output: 3cf7d0589cb91b8a
--
mam4xx hash> exe=ndrop_driver input=explmix1417_actmm_merged.yaml date=2026-01-25-82447
  input: febc88936a5c1358
 output: 9f678a531a130c98
--
mam4xx hash> exe=ndrop_driver input=explmix1417_mm_merged.yaml date=2026-01-25-82447
  input: 40ccf2fbee404ff9
 output: 611cccf3bed3fda5
--
mam4xx hash> exe=ndrop_driver input=stand_get_activate_frac_ts_1417.yaml date=2026-01-25-82447
  input: adebc76afc7a878b
 output: 8cc85181b976f975
--
mam4xx hash> exe=ndrop_driver input=activate_modal_ts_1417_type2.yaml date=2026-01-25-82448
  input: fb44cc11b851f9f0
 output: 3c90b8f05707fbd9
--
mam4xx hash> exe=ndrop_driver input=stand_activate_modal_ts_1417_type2.yaml date=2026-01-25-82448
  input: fb44cc11b851f9f0
 output: 3c90b8f05707fbd9
--
mam4xx hash> exe=ndrop_driver input=activate_modal_merged.yaml date=2026-01-25-82448
  input: 9faaffa467ddfd0f
 output: c8adab6989ddbe8e
--
mam4xx hash> exe=ndrop_driver input=ccncalc_merged.yaml date=2026-01-25-82448
  input: 305cfc748a7b1f64
 output: 1bb254f1207baa6c
--
mam4xx hash> exe=ndrop_driver input=ccncalc_loop_ts_1417.yaml date=2026-01-25-82448
  input: 8b1883428ab1bdcd
 output: 05b8fb9c7635213a
--
mam4xx hash> exe=ndrop_driver input=ccncalc_ts_1400.yaml date=2026-01-25-82448
  input: 3ef3b154baca3ab7
 output: 8179031f09972a97
--
mam4xx hash> exe=ndrop_driver input=maxsattype1_merged.yaml date=2026-01-25-82448
  input: 40494ed31fc07e34
 output: 3ab028d2346e4707
--
mam4xx hash> exe=ndrop_driver input=maxsattype2_merged.yaml date=2026-01-25-82448
  input: 30b5bf482389d8d4
 output: b966b05bed7a153e
--
mam4xx hash> exe=ndrop_driver input=update_from_newcld_iact0_merged.yaml date=2026-01-25-82448
  input: 8d39696456e48264
 output: e53bf0f7fad49f12
--
mam4xx hash> exe=ndrop_driver input=update_from_newcld_iact1_merged.yaml date=2026-01-25-82448
  input: baaccace1f34eea4
 output: b265c9481c6598f5
--
mam4xx hash> exe=ndrop_driver input=update_from_newcld_iact2_merged.yaml date=2026-01-25-82448
  input: a50e88de9e462827
 output: ab5b56986ff18768
--
mam4xx hash> exe=ndrop_driver input=update_from_cldn_profile_iact1_merged.yaml date=2026-01-25-82449
  input: 562b6bdef35f5bd7
 output: 83d409c1be755d30
--
mam4xx hash> exe=ndrop_driver input=update_from_cldn_profile_iact2_merged.yaml date=2026-01-25-82449
  input: 563bf35c972d00ac
 output: c558e96baeb7e086
--
mam4xx hash> exe=ndrop_driver input=stand_dropmixnuc_ts_1407.yaml date=2026-01-25-82449
  input: 7a39951d931a9b8d
 output: 6c68d67686b5b19d
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1400.yaml date=2026-01-25-82449
  input: f294979264dc8728
 output: cde66a882b47b3fd
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1401.yaml date=2026-01-25-82449
  input: c1b190b1e7be02a4
 output: ee72a55e4be6d2ab
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1402.yaml date=2026-01-25-82449
  input: d8591c337bd1f7ba
 output: 66a9f3a9cb5cded2
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1403.yaml date=2026-01-25-82449
  input: 9d47f577757ff92c
 output: 84fb9f20ffa362a8
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1404.yaml date=2026-01-25-82449
  input: 2e57fd5c418954c5
 output: 46b25c6da867be12
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1405.yaml date=2026-01-25-82450
  input: d62cba3ed456911c
 output: 277db85719b227ef
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1406.yaml date=2026-01-25-82450
  input: c0c84ede76924028
 output: ad6def474a0a4afc
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1407.yaml date=2026-01-25-82450
  input: 7a39951d931a9b8d
 output: 6c68d67686b5b19d
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1408.yaml date=2026-01-25-82450
  input: d102664b3ce6cbb4
 output: 6fe33cb1930db71c
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1409.yaml date=2026-01-25-82450
  input: df1f611fbc30e878
 output: 21bfa5e13822a81c
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1410.yaml date=2026-01-25-82450
  input: cd924c291c749b68
 output: 9d6ef48251ceb6a6
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1411.yaml date=2026-01-25-82450
  input: ae568e17218bb4ba
 output: 0a9756c1f8107f19
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1412.yaml date=2026-01-25-82451
  input: 8f4fda5bcd3a5e70
 output: ed0f1314429f1949
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1413.yaml date=2026-01-25-82451
  input: 4f8481d6ada3804d
 output: d36301a2f506baa2
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1414.yaml date=2026-01-25-82451
  input: 9b8b884329293eb7
 output: b407028ad82ab233
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1415.yaml date=2026-01-25-82451
  input: b7a30ce019685762
 output: efbb27070173287b
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1416.yaml date=2026-01-25-82451
  input: 6d11ff8498315d32
 output: 21d513b8fc5e9883
--
mam4xx hash> exe=ndrop_driver input=dropmixnuc_ts_1417.yaml date=2026-01-25-82451
  input: cf8901537bd7fc19
 output: 143baa6d78d188e3
--
mam4xx hash> exe=ndrop_driver input=update_from_explmix_merged.yaml date=2026-01-25-82452
  input: def7a4ba9339ebdb
 output: 22df3cec1ea05dd7
--
mam4xx hash> exe=water_uptake_driver input=find_real_solution.yaml date=2026-01-25-82452
  input: fa3aef93e82a3c92
 output: 7fc8ab74d9aceb41
--
mam4xx hash> exe=water_uptake_driver input=makoh_quartic.yaml date=2026-01-25-82452
  input: bda3c0c9a38e5157
 output: 76e25491c2bc8835
--
mam4xx hash> exe=water_uptake_driver input=modal_aero_kohler.yaml date=2026-01-25-82452
  input: be2efc253313c685
 output: 3e817ac09df997fc
--
mam4xx hash> exe=water_uptake_driver input=modal_aero_water_uptake_rh_clearair.yaml date=2026-01-25-82453
  input: 409318a970ffb515
 output: 3fe6b6f4cec4b4c9
--
mam4xx hash> exe=water_uptake_driver input=modal_aero_water_uptake_wetaer.yaml date=2026-01-25-82453
  input: 658e275ed569c79a
 output: c6ba3caf08563ead
--
mam4xx hash> exe=water_uptake_driver input=modal_aero_water_uptake_dryaer.yaml date=2026-01-25-82453
  input: 712a54d8386c6120
 output: df8abbde8c41de39
--
mam4xx hash> exe=water_uptake_driver input=modal_aero_water_uptake_dr.yaml date=2026-01-25-82453
  input: 2221c6476f309da1
 output: efedcd1317f19d4c
--
mam4xx hash> exe=water_uptake_driver input=modal_aero_water_uptake_dr_wetdens.yaml date=2026-01-25-82453
  input: 24657675260d11f7
 output: f2343129e41db40d
--
mam4xx hash> exe=water_uptake_driver input=water_uptake_wetdens.yaml date=2026-01-25-82453
  input: 1320a97224df02e3
 output: 0246172cd111c70a
--
mam4xx hash> exe=water_uptake_driver input=modal_aero_water_uptake_dr_ts_355_col.yaml date=2026-01-25-82453
  input: c8742bf0373a64d3
 output: 94447f85e0587580
--
mam4xx hash> exe=mo_photo_driver input=stand_cloud_mod_ts_355.yaml date=2026-01-25-82453
  input: 8f30fe141cafeaf5
 output: f3ce06004162d2fa
--
mam4xx hash> exe=mo_photo_driver input=find_index_ts_355.yaml date=2026-01-25-82453
  input: 47f0f93af3fc918c
 output: 401c000000000000
--
mam4xx hash> exe=mo_photo_driver input=cloud_mod_ts_353.yaml date=2026-01-25-82453
  input: 92255c3877fb5975
 output: e7933882d88182a5
--
mam4xx hash> exe=mo_photo_driver input=stand_synthetic_calc_sum_wght_ts_355.yaml date=2026-01-25-82453
  input: fff352ed8142f8b4
 output: bc541597d78dc8cb
--
mam4xx hash> exe=mo_photo_driver input=stand_synthetic_interpolate_rsf_ts_355.yaml date=2026-01-25-82454
  input: 9b843ae4b02e68c0
 output: 46f8cdff2f698dd5
--
mam4xx hash> exe=mo_photo_driver input=stand_synthetic_jlong_ts_355.yaml date=2026-01-25-82454
  input: f82b674e42912997
 output: fe0f4358c8770796
--
mam4xx hash> exe=mo_photo_driver input=stand_synthetic_table_photo_ts_355.yaml date=2026-01-25-82454
  input: 9855412c2487620e
 output: 495c547537691d0b
--
mam4xx hash> exe=mo_photo_driver input=set_ub_col_ts_355.yaml date=2026-01-25-82454
  input: d2bce90ddbe72703
 output: 3521ed171ff632bd
--
mam4xx hash> exe=lin_strat_chem_driver input=lin_strat_chem_solve_ts_1415.yaml date=2026-01-25-82454
  input: f7d4ed704a13f64b
 output: 38dd74aa42be000f
--
mam4xx hash> exe=lin_strat_chem_driver input=lin_strat_sfcsink_ts_1415_multicol.yaml date=2026-01-25-82454
  input: 004430b2521cf5d4
 output: 5cb8c8de68936b49
--
mam4xx hash> exe=lin_strat_chem_driver input=lin_strat_sfcsinkmulticol_merged.yaml date=2026-01-25-82454
  input: 03e04af221aa4ad6
 output: 27a8d3e7abb87535
--
mam4xx hash> exe=lin_strat_chem_driver input=lin_strat_chem_solve_merged.yaml date=2026-01-25-82454
  input: 74e05b7d55934de7
 output: 49c95876c9dae84a
--
mam4xx hash> exe=lin_strat_chem_driver input=lin_strat_chem_solve_ts_1415_multicol.yaml date=2026-01-25-82454
  input: aeedc00889b45049
 output: 80dd5f817b941630
--
mam4xx hash> exe=lin_strat_chem_driver input=lin_strat_chem_solvemulticol_merged.yaml date=2026-01-25-82455
  input: 2ac1f395d27f582b
 output: 198c86525de899c2
--
mam4xx hash> exe=mo_chm_diags_driver input=het_diags_ts_355.yaml date=2026-01-25-82455
  input: ea2b2b4e09b62229
 output: fff2e88b69f5265e
--
mam4xx hash> exe=mo_chm_diags_driver input=chm_diags_ts_355.yaml date=2026-01-25-82455
  input: 1bc79e15f4ac4499
 output: 4dc5bda587f361f8
--
mam4xx hash> exe=mo_drydep_driver input=calculate_aerodynamic_and_quasilaminar_resistance.yaml date=2026-01-25-82455
  input: 783cca47eb2e1ea6
 output: 8e2e95a7229353ce
--
mam4xx hash> exe=mo_drydep_driver input=calculate_obukhov_length.yaml date=2026-01-25-82455
  input: 597aac16f10cea53
 output: c5ac93f85737c1e8
--
mam4xx hash> exe=mo_drydep_driver input=calculate_resistance_rclx.yaml date=2026-01-25-82455
  input: b13400c39cfadf07
 output: b3bd33898d46958e
--
mam4xx hash> exe=mo_drydep_driver input=calculate_resistance_rgsx_and_rsmx.yaml date=2026-01-25-82455
  input: 6952efbd4adbc98c
 output: 6c881ca95493e0f1
--
mam4xx hash> exe=mo_drydep_driver input=calculate_resistance_rlux.yaml date=2026-01-25-82456
  input: 4973455d77c9b868
 output: d27c7ca7c9182e4d
--
mam4xx hash> exe=mo_drydep_driver input=calculate_ustar_over_water.yaml date=2026-01-25-82456
  input: df83932dd85372e8
 output: 661c7870e54dd5db
--
mam4xx hash> exe=mo_drydep_driver input=calculate_ustar.yaml date=2026-01-25-82456
  input: 3554ffb6a584cbbb
 output: b0cf69290dc11d73
--
mam4xx hash> exe=mo_drydep_driver input=calculate_uustar.yaml date=2026-01-25-82456
  input: 6c3b3ef69014dd9d
 output: ff3e178c7ca1aa9d
--
mam4xx hash> exe=mo_drydep_driver input=drydep_xactive.yaml date=2026-01-25-82456
  input: a5bbb1f013bf349e
 output: d95f2900fee97130
--
mam4xx hash> exe=mo_drydep_driver input=calculate_gas_drydep_vlc_and_flux.yaml date=2026-01-25-82456
  input: 06e78a8ab8ea4d4d
 output: d085df0b0851f223
--
mam4xx hash> exe=mo_drydep_driver input=find_season_index.yaml date=2026-01-25-82456
  input: eebae92a0a4d2841
 output: e000000000000000
--
mam4xx hash> exe=setext_driver input=extfrc_set_ts_355.yaml date=2026-01-25-82456
  input: 4cba3690a6c703bf
 output: 9592f7b0f890aee0
--
mam4xx hash> exe=sethet_driver input=calc_het_rates_merged.yaml date=2026-01-25-82456
  input: 0ca323a32dd98b75
 output: f035d18616a1c4d2
--
mam4xx hash> exe=sethet_driver input=calc_precip_rescale_merged.yaml date=2026-01-25-82457
  input: 4e0314a651dcb9aa
 output: e8b14ddcf4e9c0c5
--
mam4xx hash> exe=sethet_driver input=find_ktop_merged.yaml date=2026-01-25-82457
  input: 742551b5eb17e102
 output: 03a0000000000000
--
mam4xx hash> exe=sethet_driver input=gas_washout_merged.yaml date=2026-01-25-82457
  input: 820bf2d700e50c80
 output: 38f6f2b0d21f26e4
--
mam4xx hash> exe=sethet_driver input=sethet_merged.yaml date=2026-01-25-82457
  input: 8c73139bf5f366ee
 output: 8bf8a7cd2d9db374
--
mam4xx hash> exe=mo_setsox_driver input=setsox_ts_355_merged.yaml date=2026-01-25-82457
  input: 9c2261e6c4e7681d
 output: c7e110ce4b07be19
--
mam4xx hash> exe=mo_setsox_driver input=setsox_ts_355_nlev.yaml date=2026-01-25-82457
  input: 9c2261e6c4e7681d
 output: 14a1d24009b92b5f
--
mam4xx hash> exe=mo_setsox_driver input=calc_ph_values_ts_355.yaml date=2026-01-25-82457
  input: b57c11fe0d5ad347
 output: 7eeed272630eb817
--
mam4xx hash> exe=mo_setsox_driver input=calc_sox_aqueous_ts_355_merged.yaml date=2026-01-25-82457
  input: a5961cbbe5a50bfd
 output: 66940c799bc2a109
--
mam4xx hash> exe=mo_setsox_driver input=calc_ynetpos_ts_355.yaml date=2026-01-25-82458
  input: 33dc625d97c4fc8d
 output: 7dc42fa3b89185b5
--
mam4xx hash> exe=tropopause_driver input=get_dtdz_merged.yaml date=2026-01-25-82458
  input: 3cc27b723f6b318d
 output: fecc32636413d523
--
mam4xx hash> exe=tropopause_driver input=twmo_merged.yaml date=2026-01-25-82458
  input: a20ff0cabe19441d
 output: 8f1b26f261b8204e
--
mam4xx hash> exe=tropopause_driver input=tropopause_twmo_ts_1400.yaml date=2026-01-25-82458
  input: 75ade688617633cc
 output: 4042800000000000
--
mam4xx hash> exe=aerosol_optics_driver input=binterp_ts_355.yaml date=2026-01-25-82458
  input: 29ec95482bd72075
 output: bf137c5d9fe77bbb
--
mam4xx hash> exe=aerosol_optics_driver input=calc_diag_spec_ts_355.yaml date=2026-01-25-82458
  input: b9f328242a2c6bd1
 output: 74c8fe40bc3c950f
--
mam4xx hash> exe=aerosol_optics_driver input=calc_refin_complex_ts_355_lw.yaml date=2026-01-25-82458
  input: 2f45d425d64b6334
 output: 3787e9c4088eeb01
--
mam4xx hash> exe=aerosol_optics_driver input=calc_refin_complex_ts_355_sw.yaml date=2026-01-25-82458
  input: 52bd97fee362c83d
 output: 37f4f1aedab3ba4d
--
mam4xx hash> exe=aerosol_optics_driver input=calc_volc_ext_ts_355.yaml date=2026-01-25-82458
  input: 13302a0cd0115525
 output: f22f13c19da25a22
--
mam4xx hash> exe=aerosol_optics_driver input=modal_size_parameters_ts_355_ismethod2_false.yaml date=2026-01-25-82458
  input: 53db6370391d3383
 output: f7637706781317ff
--
mam4xx hash> exe=aerosol_optics_driver input=modal_size_parameters_ts_355_ismethod2_true.yaml date=2026-01-25-82458
  input: 93cb6370391d3383
 output: f7637706781311fb
--
mam4xx hash> exe=aerosol_optics_driver input=modal_aero_sw_ts_355.yaml date=2026-01-25-82459
  input: 3254018f352a9d03
 output: af931b4bb359ffdc
--
mam4xx hash> exe=aerosol_optics_driver input=modal_aero_lw_ts_355.yaml date=2026-01-25-82459
  input: a80a2a693de49d73
 output: 28a7b0cebfca5d98
--
mam4xx hash> exe=aerosol_optics_driver input=calc_parameterized_ts_355.yaml date=2026-01-25-82459
  input: ff338d3645846e15
 output: 4015354bd1efbe6a
--
mam4xx hash> exe=aerosol_optics_driver input=update_aod_spec_ts_355.yaml date=2026-01-25-82459
  input: 24e9238af78983db
 output: bd67aec644ec279a
--
mam4xx hash> exe=aerosol_optics_driver input=aer_rad_props_lw_ts_355.yaml date=2026-01-25-82459
  input: 292b15b7140f56ae
 output: 8889b4fc570fa6f3
--
mam4xx hash> exe=aerosol_optics_driver input=aer_rad_props_sw_ts_355.yaml date=2026-01-25-82460
  input: d1e87dfe36bf114b
 output: 0aaa94040c09f29f
--
mam4xx hash> exe=aerosol_optics_driver input=volcanic_cmip_sw_ts_355.yaml date=2026-01-25-82460
  input: 391716021d032208
 output: 7f97bef240b81a6a
--
mam4xx hash> exe=aerosol_optics_driver input=data_transfer_state_q_qqwc_to_prog.yaml date=2026-01-25-82460
  input: 7b7987da5a8bcc3c
 output: 0000000000000000
--
mam4xx hash> exe=mo_setinv_driver input=setinv_merged.yaml date=2026-01-25-82460
  input: 070a4c9fdf5c2058
 output: 540095363b7d120f
--
mam4xx hash> exe=mo_setinv_driver input=setinv_nlev.yaml date=2026-01-25-82460
  input: 070a4c9fdf5c2058
 output: 540095363b7d120e
--
mam4xx hash> exe=aero_emissions_driver input=calc_om_seasalt.yaml date=2026-01-25-82460
  input: 3bb3dd641dc60691
 output: e8c13df675ccdecd
--
mam4xx hash> exe=aero_emissions_driver input=calculate_seasalt_numflux_in_bins.yaml date=2026-01-25-82460
  input: 3fe2688356a6b62e
 output: c274184ff48ccc3e
--
mam4xx hash> exe=aero_emissions_driver input=marine_organic_emis.yaml date=2026-01-25-82460
  input: f9c43e1c65f4c6d9
 output: 303cc4b20836cfaf
--
mam4xx hash> exe=aero_emissions_driver input=marine_organic_massflx_calc.yaml date=2026-01-25-82461
  input: 731fb7178310872b
 output: 793a3eef8108a1de
--
mam4xx hash> exe=aero_emissions_driver input=marine_organic_numflx_calc.yaml date=2026-01-25-82461
  input: 3c8b69b8857d24f4
 output: b70285c2872e2dd1
--
mam4xx hash> exe=aero_emissions_driver input=seasalt_emisflx_calc_massflx.yaml date=2026-01-25-82461
  input: 9ed5b13e0bfc88a9
 output: b6e9bc9066f7a7b5
--
mam4xx hash> exe=aero_emissions_driver input=seasalt_emisflx_calc_numflx.yaml date=2026-01-25-82461
  input: 5ee5b13e0bfc88a9
 output: c11288bb2df4a810
--
mam4xx hash> exe=aero_emissions_driver input=seasalt_emis.yaml date=2026-01-25-82461
  input: 42e8eb8327c00070
 output: 77fc454b94ec4fc5
--
mam4xx hash> exe=aero_emissions_driver input=dust_emis.yaml date=2026-01-25-82461
  input: b598fb58eaf8f469
 output: 3bba69c7affcf93d
--
mam4xx hash> exe=micro_gasaerexch_driver input=mam_soaexch_1subarea_ts_379.yaml date=2026-01-25-82461
  input: 00080538b224e6c8
 output: c7101c517d9eed58
--
mam4xx hash> exe=micro_gasaerexch_driver input=gas_aer_uptkrates_1box1gas_ts_379.yaml date=2026-01-25-82461
  input: f70bd03d2fde98c9
 output: f6442f8bf1cfe5e4
--
mam4xx hash> exe=micro_gasaerexch_driver input=mam_gasaerexch_1subarea_ts_379.yaml date=2026-01-25-82461
  input: 2f1db1303d56bb23
 output: b2e318effe9d3cf1
--
mam4xx hash> exe=tracer_data_driver input=vert_interp_ts_300.yaml date=2026-01-25-82461
  input: 25377e5ce2160652
 output: 91fc101433721281
--
mam4xx hash> exe=tracer_data_driver input=vert_interp_col_ts_300.yaml date=2026-01-25-82461
  input: 9bff7d4e2600746c
 output: 5cbcf7ea297e34d9
--
mam4xx hash> exe=tracer_data_driver input=rebin_ts_300.yaml date=2026-01-25-82462
  input: 8861f07b5d4afb5d
 output: 38052479de33b2f6
--
mam4xx hash> exe=amicphys_subareas_driver input=compute_qsub_from_gcm_and_qsub_of_other_subarea.yaml date=2026-01-25-82462
  input: bcbeb51b494fdbd1
 output: b908c8a6848cf6e5
--
mam4xx hash> exe=amicphys_subareas_driver input=form_gcm_of_gases_and_aerosols_from_subareas.yaml date=2026-01-25-82462
  input: c1e61d838ffc0cdf
 output: 3efdc049853202c3
--
mam4xx hash> exe=amicphys_subareas_driver input=get_partition_factors.yaml date=2026-01-25-82462
  input: fdd3543da1e3a380
 output: ff8000000000000c
--
mam4xx hash> exe=amicphys_subareas_driver input=set_subarea_gases_and_aerosols.yaml date=2026-01-25-82462
  input: 3acbfef16d9bd591
 output: 9850a392054ef88d
--
mam4xx hash> exe=amicphys_subareas_driver input=set_subarea_qmass_for_cldbrn_aerosols.yaml date=2026-01-25-82462
  input: bed6f52ef5dfb183
 output: b63e57d7ec211320
--
mam4xx hash> exe=amicphys_subareas_driver input=set_subarea_qmass_for_intrst_aerosols.yaml date=2026-01-25-82462
  input: e51d72b12b562f80
 output: ec182212c824939f
--
mam4xx hash> exe=amicphys_subareas_driver input=set_subarea_qnumb_for_cldbrn_aerosols.yaml date=2026-01-25-82462
  input: 3726f52ef5dfb183
 output: 0000000000000000
--
mam4xx hash> exe=amicphys_subareas_driver input=set_subarea_qnumb_for_intrst_aerosols.yaml date=2026-01-25-82462
  input: bb4c0d5b7a9fa3a2
 output: c92946ee6192c779
--
mam4xx hash> exe=amicphys_subareas_driver input=set_subarea_rh.yaml date=2026-01-25-82462
  input: bf36329831299d3e
 output: 7fdc88bdf24bb4d6
--
mam4xx hash> exe=amicphys_subareas_driver input=setup_subareas.yaml date=2026-01-25-82462
  input: 7f79d7f102f1d3fb
 output: 3ea3488241d7e0a6

@odiazib
Copy link
Contributor

odiazib commented Feb 26, 2026

Are the other tests in CTest always the same? We could just use vi -d to compare the outputs from master and our branch.

@odiazib
Copy link
Contributor

odiazib commented Feb 26, 2026

It would be great if we could produce a hash per variable in the output. I don’t know if this is already implemented, but it could be done in a follow-up PR.

@jeff-cohere
Copy link
Collaborator Author

It would be great if we could produce a hash per variable in the output. I don’t know if this is already implemented, but it could be done in a follow-up PR.

I was thinking about that as an option, too. It would be simple, but more output. Maybe we should merge this one and I can open an issue where we can discuss these options (no BFB hash output, hash per test, hash per output, etc)?

@jeff-cohere jeff-cohere marked this pull request as ready for review February 26, 2026 16:14
@jeff-cohere
Copy link
Collaborator Author

@odiazib , can you re-initiate the autotester? I marked this as Ready for Review.

@jeff-cohere
Copy link
Collaborator Author

Are the other tests in CTest always the same? We could just use vi -d to compare the outputs from master and our branch.

We could probably maintain a baseline whose content is the grep stuff above, and then diff against it automatically in a post-test workflow, if that's appealing.

@odiazib
Copy link
Contributor

odiazib commented Feb 26, 2026

Are the other tests in CTest always the same? We could just use vi -d to compare the outputs from master and our branch.

We could probably maintain a baseline whose content is the grep stuff above, and then diff against it automatically in a post-test workflow, if that's appealing.

I think we should merge this PR and start using this feature, as you recommended. After experimenting with it, we will have a better idea of how to compare against baselines.

@jeff-cohere jeff-cohere merged commit 79ebf96 into main Feb 26, 2026
43 of 53 checks passed
@jeff-cohere jeff-cohere deleted the jeff-cohere/bfbhash branch February 26, 2026 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Devise a method for BFB testing in (standalone) mam4xx

3 participants