<workflowRun _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>108</buildNumber><marked><SHA1>12407142b14155687d0d80b174796965d2793b12</SHA1><branch><SHA1>12407142b14155687d0d80b174796965d2793b12</SHA1><name>origin/master</name></branch></marked><revision><SHA1>12407142b14155687d0d80b174796965d2793b12</SHA1><branch><SHA1>12407142b14155687d0d80b174796965d2793b12</SHA1><name>origin/master</name></branch></revision></originmaster><origingrid_fixes _class='hudson.plugins.git.util.Build'><buildNumber>92</buildNumber><marked><SHA1>b19b67713baf175f99baa0cb0bdde6e8c1fbc588</SHA1><branch><SHA1>b19b67713baf175f99baa0cb0bdde6e8c1fbc588</SHA1><name>origin/grid_fixes</name></branch></marked><revision><SHA1>b19b67713baf175f99baa0cb0bdde6e8c1fbc588</SHA1><branch><SHA1>b19b67713baf175f99baa0cb0bdde6e8c1fbc588</SHA1><name>origin/grid_fixes</name></branch></revision></origingrid_fixes><originfeeding_gr_to_host _class='hudson.plugins.git.util.Build'><buildNumber>87</buildNumber><marked><SHA1>b928767c7238139d599dc55420d2a0956161726a</SHA1><branch><SHA1>b928767c7238139d599dc55420d2a0956161726a</SHA1><name>origin/feeding_gr_to_host</name></branch></marked><revision><SHA1>b928767c7238139d599dc55420d2a0956161726a</SHA1><branch><SHA1>b928767c7238139d599dc55420d2a0956161726a</SHA1><name>origin/feeding_gr_to_host</name></branch></revision></originfeeding_gr_to_host><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>699</buildNumber><marked><SHA1>77b73e25b7c54c85e9714178efbd6dc893834dc5</SHA1><branch><SHA1>77b73e25b7c54c85e9714178efbd6dc893834dc5</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>77b73e25b7c54c85e9714178efbd6dc893834dc5</SHA1><branch><SHA1>77b73e25b7c54c85e9714178efbd6dc893834dc5</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>77b73e25b7c54c85e9714178efbd6dc893834dc5</SHA1><branch><SHA1>77b73e25b7c54c85e9714178efbd6dc893834dc5</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/larson-group/clubb.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'><environment></environment></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>http://carson.math.uwm.edu/jenkins/blue/organizations/jenkins/clubb_silhs_convergence_gfortran/detail/clubb_silhs_convergence_gfortran/699/artifacts</artifactsUrl><changesUrl>http://carson.math.uwm.edu/jenkins/blue/organizations/jenkins/clubb_silhs_convergence_gfortran/detail/clubb_silhs_convergence_gfortran/699/changes</changesUrl><displayUrl>http://carson.math.uwm.edu/jenkins/blue/organizations/jenkins/clubb_silhs_convergence_gfortran/detail/clubb_silhs_convergence_gfortran/699/</displayUrl><testsUrl>http://carson.math.uwm.edu/jenkins/blue/organizations/jenkins/clubb_silhs_convergence_gfortran/detail/clubb_silhs_convergence_gfortran/699/tests</testsUrl></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'><restartEnabled>false</restartEnabled><restartableStage>Compile</restartableStage><restartableStage>Run SILHS test script</restartableStage></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'><node _class='org.jenkinsci.plugins.workflow.graph.FlowStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.graph.FlowEndNode'></node></action><action></action><action></action><action></action><building>false</building><displayName>#699</displayName><duration>198369</duration><estimatedDuration>753158</estimatedDuration><fullDisplayName>clubb_silhs_convergence_gfortran #699</fullDisplayName><id>699</id><keepLog>false</keepLog><number>699</number><queueId>8614</queueId><result>SUCCESS</result><timestamp>1789806366851</timestamp><url>http://carson.math.uwm.edu/jenkins/view/all/job/clubb_silhs_convergence_gfortran/699/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>dash_app/shared/broker.py</affectedPath><affectedPath>dash_app/run_tab/tab.py</affectedPath><affectedPath>dash_app/plot_tab/case_cache.py</affectedPath><affectedPath>dash_app/shared/background.py</affectedPath><affectedPath>dash_app/profile_tab/callbacks.py</affectedPath><affectedPath>dash_app/shared/activity.py</affectedPath><affectedPath>utilities/pytests/test_time_clubb.py</affectedPath><affectedPath>dash_app/assets/14_tab_compile_theme.css</affectedPath><affectedPath>dash_app/pytests/test_selected_build.py</affectedPath><affectedPath>dash_app/compile_tab/callbacks.py</affectedPath><affectedPath>dash_app/shared/actions.py</affectedPath><affectedPath>dash_app/misc_tab/layout.py</affectedPath><affectedPath>utilities/time_clubb.py</affectedPath><affectedPath>dash_app/plot_tab/plot_types/custom_plot.py</affectedPath><affectedPath>dash_app/shared/broker_protocol.py</affectedPath><affectedPath>dash_app/tune_tab/tab.py</affectedPath><affectedPath>dash_app/plot_tab/plot_types/pdf_contour_plot.py</affectedPath><affectedPath>dash_app/pytests/test_pyplotgen_export.py</affectedPath><affectedPath>dash_app/assets/37_workspace_persistence.js</affectedPath><affectedPath>dash_app/plot_tab/plot_types/shared.py</affectedPath><affectedPath>dash_app/persistence.py</affectedPath><affectedPath>dash_app/plot_tab/tasks.py</affectedPath><affectedPath>dash_app/assets/30_run_ui_resize.js</affectedPath><affectedPath>dash_app/compile_tab/tab.py</affectedPath><affectedPath>dash_app/assets/34_plot_chooser.js</affectedPath><affectedPath>dash_app/plot_tab/callbacks_grid.py</affectedPath><affectedPath>dash_app/shared/array_cache.py</affectedPath><affectedPath>dash_app/pytests/test_output_discovery.py</affectedPath><affectedPath>dash_app/plot_tab/tab.py</affectedPath><affectedPath>dash_app/assets/32_plots_constant_param_rows.js</affectedPath><affectedPath>utilities/timing_profiles.py</affectedPath><affectedPath>dash_app/plot_tab/callbacks_pyplotgen.py</affectedPath><affectedPath>dash_app/misc_tab/mixing_length_trajectories/analysis.py</affectedPath><affectedPath>dash_app/plot_tab/plot_types/timeheight_plot.py</affectedPath><affectedPath>dash_app/pytests/test_plot_tasks.py</affectedPath><affectedPath>dash_app/assets/36_tune_ui_resize.js</affectedPath><affectedPath>dash_app/pytests/test_profile_tab.py</affectedPath><affectedPath>dash_app/plot_tab/state.py</affectedPath><affectedPath>dash_app/pytests/test_plot_extraction.py</affectedPath><affectedPath>dash_app/README.md</affectedPath><affectedPath>dash_app/misc_tab/tab.py</affectedPath><affectedPath>dash_app/pytests/test_pane_resize.py</affectedPath><affectedPath>dash_app/plot_tab/plot_types/budget_plot.py</affectedPath><affectedPath>dash_app/pytests/test_performance_polling.py</affectedPath><affectedPath>dash_app/plot_tab/layout.py</affectedPath><affectedPath>dash_app/plot_tab/async_callbacks.py</affectedPath><affectedPath>dash_app/profile_tab/runtime.py</affectedPath><affectedPath>dash_app/tutorial_tab/tab.py</affectedPath><affectedPath>dash_app/assets/31_plots_ui_resize.js</affectedPath><affectedPath>dash_app/lazy_tabs.py</affectedPath><affectedPath>dash_app/plot_tab/callbacks_controls.py</affectedPath><affectedPath>dash_app/plot_tab/callbacks_params.py</affectedPath><affectedPath>dash_app/tutorial_tab/layout.py</affectedPath><affectedPath>dash_app/app.py</affectedPath><affectedPath>dash_app/assets/33_plot_tasks.js</affectedPath><affectedPath>dash_app/plot_tab/pyplotgen_runtime.py</affectedPath><affectedPath>dash_app/plot_tab/plot_types/profile_plot.py</affectedPath><affectedPath>dash_app/pytests/test_plot_case_cache.py</affectedPath><affectedPath>dash_app/profile_tab/tab.py</affectedPath><affectedPath>dash_app/pytests/test_activity.py</affectedPath><affectedPath>dash_app/services/profiles.py</affectedPath><affectedPath>dash_app/plot_tab/plot_types/subcolumn_plot.py</affectedPath><affectedPath>dash_app/tune_tab/callbacks_workspaces.py</affectedPath><affectedPath>dash_app/pytests/test_param_disclosures.py</affectedPath><affectedPath>dash_app/DEVELOPMENT.md</affectedPath><affectedPath>dash_app/assets/12_tab_plots_theme.css</affectedPath><affectedPath>dash_app/pytests/test_plot_grid_updates.py</affectedPath><affectedPath>dash_app/shared/broker_client.py</affectedPath><affectedPath>dash_app/reports_tab/tab.py</affectedPath><affectedPath>dash_app/plot_tab/callbacks_case.py</affectedPath><affectedPath>dash_app/plot_tab/plot_types/timeseries_plot.py</affectedPath><affectedPath>dash_app/pytests/test_state_persistence.py</affectedPath><affectedPath>dash_app/pytests/test_app_startup.py</affectedPath><commitId>af35e5202409ab58c575e8d2841f59d31ba80c94</commitId><timestamp>1789748367000</timestamp><author><absoluteUrl>http://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Dash Improvements (#1360)

