<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>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>959240</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/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><previousBuild><number>697</number><url>http://carson.math.uwm.edu/jenkins/job/clubb_silhs_convergence_gfortran/697/</url></previousBuild></workflowRun>