* Improve Dash plot responsiveness and bound data caches

* Dash improvements, mainly for performance

* Removing performance audit file that is no longer needed:
</comment><date>2026-09-18 11:19:27 -0500</date><id>af35e5202409ab58c575e8d2841f59d31ba80c94</id><msg>Dash Improvements (#1360)</msg><path><editType>edit</editType><file>dash_app/compile_tab/tab.py</file></path><path><editType>edit</editType><file>dash_app/services/profiles.py</file></path><path><editType>add</editType><file>dash_app/plot_tab/async_callbacks.py</file></path><path><editType>edit</editType><file>dash_app/assets/12_tab_plots_theme.css</file></path><path><editType>edit</editType><file>dash_app/shared/broker_client.py</file></path><path><editType>edit</editType><file>dash_app/run_tab/tab.py</file></path><path><editType>edit</editType><file>dash_app/shared/broker_protocol.py</file></path><path><editType>edit</editType><file>dash_app/shared/activity.py</file></path><path><editType>add</editType><file>dash_app/plot_tab/case_cache.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/plot_types/timeseries_plot.py</file></path><path><editType>edit</editType><file>dash_app/profile_tab/callbacks.py</file></path><path><editType>edit</editType><file>dash_app/compile_tab/callbacks.py</file></path><path><editType>edit</editType><file>dash_app/assets/37_workspace_persistence.js</file></path><path><editType>edit</editType><file>dash_app/misc_tab/layout.py</file></path><path><editType>add</editType><file>dash_app/pytests/test_plot_extraction.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/plot_types/budget_plot.py</file></path><path><editType>edit</editType><file>dash_app/tutorial_tab/layout.py</file></path><path><editType>add</editType><file>dash_app/lazy_tabs.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_profile_tab.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_state_persistence.py</file></path><path><editType>add</editType><file>dash_app/assets/33_plot_tasks.js</file></path><path><editType>edit</editType><file>dash_app/pytests/test_param_disclosures.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_plot_grid_updates.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/plot_types/shared.py</file></path><path><editType>edit</editType><file>dash_app/tutorial_tab/tab.py</file></path><path><editType>add</editType><file>dash_app/assets/34_plot_chooser.js</file></path><path><editType>edit</editType><file>dash_app/misc_tab/mixing_length_trajectories/analysis.py</file></path><path><editType>edit</editType><file>dash_app/shared/actions.py</file></path><path><editType>edit</editType><file>utilities/pytests/test_time_clubb.py</file></path><path><editType>edit</editType><file>dash_app/assets/31_plots_ui_resize.js</file></path><path><editType>edit</editType><file>dash_app/plot_tab/plot_types/timeheight_plot.py</file></path><path><editType>edit</editType><file>dash_app/tune_tab/callbacks_workspaces.py</file></path><path><editType>edit</editType><file>dash_app/persistence.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/callbacks_grid.py</file></path><path><editType>edit</editType><file>dash_app/app.py</file></path><path><editType>add</editType><file>dash_app/plot_tab/tasks.py</file></path><path><editType>add</editType><file>dash_app/pytests/test_pane_resize.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/pyplotgen_runtime.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/plot_types/profile_plot.py</file></path><path><editType>edit</editType><file>dash_app/assets/14_tab_compile_theme.css</file></path><path><editType>add</editType><file>dash_app/pytests/test_performance_polling.py</file></path><path><editType>add</editType><file>dash_app/pytests/test_plot_case_cache.py</file></path><path><editType>edit</editType><file>utilities/time_clubb.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_output_discovery.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/callbacks_case.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/layout.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/callbacks_params.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/plot_types/subcolumn_plot.py</file></path><path><editType>edit</editType><file>dash_app/DEVELOPMENT.md</file></path><path><editType>edit</editType><file>dash_app/assets/36_tune_ui_resize.js</file></path><path><editType>edit</editType><file>dash_app/plot_tab/state.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/plot_types/custom_plot.py</file></path><path><editType>edit</editType><file>dash_app/profile_tab/tab.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/callbacks_pyplotgen.py</file></path><path><editType>edit</editType><file>utilities/timing_profiles.py</file></path><path><editType>edit</editType><file>dash_app/assets/30_run_ui_resize.js</file></path><path><editType>edit</editType><file>dash_app/misc_tab/tab.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_selected_build.py</file></path><path><editType>edit</editType><file>dash_app/tune_tab/tab.py</file></path><path><editType>delete</editType><file>dash_app/assets/32_plots_constant_param_rows.js</file></path><path><editType>edit</editType><file>dash_app/plot_tab/callbacks_controls.py</file></path><path><editType>add</editType><file>dash_app/shared/array_cache.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_activity.py</file></path><path><editType>edit</editType><file>dash_app/reports_tab/tab.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_app_startup.py</file></path><path><editType>edit</editType><file>dash_app/shared/background.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/tab.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_pyplotgen_export.py</file></path><path><editType>edit</editType><file>dash_app/shared/broker.py</file></path><path><editType>edit</editType><file>dash_app/profile_tab/runtime.py</file></path><path><editType>edit</editType><file>dash_app/plot_tab/plot_types/pdf_contour_plot.py</file></path><path><editType>edit</editType><file>dash_app/README.md</file></path><path><editType>add</editType><file>dash_app/pytests/test_plot_tasks.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/README</affectedPath><commitId>5b5bf5f74f30e0332db965215e3de5e6baf72d6e</commitId><timestamp>1789749148000</timestamp><author><absoluteUrl>http://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Improving README section for column mirror test
</comment><date>2026-09-18 11:32:28 -0500</date><id>5b5bf5f74f30e0332db965215e3de5e6baf72d6e</id><msg>Improving README section for column mirror test</msg><path><editType>edit</editType><file>tests/README</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/src/CLUBB_core/fill_holes.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/LY93_pdf.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/new_hybrid_pdf.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/new_hybrid_pdf_main.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/adg1_adg2_3d_luhar_pdf.py</affectedPath><affectedPath>clubb_jax/tests/test_fill_holes_mean.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/mixing_length.py</affectedPath><affectedPath>clubb_jax/tests/test_full_timestep_grad.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/setup_clubb_pdf_params.py</affectedPath><affectedPath>clubb_jax/tests/test_fill_holes_global.py</affectedPath><affectedPath>clubb_jax/tests/test_differentiability.py</affectedPath><affectedPath>clubb_jax/tests/test_fill_holes_autodiff.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/new_pdf.py</affectedPath><affectedPath>clubb_jax/tests/test_transform_pdf_chi_eta_component.py</affectedPath><affectedPath>clubb_jax/tests/test_splatting_autodiff.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/pdf_closure_module.py</affectedPath><affectedPath>clubb_jax/src/advance_clubb_to_end.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/new_tsdadg_pdf.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/pdf_utilities.py</affectedPath><affectedPath>clubb_jax/tests/test_fill_holes_sliding_window.py</affectedPath><affectedPath>clubb_jax/README.md</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_helper_module.py</affectedPath><affectedPath>clubb_jax/tests/test_numerics_autodiff.py</affectedPath><commitId>77b73e25b7c54c85e9714178efbd6dc893834dc5</commitId><timestamp>1789784882000</timestamp><author><absoluteUrl>http://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Making certain things differentiation safe, various parts had issues with sqrt or divisions that needed clipping for reverse mode calcualtions. Lot's of code sections seemed to already have worked around this with a safe_sqrt method (or some variation) that I standardized and put in advance_helper. (#1361)
</comment><date>2026-09-18 21:28:02 -0500</date><id>77b73e25b7c54c85e9714178efbd6dc893834dc5</id><msg>Making certain things differentiation safe, various parts had issues with sqrt or divisions that needed clipping for reverse mode calcualtions. Lot's of code sections seemed to already have worked around this with a safe_sqrt method (or some variation) that I standardized and put in advance_helper. (#1361)</msg><path><editType>edit</editType><file>clubb_jax/tests/test_fill_holes_mean.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_numerics_autodiff.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/adg1_adg2_3d_luhar_pdf.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_helper_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/new_tsdadg_pdf.py</file></path><path><editType>edit</editType><file>clubb_jax/src/advance_clubb_to_end.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_splatting_autodiff.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/new_hybrid_pdf.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/new_hybrid_pdf_main.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/LY93_pdf.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/mixing_length.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/pdf_closure_module.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_differentiability.py</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/pdf_utilities.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/setup_clubb_pdf_params.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/fill_holes.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_fill_holes_autodiff.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_fill_holes_global.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_transform_pdf_chi_eta_component.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_fill_holes_sliding_window.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/new_pdf.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_full_timestep_grad.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName><id>noreply</id></culprit><culprit><absoluteUrl>http://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName><id>huebler</id></culprit><inProgress>false</inProgress><previousBuild><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>108</buildNumber><marked><SHA1>12407142b14155687d0d80b174796965d2793b12</SHA1><branch><SHA1>12407142b14155687d0d80b174796965d2793b12</SHA1><name>origin/master</name></branch></marked><revision><SHA1>12407142b14155687d0d80b174796965d2793b12</SHA1><branch><SHA1>12407142b14155687d0d80b174796965d2793b12</SHA1><name>origin/master</name></branch></revision></originmaster><origingrid_fixes _class='hudson.plugins.git.util.Build'><buildNumber>92</buildNumber><marked><SHA1>b19b67713baf175f99baa0cb0bdde6e8c1fbc588</SHA1><branch><SHA1>b19b67713baf175f99baa0cb0bdde6e8c1fbc588</SHA1><name>origin/grid_fixes</name></branch></marked><revision><SHA1>b19b67713baf175f99baa0cb0bdde6e8c1fbc588</SHA1><branch><SHA1>b19b67713baf175f99baa0cb0bdde6e8c1fbc588</SHA1><name>origin/grid_fixes</name></branch></revision></origingrid_fixes><originfeeding_gr_to_host _class='hudson.plugins.git.util.Build'><buildNumber>87</buildNumber><marked><SHA1>b928767c7238139d599dc55420d2a0956161726a</SHA1><branch><SHA1>b928767c7238139d599dc55420d2a0956161726a</SHA1><name>origin/feeding_gr_to_host</name></branch></marked><revision><SHA1>b928767c7238139d599dc55420d2a0956161726a</SHA1><branch><SHA1>b928767c7238139d599dc55420d2a0956161726a</SHA1><name>origin/feeding_gr_to_host</name></branch></revision></originfeeding_gr_to_host><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>698</buildNumber><marked><SHA1>17b29a7e938300692cec5c6c7e78aae7b9578568</SHA1><branch><SHA1>17b29a7e938300692cec5c6c7e78aae7b9578568</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>17b29a7e938300692cec5c6c7e78aae7b9578568</SHA1><branch><SHA1>17b29a7e938300692cec5c6c7e78aae7b9578568</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>17b29a7e938300692cec5c6c7e78aae7b9578568</SHA1><branch><SHA1>17b29a7e938300692cec5c6c7e78aae7b9578568</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/larson-group/clubb.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'></action><action></action><action></action><action></action><building>false</building><displayName>#698</displayName><duration>126761</duration><estimatedDuration>753158</estimatedDuration><fullDisplayName>clubb_silhs_convergence_gfortran #698</fullDisplayName><id>698</id><keepLog>false</keepLog><number>698</number><queueId>8534</queueId><result>SUCCESS</result><timestamp>1789719967579</timestamp><url>http://carson.math.uwm.edu/jenkins/view/all/job/clubb_silhs_convergence_gfortran/698/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/src/clubb_standalone.py</affectedPath><affectedPath>dash_app/profile_tab/callbacks.py</affectedPath><affectedPath>dash_app/pytests/test_jax_device.py</affectedPath><affectedPath>clubb_jax/run_jax.py</affectedPath><affectedPath>dash_app/assets/09_selected_build_badge.css</affectedPath><affectedPath>dash_app/README.md</affectedPath><affectedPath>dash_app/pytests/test_selected_build.py</affectedPath><affectedPath>dash_app/compile_tab/callbacks.py</affectedPath><affectedPath>dash_app/shared/actions.py</affectedPath><affectedPath>dash_app/shared/jax_device.py</affectedPath><affectedPath>clubb_jax/tests/test_radiation_module.py</affectedPath><affectedPath>dash_app/run_tab/telemetry.py</affectedPath><affectedPath>dash_app/assets/11_tab_run_theme.css</affectedPath><affectedPath>dash_app/profile_tab/runtime.py</affectedPath><affectedPath>tests/run_jax_vs_fortran_cases.py</affectedPath><affectedPath>clubb_jax/runtime_info.py</affectedPath><affectedPath>dash_app/run_tab/runtime.py</affectedPath><affectedPath>clubb_jax/requirements-metal.txt</affectedPath><affectedPath>dash_app/run_tab/layout.py</affectedPath><affectedPath>clubb_jax/run_jax_wrapper.sh</affectedPath><affectedPath>clubb_python_driver/advance_clubb_to_end.py</affectedPath><affectedPath>run_scripts/run_scm.py</affectedPath><affectedPath>dash_app/services/models.py</affectedPath><affectedPath>dash_app/pytests/test_agent_services.py</affectedPath><affectedPath>clubb_jax/tests/test_jax_cli_options.py</affectedPath><affectedPath>dash_app/pytests/test_callbacks_runs.py</affectedPath><affectedPath>dash_app/DEVELOPMENT.md</affectedPath><affectedPath>clubb_jax/src/advance_clubb_to_end.py</affectedPath><affectedPath>clubb_jax/tests/test_runtime_info.py</affectedPath><affectedPath>dash_app/pytests/test_run_broker_simplification.py</affectedPath><affectedPath>dash_app/run_tab/callbacks_runs.py</affectedPath><affectedPath>dash_app/compile_tab/build_selector.py</affectedPath><affectedPath>clubb_jax/README.md</affectedPath><affectedPath>clubb_jax/src/Radiation/radiation_module.py</affectedPath><affectedPath>dash_app/pytests/test_profile_tab.py</affectedPath><commitId>17b29a7e938300692cec5c6c7e78aae7b9578568</commitId><timestamp>1789714227000</timestamp><author><absoluteUrl>http://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Jax integration (#1356)

* Starting to integrate jax with dash more and making the run_scm -jax flag a little more useful by being able to choose to run on the CPU or GPU via -jax=cpu or -jax=gpu rather than requireing environment variables

* Making the jax option even fancier, dash runner chooser is better/smarter now too

* Make CLUBB-JAX launcher portable across macOS and Linux

* Making the jax device detection work without needing the venvs setup first.

* Keep JAX radiation compiled with static timestep scheduling

Preserve the host radiation flag as a static JIT argument and mirror the Fortran conditional directly. Remove the Metal-only eager execution path and redundant branch helpers.

Cover both schedule states, statistics cadence, soil update ordering, and alternating time-dependent radiation calls. Validated with CPU and Metal tests and three-step standalone runs.

* Microphys loop push (#1355)

* First set of loop pushes - feature addition to stats too to allow for calling stats_update multiple times in a timestep and averaging the results, which is quite nice for silhs and allows us to get rid of the special microphysics stats type

* More loop pushes

* Tiny changes to restore BFBness

* Pushing loop into advance_microphys

* Little more loop push

* More basic loop pushing

* More loop pushing, also found what seems to be a bug with additional columns, theres code that uses only the first one. Im leaving this in for now to maintain BFBness, but labeled the problem areas with TODOs

* Potentially final batch of loop pushes

* Adding acc fixes for microphys stuff - the 2D versions called are GPUized, so they need acc data statements surrounding them

* Removing unneccesary single col versions of lots of things

* Restoring some comments and formatting

* A little more restoration, maybe unnecceary

* Little OpenACC fixes for microphys code RESOLVED:900681c91bdbdf8d6cd069bab01663ebac1a3279

* renamed jax jenkins test to clubb_jax_tests

* Making column mirror test work by comparing two different output files rather than one. This test now runs once with 3 different columns in a certain order, say ABC, and again with reverse order CBA, then ensures that A=A B=B and C=C (bit-for-bit equivalence) in both files. This should fail now actually, as there is currently a bug, and this update is intented to improve this test so that it fails before we fix the bug

* Making column mirror test use CPU. This makes it much faster and doesn't change the test at all - not sure why I made it use GPU originally.

* Fixing microphys bug that has been around for quite a while. This happened when making clubb standalone use multiple columns, and only affects columns other than the first. This is BIT_CHANGING, but only for microphysics cases using multiple columns (#1358)

* Test different f90 vs jax flags (#1357)

* wip

* wip

* test is basically done -&gt; find out why some jax runs fail, mabe also run fortran even if jax fails

* fortran is tested regardless of whether jax fails

* changed jenkinsfile + removed l_Lscale_plume_centered from flag file + flag_set readme + lil print F90 fix

* added comments and a new flagset for jax tests

* added new jax flag config file to Jenkinstest

* Small UI fixes to make entry boxes refresh better

* Making python/jax driver status prints happen right away

* Removing accidentally added file

* Improving readmes

* Simpliciation cleanup

---------

Co-authored-by: Daniel Ebel &lt;debel@uwm.edu&gt;
Co-authored-by: Daniel Ebel &lt;124399436+shellwitz@users.noreply.github.com&gt;
</comment><date>2026-09-18 01:50:27 -0500</date><id>17b29a7e938300692cec5c6c7e78aae7b9578568</id><msg>Jax integration (#1356)</msg><path><editType>edit</editType><file>dash_app/pytests/test_selected_build.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_jax_cli_options.py</file></path><path><editType>delete</editType><file>clubb_jax/run_jax_wrapper.sh</file></path><path><editType>edit</editType><file>run_scripts/run_scm.py</file></path><path><editType>add</editType><file>clubb_jax/runtime_info.py</file></path><path><editType>add</editType><file>clubb_jax/requirements-metal.txt</file></path><path><editType>edit</editType><file>tests/run_jax_vs_fortran_cases.py</file></path><path><editType>edit</editType><file>dash_app/compile_tab/callbacks.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Radiation/radiation_module.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_callbacks_runs.py</file></path><path><editType>edit</editType><file>dash_app/profile_tab/callbacks.py</file></path><path><editType>edit</editType><file>dash_app/run_tab/callbacks_runs.py</file></path><path><editType>edit</editType><file>dash_app/compile_tab/build_selector.py</file></path><path><editType>edit</editType><file>dash_app/assets/11_tab_run_theme.css</file></path><path><editType>edit</editType><file>clubb_jax/src/advance_clubb_to_end.py</file></path><path><editType>edit</editType><file>dash_app/assets/09_selected_build_badge.css</file></path><path><editType>edit</editType><file>dash_app/DEVELOPMENT.md</file></path><path><editType>add</editType><file>clubb_jax/run_jax.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_profile_tab.py</file></path><path><editType>add</editType><file>dash_app/shared/jax_device.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_agent_services.py</file></path><path><editType>edit</editType><file>dash_app/README.md</file></path><path><editType>edit</editType><file>clubb_jax/src/clubb_standalone.py</file></path><path><editType>add</editType><file>dash_app/pytests/test_jax_device.py</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>add</editType><file>clubb_jax/tests/test_runtime_info.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_radiation_module.py</file></path><path><editType>edit</editType><file>dash_app/run_tab/runtime.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_run_broker_simplification.py</file></path><path><editType>edit</editType><file>dash_app/services/models.py</file></path><path><editType>edit</editType><file>dash_app/run_tab/layout.py</file></path><path><editType>edit</editType><file>dash_app/shared/actions.py</file></path><path><editType>edit</editType><file>dash_app/run_tab/telemetry.py</file></path><path><editType>edit</editType><file>dash_app/profile_tab/runtime.py</file></path><path><editType>edit</editType><file>clubb_python_driver/advance_clubb_to_end.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>http://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><inProgress>false</inProgress><nextBuild><number>699</number><url>http://carson.math.uwm.edu/jenkins/view/all/job/clubb_silhs_convergence_gfortran/699/</url></nextBuild><previousBuild><number>697</number><url>http://carson.math.uwm.edu/jenkins/view/all/job/clubb_silhs_convergence_gfortran/697/</url></previousBuild></previousBuild></workflowRun>