{
  "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.libs.LibrariesAction"
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/clubb_silhs_devel" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 74,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "6fc57497840efaa7acc394c10ac9c6892ef16220",
            "branch" : [
              {
                "SHA1" : "6fc57497840efaa7acc394c10ac9c6892ef16220",
                "name" : "origin/clubb_silhs_devel"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6fc57497840efaa7acc394c10ac9c6892ef16220",
            "branch" : [
              {
                "SHA1" : "6fc57497840efaa7acc394c10ac9c6892ef16220",
                "name" : "origin/clubb_silhs_devel"
              }
            ]
          }
        },
        "origin/changes_to_not_break" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 69,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "cca799cfb394e7eeadc21211ae811b4a370d31ee",
            "branch" : [
              {
                "SHA1" : "cca799cfb394e7eeadc21211ae811b4a370d31ee",
                "name" : "origin/changes_to_not_break"
              }
            ]
          },
          "revision" : {
            "SHA1" : "cca799cfb394e7eeadc21211ae811b4a370d31ee",
            "branch" : [
              {
                "SHA1" : "cca799cfb394e7eeadc21211ae811b4a370d31ee",
                "name" : "origin/changes_to_not_break"
              }
            ]
          }
        },
        "refs/remotes/origin/clubb_silhs_devel" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 395,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "3c08a43e266cfa451689a1656bb486c3bd5a4464",
            "branch" : [
              {
                "SHA1" : "3c08a43e266cfa451689a1656bb486c3bd5a4464",
                "name" : "refs/remotes/origin/clubb_silhs_devel"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3c08a43e266cfa451689a1656bb486c3bd5a4464",
            "branch" : [
              {
                "SHA1" : "3c08a43e266cfa451689a1656bb486c3bd5a4464",
                "name" : "refs/remotes/origin/clubb_silhs_devel"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "3c08a43e266cfa451689a1656bb486c3bd5a4464",
        "branch" : [
          {
            "SHA1" : "3c08a43e266cfa451689a1656bb486c3bd5a4464",
            "name" : "refs/remotes/origin/clubb_silhs_devel"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/larson-group/cam.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.cps.EnvActionImpl"
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    },
    {
      "_class" : "org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction"
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.views.FlowGraphAction"
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#395",
  "duration" : 1399359,
  "estimatedDuration" : 1539892,
  "executor" : None,
  "fullDisplayName" : "cam_global_ERP_Ln9_gfortran_test #395",
  "id" : "395",
  "keepLog" : False,
  "number" : 395,
  "queueId" : 1688,
  "result" : "FAILURE",
  "timestamp" : 1724402827056,
  "url" : "http://carson.math.uwm.edu/jenkins/job/cam_global_ERP_Ln9_gfortran_test/395/",
  "changeSets" : [
    {
      "_class" : "hudson.plugins.git.GitChangeSetList",
      "items" : [
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "advance_xm_wpxp_module.F90",
            "clip_explicit.F90",
            "clubb_api_module.F90",
            "grid_class.F90",
            "setup_clubb_pdf_params.F90",
            "advance_windm_edsclrm_module.F90",
            "mono_flux_limiter.F90",
            "advance_helper_module.F90",
            "advance_wp2_wp3_module.F90",
            "mixing_length.F90",
            "advance_xp2_xpyp_module.F90",
            "Skx_module.F90",
            "pdf_closure_module.F90",
            "adg1_adg2_3d_luhar_pdf.F90",
            "calc_pressure.F90",
            "precipitation_fraction.F90",
            "diffusion.F90",
            "numerical_check.F90",
            "pos_definite_module.F90",
            "parameters_tunable.F90",
            "hydromet_pdf_parameter_module.F90",
            "sponge_layer_damping.F90",
            "turbulent_adv_pdf.F90",
            "advance_clubb_core_module.F90",
            "advance_xp3_module.F90",
            "mean_adv.F90",
            "fill_holes.F90",
            "sigma_sqd_w_module.F90",
            "stats_type.F90",
            "stats_clubb_utilities.F90",
            "sfc_varnce_module.F90"
          ],
          "commitId" : "90c974765822217b0693858a0ac0f115c5b964a2",
          "timestamp" : 1724333265000,
          "author" : {
            "absoluteUrl" : "http://carson.math.uwm.edu/jenkins/user/noreply",
            "fullName" : "noreply"
          },
          "authorEmail" : "noreply@github.com",
          "comment" : "Clubb ghost exorcism (#1159)\u000a\u000a* I am adding grid_class_new.F90 to the code as a copy of grid_class.F90.\u000a\u000aThe first step toward removing the ghost level from the model is to\u000amodify the grid file. Having a second grid file in play will allow\u000afunctions and subroutines that are undergoing modification earlier in\u000athis process to use the new file, while functions and subroutines that\u000ahave not yet been modified will continue to use the old grid file\u000auntil they can be modified.\u000a\u000aAt the end of this process, the old grid file will be able to be\u000aremoved and grid_class_new.F90 will simply be able to be renamed\u000agrid_class.F90 at that point.\u000a\u000aIn this commit, I have altered the schematic and the comments\u000aat the very start of the module to be \"ghostless\".\u000a\u000a* Updated grid_class for the changes to the grid interpolation weighting\u000afunctions for the new \"ghostless\" ascending grid.\u000a\u000a* Committing some updates to the new grid class file for ghostless\u000aascending.\u000a\u000a* Updating to match recent changes made to grid_class.F90.\u000a\u000a* I finished the removal of the ghost level from the entirety of the new\u000agrid_class file. This standalone file compiles successfully.\u000a\u000a* Removing the sources of compiler warnings in grid_class_new.F90 (these\u000awere carried over from grid_class.F90).\u000a\u000a* Committing progress in advance_wp2_wp3_module.F90 with regards to\u000aghostless grid.\u000a\u000a* I am committing the updated version of grid_class_new.F90 that allows\u000aall cases to run, regardless of grid_type.\u000a\u000a* Fixed a bug in grid_class_new.F90\u000a\u000aWhen grid_type = 2, the calculations of the indices begin_height and\u000aend_height are based on the thermodynamic level grids. Those grid indices\u000ashould be used in the call to setup_grid_heights, where the array of\u000athermodynamic_heights, from index begin_height to index end_height,\u000ashould become gr%zt.\u000a\u000aWhen grid_type - 3, the calculations of the indices begin_height and\u000aend_height are based on the momentum grid levels.\u000a\u000aEither way, momentum_heights and thermodynamic_heights should both\u000ahave the array from begin_height to end_height passed in. When\u000agrid_type = 2, only the thermodynamic height array is relevant in\u000athe setup. When grid_type = 3, only the momentum height array is\u000arelevant in the setup.\u000a\u000a* For thermodynamic_height, 1:nzmax-1 is the entire array, but I\u000aentered this for a clarification, especially considering the\u000afollowing check block.\u000a\u000a* Updated grid_class_new to better handle the begin_height and end_height indices.\u000a\u000a* Some modifications to advance_wp2_wp3\u000a\u000a* Committed some temporary code.\u000a\u000a* committed some temporary changes to clubb_api_module.\u000a\u000a* Making a bunch of commits to clubb_driver that are mainly temporary for\u000ainterface and printing purposes.\u000a\u000a* Deghosted another subroutine.\u000a\u000a* Updated wp2_term_ta_lhs to use the new gridding.\u000a\u000a* De-ghosting wp2_terms_ac_pr2_lhs\u000a\u000a* De-ghosted wp2_term_pr3_rhs\u000a\u000a* Deghosting wp3_term_tp_lhs.\u000a\u000a* Deghosted wp3_terms_ac_pr2_lhs\u000a\u000a* Updated the wp3_term_ta_ADG1_lhs subroutine to use boundary conditions\u000awhere wp3 (at the top level and bottom momentum levels of the model)\u000ais assumed to have a value of 0.\u000a\u000a* For single loop vectors, removing the \"collapse(2)\" from the acc\u000astatements.\u000a\u000aThis commit is not bit changing, but the previous commit to this branch\u000awas BIT_CHANGING:902d6caed8a4533f59f4165106276959b4f90895\u000a\u000a* I updated wp3_term_ta_explicit_rhs for the ghostless grid.\u000a\u000aWhen l_explicit_turbulent_adv_wp3 is turned on, the results from\u000athis branch exactly match those found on the master branch.\u000a\u000a* Updating diffusion_zm_lhs for \"Ghostless\" gridding.\u000a\u000a* Fixed a typo in the comments that was introduced in the previous commit.\u000a\u000a* Updated for \"ghostless\" diffusion.\u000a\u000a* With wp3 now being set to a fixed-point boundary condition value\u000aof 0 at the current thermodynamic level 1 (first t-lev above the\u000asurface), it is not necessary to loop over level 1 within the code\u000afor each wp3 term.\u000a\u000aAlso contains code to enforce a fixed-point boundary condition\u000aof wp3=0 at the first thermodynamic level above the surface.\u000a\u000a* Restoring diffusion to the way it should be for the exorcised ghost grid\u000aprior to the most recent master merge. Lines for the ghost point were\u000aaccidentally added during the merge commit.\u000a\u000a* Updated code to correct wp3_bp1 and wp3_pr2 budget terms so that\u000athey still match bit-for-bit what is found in the master branch.\u000a\u000a* Updating term_ma_zm_lhs for ghostless gridding. Results are bit-for-bit\u000aidentical.\u000a\u000a* After debugging, I am now committing the ghostless version of\u000aterm_ma_zt_lhs.\u000a\u000a* Updating the clubb_ghost_exorcism branch for ghostless wp23 rhs,\u000alhs, and solve.\u000a\u000aThis revision runs; however, there are still some issues tracking\u000adown the source of problems in maintaining bit-for-bit results.\u000a\u000a* Updated to maintain bit-for-bitness with the master code.\u000a\u000a* Finished exorcising the ghost from advance_wp2_wp3_module.F90.\u000a\u000a* Small openacc changes to fix GPU runs\u000a\u000a* Adjusting new hybrid PDF code to continue to match the master branch\u000abit-for-bit while construction continues.\u000a\u000a* Committing the first portion of a nomenclature change where the number\u000aof momentum vertical grid levels is denoted as nzm rather than nz.\u000a\u000a* Changing the notation of the number of grid levels on the momentum grid,\u000apreviously nz, to nzm in some files.\u000a\u000a* Changed some comments and a little bit of code in the new grid_class\u000afile to provide a better description.\u000a\u000a* Updated sigma_sqd_w_module for ghostless gridding.\u000a\u000a* I added the new \"ghostless\" discretization to turbulent_adv_pdf.F90,\u000aand also appropriately altered the points in the code where the\u000aturbulent advection subroutines are called from in\u000aadvance_xm_wpxp_module.F90 and advance_xp2_xpyp_module.F90.\u000a\u000aThe code produced bit-for-bit results in regards to the standard\u000aconfiguration, the new hybrid PDF configuration, and also for the\u000aconfiguration with the godunov flags turned on.\u000a\u000a* Altered many of the lower-level subroutines in\u000aadvance_xp2_xpyp_module.F90 for ghostless gridding.\u000a\u000a* Upgraded subroutine calc_xp2_xpyp_ta_terms for ghostless discretization.\u000a\u000aThis should alter the results when the new_hybrid PDF is used in\u000aconjunction with upwind discretization, but it doesn't alter the\u000aresults for anything else.\u000a\u000a* Completed making advance_xp2_xpyp ghostless.\u000a\u000a* Completed the de-ghosting of advance_windm_edsclrm.\u000a\u000aResults are BIT_CHANGING because the ghost level was interacting with\u000athe results.\u000a\u000a* The call to calc_xpwp from advance_microphys was not supposed to be\u000aupdated yet. It wound up being sort of \"partially updated\" for\u000aghostless gridding, which was a bug that led to some diagnostic output\u000afields not being bit-for-bit. In this commit, I returned it to its prior\u000aform so that zm output files once again retain bit-for-bit status\u000abetween this branch and the master.\u000a\u000a* The ghost point interface statements after the return from\u000aadvance_windm_edsclrm needed to be encased in the same conditional\u000astatements that the calculations occurred in with the aforementioned\u000asubroutine. This change fixes a bug where a handful of cases had results\u000athat were not bit-for-bit from revisions before this code was added.\u000a\u000a* Fixed bug where the wrong stats were being recorded to the stats\u000afor coef_wpthlp2_implicit, etc.\u000a\u000a* I am committing a bug fix to the implicit surface flux calculation\u000ain the eddy-diffusivity wind code (which is used when\u000al_predict_upwp_vpwp is turned off).\u000a\u000aI am also committing some temporary ghost point interface stats code\u000awithin advance_windm_edsclrm.\u000a\u000a* I updated the diagrams in advance_windm_edsclrm to reflect the\u000anew ghostless grid.\u000a\u000a* I improved the description section of advance_windm_edsclrm.\u000a\u000a* Made numerous low-level subroutines ghostless within\u000aadvance_xm_wpxp_module.F90. Maintained bit-for-bit results\u000awith the master branch.\u000a\u000a* I am updating the xm wpxp code that calls the wpxp turbulent advection\u000aterm based on your PDF and option for ghostless gridding.\u000a\u000a* Updating some of the lower-level functions of the monotonic flux limiter\u000afor ghostless gridding.\u000a\u000a* I have updated the monotonic flux limiter for ghostless gridding!\u000a\u000a* A couple of redundant declarations were brought in on the last merge.\u000a\u000a* Committing further updates to ghostless gridding, including:\u000a\u000a1) Further modifications to advance_xm_wpxp, which includes branching\u000aout in Brunt-Vaisala frequency calculations in advance_helper;\u000a\u000a2) Update in calculating the initial pressure;\u000a\u000aand 3) updating grid class new to use the same \"value drop down\"\u000ain the zt2zm function and \"derivative drop down\" in the ddzt function\u000athat are now used in grid_class in the master.\u000a\u000aResults are bit-for-bit identical with the master.\u000a\u000a* Updated xm_wpxp_lhs for ghostless gridding.\u000a\u000a* Made xm_wpxp_rhs ghostless.\u000a\u000a* Updated xm_wpxp_solve for ghostless gridding!\u000a\u000a* Updating pos_definite_module.F90 for ghostless gridding.\u000a\u000a* Updated vertical hole filling and xm clipping and stats for\u000aghost point removal.\u000a\u000aResults are still bit-for-bit with the master branch.\u000a\u000a* Updated advance_xm_wpxp to remove the ghost point.\u000a\u000a* Updating some zt stats to use a value of 0 for the \"ghost\" level.\u000a\u000a* Updated subroutine compute_mixing_length for ghostless gridding.\u000a\u000a* Removing the ghost point from calculate_Lscale_directly\u000a\u000a* Added a \"ghostbuster\" option (-g) in the run_bindiff_all.py python\u000ascript that omits the \"ghost\" level from the comparison for _zt.nc\u000aoutput files when envoked.\u000a\u000a* I de-ghosted the l_diagnose_Lscale_from_tau code.\u000a\u000a* Fixing a couple bugs with the merge.\u000a\u000a* De-ghosted a couple of subroutines with advance_helper_module.F90.\u000a\u000a* Code wasn't compiling because of too many characters on one line.\u000a\u000a* De-ghosted precipitation_fraction.F90.\u000a\u000a* De-ghosted more code, including sfc_varnce_module.F90.\u000a\u000a* De-ghosted numerical_check.F90\u000a\u000a* Committing a chunk of code that effectively \"finishes off\" the\u000adeghosting of CLUBB core, although results aren't there yet and it still\u000aneeds more debugging.\u000a\u000a* This corrects the bug where an error would occur when trying to compare\u000aa run with a ghost level to a run without a ghost level.\u000a\u000a* Commiting some necessary ghost point removal code.\u000a\u000a* Updated the calculations of rcm_in_layer and cloud_cover for ghostless\u000agridding.\u000a\u000a* I removed the ghost point from all the files within the Benchmark_cases\u000adirectory.\u000a\u000a* I am committing code that removes the ghost level from\u000asetup_clubb_pdf_params and most of the collection of CLUBB's\u000amicrophysics schemes.\u000a\u000a* Fixing a bug in SILHS where sample point values were being overwritten\u000aat level 1.\u000a\u000a* I fixed some bugs in the ghostless version of the Morrison microphysics\u000adriver.\u000a\u000a* I fixed some array declaration mismatches in silhs_api_module.F90.\u000a\u000a* I have deghosted the call to the code that calculates microphysics\u000atendencies and everything below it.\u000a\u000a* Performed a de-ghosting, as well as an improvement that ensures\u000athat mean sedimentation is always conservative (excluding the\u000aamount of hydrometeor that leaves the domain at the surface),\u000ato all subroutines at the level of microphys_lhs and lower\u000ain advance_microphys_module.F90. This includes all\u000aprocess-related subroutines like those that govern\u000asedimentation or turbulent sedimentation.\u000a\u000aGee, how is it possible that such are large amount of work\u000agets done when there's no office. It must have been magic\u000aelves who did it. I mean, a physical office must be key\u000ato every element of functioning in life, right?\u000a\u000a* Reversing the accidental stats file commit I made in the previous\u000acommit.\u000a\u000a* Updating the \"leftovers\" from the previous merge to make it consistent\u000awith the call syntax in the new, ghostless CLUBB.\u000a\u000a* Updated the turbulent sedimentation code to handle upper and lower\u000aboundary conditions in a better manner.\u000a\u000a* I have finished de-ghosting the entirety of advance_microphys_module.F90\u000aand all codes that are underneath its umbrella.\u000a\u000a* I finished de-ghosting the radiation portion of CLUBB.\u000a\u000a* I have removed the ghost level from hydrostatic_module.F90.\u000a\u000a* I removed the ghost point from parameters_tunable and started\u000areferencing the ghostless grid through the entirety of clubb_api_module\u000aas well as in all of the G-unit tests.\u000a\u000a* Deghosted another file. Not too many left.\u000a\u000a* Deghosted sounding.F90\u000a\u000a* I have deghosted clubb_driver.F90 and everything below its umbrella,\u000awhich is a huge benchmark in this process.\u000a\u000a* It is not necessary to de-ghost the source code for the tuner, since\u000athe information on what levels it is tuning for is fed in from input\u000afiles.\u000a\u000aWithin the tuner input files, I have adjusted the tuning ranges by 1\u000ato compensate for the fact that the ghost level has now been entirely\u000aremoved from the model.\u000a\u000a* Got rid of some unnecessary \"use grid_class\" statements that were\u000astill referencing the old grid.\u000a\u000a* I have found a bug in the ghostless SILHS code in the SILHS\u000acode that calculates the variances and covariances of moisture\u000aand heat (that are fed back into the model predictive equations).\u000aIn short, variables that were used to store the grid mean values\u000aof thl, rt, and w were being set to 0 at level 1. This was fine\u000awhen level 1 was the ghost level, but level 1 is no longer the\u000aghost level. This was root cause of the issue.\u000a\u000a* The line that sets rand_pool at level 1 that was merged in during\u000athe previous merge commit needs to be removed.\u000a\u000a* These lines also needed to be fixed because they were supposed to\u000abe changed to nzt / 2 after the previous merge commit.\u000a\u000a* Correcting a bug in coamps microphysics regarded the unnecessary\u000ainterpolation of hydrometeor sedimentation velocities to the zm grid.\u000aThis interpolation is a bug because CLUBB expects hydrometeor velocities\u000aoutput on the zt grid.\u000a\u000a* I am committing a fix to the _ta budget terms. It will fix the error\u000amessages as well allow for budget term agreement between the master\u000aand clubb_ghost_exorcism branches.\u000a\u000a* Fixing an error in the ghostless budget stats for turbulent\u000asedimentation.\u000a\u000a* After the merge, I am once again updating the merged code for\u000aghost level removal.\u000a\u000a* Getting rid of leftover ghost removal junk that was still lying around.\u000a\u000a* I needed to pass p_sfc inside CLUBB core to help set the value\u000aof p_in_Pa_zm at level 1.\u000a\u000a* C11_Skw_fnc is a zt variable, while Cx_fnc_Richardson is a zm variable.\u000aThe offset is to keep results the same between the current master\u000abranch and the clubb_ghost_exorcism branch when the l_use_C11_Richardson\u000aflag is enabled.\u000a\u000a* Fixed a bug.\u000a\u000a* I found a couple more instances where the api had dimensions switched\u000aaround.\u000a\u000a* Eliminated diffusion_cloud_frac_zt_lhs, which is unused code that isn't\u000aeven hooked up (called from) anywhere in the model anymore.\u000a\u000a* Changes that also needed to be made with the previous commit.\u000a\u000a* The source of the array out-of-bounds error.\u000a\u000a* Moving grid_class_new back to grid_class!\u000a\u000a* Reminder notes in case input_fields gets used in the future.\u000a\u000a* I accidentally committed input fields related changes to rico_model.in\u000athat weren't meant to be committed in the previous commit. I am undoing\u000athose now.\u000a\u000a* Having clubb thermodynamic level 1 below the surface is no longer\u000athe stanard scenario!\u000a\u000a---------\u000a\u000aCo-authored-by: Gunther Huebler <huebler@uwm.edu>\u000a",
          "date" : "2024-08-22 08:27:45 -0500",
          "id" : "90c974765822217b0693858a0ac0f115c5b964a2",
          "msg" : "Clubb ghost exorcism (#1159)",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "calc_pressure.F90"
            },
            {
              "editType" : "edit",
              "file" : "sigma_sqd_w_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "mono_flux_limiter.F90"
            },
            {
              "editType" : "edit",
              "file" : "stats_clubb_utilities.F90"
            },
            {
              "editType" : "edit",
              "file" : "advance_wp2_wp3_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "advance_clubb_core_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "advance_xp3_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "fill_holes.F90"
            },
            {
              "editType" : "edit",
              "file" : "mean_adv.F90"
            },
            {
              "editType" : "edit",
              "file" : "precipitation_fraction.F90"
            },
            {
              "editType" : "edit",
              "file" : "sponge_layer_damping.F90"
            },
            {
              "editType" : "edit",
              "file" : "advance_xp2_xpyp_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "mixing_length.F90"
            },
            {
              "editType" : "edit",
              "file" : "sfc_varnce_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "turbulent_adv_pdf.F90"
            },
            {
              "editType" : "edit",
              "file" : "diffusion.F90"
            },
            {
              "editType" : "edit",
              "file" : "parameters_tunable.F90"
            },
            {
              "editType" : "edit",
              "file" : "advance_xm_wpxp_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "Skx_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "hydromet_pdf_parameter_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "setup_clubb_pdf_params.F90"
            },
            {
              "editType" : "edit",
              "file" : "numerical_check.F90"
            },
            {
              "editType" : "edit",
              "file" : "grid_class.F90"
            },
            {
              "editType" : "edit",
              "file" : "advance_windm_edsclrm_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "clip_explicit.F90"
            },
            {
              "editType" : "edit",
              "file" : "adg1_adg2_3d_luhar_pdf.F90"
            },
            {
              "editType" : "edit",
              "file" : "pos_definite_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "advance_helper_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "clubb_api_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "stats_type.F90"
            },
            {
              "editType" : "edit",
              "file" : "pdf_closure_module.F90"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "silhs_api_module.F90",
            "est_kessler_microphys_module.F90",
            "transform_to_pdf_module.F90",
            "lh_microphys_var_covar_module.F90",
            "latin_hypercube_driver_module.F90",
            "output_2D_samples_module.F90"
          ],
          "commitId" : "3b4700eb924086aac1093d1401fb4f59c7a66b50",
          "timestamp" : 1724333265000,
          "author" : {
            "absoluteUrl" : "http://carson.math.uwm.edu/jenkins/user/noreply",
            "fullName" : "noreply"
          },
          "authorEmail" : "noreply@github.com",
          "comment" : "Clubb ghost exorcism (#1159)\u000a\u000a* I am adding grid_class_new.F90 to the code as a copy of grid_class.F90.\u000a\u000aThe first step toward removing the ghost level from the model is to\u000amodify the grid file. Having a second grid file in play will allow\u000afunctions and subroutines that are undergoing modification earlier in\u000athis process to use the new file, while functions and subroutines that\u000ahave not yet been modified will continue to use the old grid file\u000auntil they can be modified.\u000a\u000aAt the end of this process, the old grid file will be able to be\u000aremoved and grid_class_new.F90 will simply be able to be renamed\u000agrid_class.F90 at that point.\u000a\u000aIn this commit, I have altered the schematic and the comments\u000aat the very start of the module to be \"ghostless\".\u000a\u000a* Updated grid_class for the changes to the grid interpolation weighting\u000afunctions for the new \"ghostless\" ascending grid.\u000a\u000a* Committing some updates to the new grid class file for ghostless\u000aascending.\u000a\u000a* Updating to match recent changes made to grid_class.F90.\u000a\u000a* I finished the removal of the ghost level from the entirety of the new\u000agrid_class file. This standalone file compiles successfully.\u000a\u000a* Removing the sources of compiler warnings in grid_class_new.F90 (these\u000awere carried over from grid_class.F90).\u000a\u000a* Committing progress in advance_wp2_wp3_module.F90 with regards to\u000aghostless grid.\u000a\u000a* I am committing the updated version of grid_class_new.F90 that allows\u000aall cases to run, regardless of grid_type.\u000a\u000a* Fixed a bug in grid_class_new.F90\u000a\u000aWhen grid_type = 2, the calculations of the indices begin_height and\u000aend_height are based on the thermodynamic level grids. Those grid indices\u000ashould be used in the call to setup_grid_heights, where the array of\u000athermodynamic_heights, from index begin_height to index end_height,\u000ashould become gr%zt.\u000a\u000aWhen grid_type - 3, the calculations of the indices begin_height and\u000aend_height are based on the momentum grid levels.\u000a\u000aEither way, momentum_heights and thermodynamic_heights should both\u000ahave the array from begin_height to end_height passed in. When\u000agrid_type = 2, only the thermodynamic height array is relevant in\u000athe setup. When grid_type = 3, only the momentum height array is\u000arelevant in the setup.\u000a\u000a* For thermodynamic_height, 1:nzmax-1 is the entire array, but I\u000aentered this for a clarification, especially considering the\u000afollowing check block.\u000a\u000a* Updated grid_class_new to better handle the begin_height and end_height indices.\u000a\u000a* Some modifications to advance_wp2_wp3\u000a\u000a* Committed some temporary code.\u000a\u000a* committed some temporary changes to clubb_api_module.\u000a\u000a* Making a bunch of commits to clubb_driver that are mainly temporary for\u000ainterface and printing purposes.\u000a\u000a* Deghosted another subroutine.\u000a\u000a* Updated wp2_term_ta_lhs to use the new gridding.\u000a\u000a* De-ghosting wp2_terms_ac_pr2_lhs\u000a\u000a* De-ghosted wp2_term_pr3_rhs\u000a\u000a* Deghosting wp3_term_tp_lhs.\u000a\u000a* Deghosted wp3_terms_ac_pr2_lhs\u000a\u000a* Updated the wp3_term_ta_ADG1_lhs subroutine to use boundary conditions\u000awhere wp3 (at the top level and bottom momentum levels of the model)\u000ais assumed to have a value of 0.\u000a\u000a* For single loop vectors, removing the \"collapse(2)\" from the acc\u000astatements.\u000a\u000aThis commit is not bit changing, but the previous commit to this branch\u000awas BIT_CHANGING:902d6caed8a4533f59f4165106276959b4f90895\u000a\u000a* I updated wp3_term_ta_explicit_rhs for the ghostless grid.\u000a\u000aWhen l_explicit_turbulent_adv_wp3 is turned on, the results from\u000athis branch exactly match those found on the master branch.\u000a\u000a* Updating diffusion_zm_lhs for \"Ghostless\" gridding.\u000a\u000a* Fixed a typo in the comments that was introduced in the previous commit.\u000a\u000a* Updated for \"ghostless\" diffusion.\u000a\u000a* With wp3 now being set to a fixed-point boundary condition value\u000aof 0 at the current thermodynamic level 1 (first t-lev above the\u000asurface), it is not necessary to loop over level 1 within the code\u000afor each wp3 term.\u000a\u000aAlso contains code to enforce a fixed-point boundary condition\u000aof wp3=0 at the first thermodynamic level above the surface.\u000a\u000a* Restoring diffusion to the way it should be for the exorcised ghost grid\u000aprior to the most recent master merge. Lines for the ghost point were\u000aaccidentally added during the merge commit.\u000a\u000a* Updated code to correct wp3_bp1 and wp3_pr2 budget terms so that\u000athey still match bit-for-bit what is found in the master branch.\u000a\u000a* Updating term_ma_zm_lhs for ghostless gridding. Results are bit-for-bit\u000aidentical.\u000a\u000a* After debugging, I am now committing the ghostless version of\u000aterm_ma_zt_lhs.\u000a\u000a* Updating the clubb_ghost_exorcism branch for ghostless wp23 rhs,\u000alhs, and solve.\u000a\u000aThis revision runs; however, there are still some issues tracking\u000adown the source of problems in maintaining bit-for-bit results.\u000a\u000a* Updated to maintain bit-for-bitness with the master code.\u000a\u000a* Finished exorcising the ghost from advance_wp2_wp3_module.F90.\u000a\u000a* Small openacc changes to fix GPU runs\u000a\u000a* Adjusting new hybrid PDF code to continue to match the master branch\u000abit-for-bit while construction continues.\u000a\u000a* Committing the first portion of a nomenclature change where the number\u000aof momentum vertical grid levels is denoted as nzm rather than nz.\u000a\u000a* Changing the notation of the number of grid levels on the momentum grid,\u000apreviously nz, to nzm in some files.\u000a\u000a* Changed some comments and a little bit of code in the new grid_class\u000afile to provide a better description.\u000a\u000a* Updated sigma_sqd_w_module for ghostless gridding.\u000a\u000a* I added the new \"ghostless\" discretization to turbulent_adv_pdf.F90,\u000aand also appropriately altered the points in the code where the\u000aturbulent advection subroutines are called from in\u000aadvance_xm_wpxp_module.F90 and advance_xp2_xpyp_module.F90.\u000a\u000aThe code produced bit-for-bit results in regards to the standard\u000aconfiguration, the new hybrid PDF configuration, and also for the\u000aconfiguration with the godunov flags turned on.\u000a\u000a* Altered many of the lower-level subroutines in\u000aadvance_xp2_xpyp_module.F90 for ghostless gridding.\u000a\u000a* Upgraded subroutine calc_xp2_xpyp_ta_terms for ghostless discretization.\u000a\u000aThis should alter the results when the new_hybrid PDF is used in\u000aconjunction with upwind discretization, but it doesn't alter the\u000aresults for anything else.\u000a\u000a* Completed making advance_xp2_xpyp ghostless.\u000a\u000a* Completed the de-ghosting of advance_windm_edsclrm.\u000a\u000aResults are BIT_CHANGING because the ghost level was interacting with\u000athe results.\u000a\u000a* The call to calc_xpwp from advance_microphys was not supposed to be\u000aupdated yet. It wound up being sort of \"partially updated\" for\u000aghostless gridding, which was a bug that led to some diagnostic output\u000afields not being bit-for-bit. In this commit, I returned it to its prior\u000aform so that zm output files once again retain bit-for-bit status\u000abetween this branch and the master.\u000a\u000a* The ghost point interface statements after the return from\u000aadvance_windm_edsclrm needed to be encased in the same conditional\u000astatements that the calculations occurred in with the aforementioned\u000asubroutine. This change fixes a bug where a handful of cases had results\u000athat were not bit-for-bit from revisions before this code was added.\u000a\u000a* Fixed bug where the wrong stats were being recorded to the stats\u000afor coef_wpthlp2_implicit, etc.\u000a\u000a* I am committing a bug fix to the implicit surface flux calculation\u000ain the eddy-diffusivity wind code (which is used when\u000al_predict_upwp_vpwp is turned off).\u000a\u000aI am also committing some temporary ghost point interface stats code\u000awithin advance_windm_edsclrm.\u000a\u000a* I updated the diagrams in advance_windm_edsclrm to reflect the\u000anew ghostless grid.\u000a\u000a* I improved the description section of advance_windm_edsclrm.\u000a\u000a* Made numerous low-level subroutines ghostless within\u000aadvance_xm_wpxp_module.F90. Maintained bit-for-bit results\u000awith the master branch.\u000a\u000a* I am updating the xm wpxp code that calls the wpxp turbulent advection\u000aterm based on your PDF and option for ghostless gridding.\u000a\u000a* Updating some of the lower-level functions of the monotonic flux limiter\u000afor ghostless gridding.\u000a\u000a* I have updated the monotonic flux limiter for ghostless gridding!\u000a\u000a* A couple of redundant declarations were brought in on the last merge.\u000a\u000a* Committing further updates to ghostless gridding, including:\u000a\u000a1) Further modifications to advance_xm_wpxp, which includes branching\u000aout in Brunt-Vaisala frequency calculations in advance_helper;\u000a\u000a2) Update in calculating the initial pressure;\u000a\u000aand 3) updating grid class new to use the same \"value drop down\"\u000ain the zt2zm function and \"derivative drop down\" in the ddzt function\u000athat are now used in grid_class in the master.\u000a\u000aResults are bit-for-bit identical with the master.\u000a\u000a* Updated xm_wpxp_lhs for ghostless gridding.\u000a\u000a* Made xm_wpxp_rhs ghostless.\u000a\u000a* Updated xm_wpxp_solve for ghostless gridding!\u000a\u000a* Updating pos_definite_module.F90 for ghostless gridding.\u000a\u000a* Updated vertical hole filling and xm clipping and stats for\u000aghost point removal.\u000a\u000aResults are still bit-for-bit with the master branch.\u000a\u000a* Updated advance_xm_wpxp to remove the ghost point.\u000a\u000a* Updating some zt stats to use a value of 0 for the \"ghost\" level.\u000a\u000a* Updated subroutine compute_mixing_length for ghostless gridding.\u000a\u000a* Removing the ghost point from calculate_Lscale_directly\u000a\u000a* Added a \"ghostbuster\" option (-g) in the run_bindiff_all.py python\u000ascript that omits the \"ghost\" level from the comparison for _zt.nc\u000aoutput files when envoked.\u000a\u000a* I de-ghosted the l_diagnose_Lscale_from_tau code.\u000a\u000a* Fixing a couple bugs with the merge.\u000a\u000a* De-ghosted a couple of subroutines with advance_helper_module.F90.\u000a\u000a* Code wasn't compiling because of too many characters on one line.\u000a\u000a* De-ghosted precipitation_fraction.F90.\u000a\u000a* De-ghosted more code, including sfc_varnce_module.F90.\u000a\u000a* De-ghosted numerical_check.F90\u000a\u000a* Committing a chunk of code that effectively \"finishes off\" the\u000adeghosting of CLUBB core, although results aren't there yet and it still\u000aneeds more debugging.\u000a\u000a* This corrects the bug where an error would occur when trying to compare\u000aa run with a ghost level to a run without a ghost level.\u000a\u000a* Commiting some necessary ghost point removal code.\u000a\u000a* Updated the calculations of rcm_in_layer and cloud_cover for ghostless\u000agridding.\u000a\u000a* I removed the ghost point from all the files within the Benchmark_cases\u000adirectory.\u000a\u000a* I am committing code that removes the ghost level from\u000asetup_clubb_pdf_params and most of the collection of CLUBB's\u000amicrophysics schemes.\u000a\u000a* Fixing a bug in SILHS where sample point values were being overwritten\u000aat level 1.\u000a\u000a* I fixed some bugs in the ghostless version of the Morrison microphysics\u000adriver.\u000a\u000a* I fixed some array declaration mismatches in silhs_api_module.F90.\u000a\u000a* I have deghosted the call to the code that calculates microphysics\u000atendencies and everything below it.\u000a\u000a* Performed a de-ghosting, as well as an improvement that ensures\u000athat mean sedimentation is always conservative (excluding the\u000aamount of hydrometeor that leaves the domain at the surface),\u000ato all subroutines at the level of microphys_lhs and lower\u000ain advance_microphys_module.F90. This includes all\u000aprocess-related subroutines like those that govern\u000asedimentation or turbulent sedimentation.\u000a\u000aGee, how is it possible that such are large amount of work\u000agets done when there's no office. It must have been magic\u000aelves who did it. I mean, a physical office must be key\u000ato every element of functioning in life, right?\u000a\u000a* Reversing the accidental stats file commit I made in the previous\u000acommit.\u000a\u000a* Updating the \"leftovers\" from the previous merge to make it consistent\u000awith the call syntax in the new, ghostless CLUBB.\u000a\u000a* Updated the turbulent sedimentation code to handle upper and lower\u000aboundary conditions in a better manner.\u000a\u000a* I have finished de-ghosting the entirety of advance_microphys_module.F90\u000aand all codes that are underneath its umbrella.\u000a\u000a* I finished de-ghosting the radiation portion of CLUBB.\u000a\u000a* I have removed the ghost level from hydrostatic_module.F90.\u000a\u000a* I removed the ghost point from parameters_tunable and started\u000areferencing the ghostless grid through the entirety of clubb_api_module\u000aas well as in all of the G-unit tests.\u000a\u000a* Deghosted another file. Not too many left.\u000a\u000a* Deghosted sounding.F90\u000a\u000a* I have deghosted clubb_driver.F90 and everything below its umbrella,\u000awhich is a huge benchmark in this process.\u000a\u000a* It is not necessary to de-ghost the source code for the tuner, since\u000athe information on what levels it is tuning for is fed in from input\u000afiles.\u000a\u000aWithin the tuner input files, I have adjusted the tuning ranges by 1\u000ato compensate for the fact that the ghost level has now been entirely\u000aremoved from the model.\u000a\u000a* Got rid of some unnecessary \"use grid_class\" statements that were\u000astill referencing the old grid.\u000a\u000a* I have found a bug in the ghostless SILHS code in the SILHS\u000acode that calculates the variances and covariances of moisture\u000aand heat (that are fed back into the model predictive equations).\u000aIn short, variables that were used to store the grid mean values\u000aof thl, rt, and w were being set to 0 at level 1. This was fine\u000awhen level 1 was the ghost level, but level 1 is no longer the\u000aghost level. This was root cause of the issue.\u000a\u000a* The line that sets rand_pool at level 1 that was merged in during\u000athe previous merge commit needs to be removed.\u000a\u000a* These lines also needed to be fixed because they were supposed to\u000abe changed to nzt / 2 after the previous merge commit.\u000a\u000a* Correcting a bug in coamps microphysics regarded the unnecessary\u000ainterpolation of hydrometeor sedimentation velocities to the zm grid.\u000aThis interpolation is a bug because CLUBB expects hydrometeor velocities\u000aoutput on the zt grid.\u000a\u000a* I am committing a fix to the _ta budget terms. It will fix the error\u000amessages as well allow for budget term agreement between the master\u000aand clubb_ghost_exorcism branches.\u000a\u000a* Fixing an error in the ghostless budget stats for turbulent\u000asedimentation.\u000a\u000a* After the merge, I am once again updating the merged code for\u000aghost level removal.\u000a\u000a* Getting rid of leftover ghost removal junk that was still lying around.\u000a\u000a* I needed to pass p_sfc inside CLUBB core to help set the value\u000aof p_in_Pa_zm at level 1.\u000a\u000a* C11_Skw_fnc is a zt variable, while Cx_fnc_Richardson is a zm variable.\u000aThe offset is to keep results the same between the current master\u000abranch and the clubb_ghost_exorcism branch when the l_use_C11_Richardson\u000aflag is enabled.\u000a\u000a* Fixed a bug.\u000a\u000a* I found a couple more instances where the api had dimensions switched\u000aaround.\u000a\u000a* Eliminated diffusion_cloud_frac_zt_lhs, which is unused code that isn't\u000aeven hooked up (called from) anywhere in the model anymore.\u000a\u000a* Changes that also needed to be made with the previous commit.\u000a\u000a* The source of the array out-of-bounds error.\u000a\u000a* Moving grid_class_new back to grid_class!\u000a\u000a* Reminder notes in case input_fields gets used in the future.\u000a\u000a* I accidentally committed input fields related changes to rico_model.in\u000athat weren't meant to be committed in the previous commit. I am undoing\u000athose now.\u000a\u000a* Having clubb thermodynamic level 1 below the surface is no longer\u000athe stanard scenario!\u000a\u000a---------\u000a\u000aCo-authored-by: Gunther Huebler <huebler@uwm.edu>\u000a",
          "date" : "2024-08-22 08:27:45 -0500",
          "id" : "3b4700eb924086aac1093d1401fb4f59c7a66b50",
          "msg" : "Clubb ghost exorcism (#1159)",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "latin_hypercube_driver_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "transform_to_pdf_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "lh_microphys_var_covar_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "output_2D_samples_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "est_kessler_microphys_module.F90"
            },
            {
              "editType" : "edit",
              "file" : "silhs_api_module.F90"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "src/physics/cam/clubb_mf.F90",
            "src/physics/cam/clubb_intr.F90",
            "src/physics/cam/subcol_SILHS.F90"
          ],
          "commitId" : "3c08a43e266cfa451689a1656bb486c3bd5a4464",
          "timestamp" : 1724392996000,
          "author" : {
            "absoluteUrl" : "http://carson.math.uwm.edu/jenkins/user/bmg2",
            "fullName" : "bmg2"
          },
          "authorEmail" : "bmg2@uwm.edu",
          "comment" : "Changes that are necessary to the CAM-CLUBB interface for ghostless\u000aCLUBB.\u000a",
          "date" : "2024-08-23 01:03:16 -0500",
          "id" : "3c08a43e266cfa451689a1656bb486c3bd5a4464",
          "msg" : "Changes that are necessary to the CAM-CLUBB interface for ghostless",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "src/physics/cam/clubb_intr.F90"
            },
            {
              "editType" : "edit",
              "file" : "src/physics/cam/subcol_SILHS.F90"
            },
            {
              "editType" : "edit",
              "file" : "src/physics/cam/clubb_mf.F90"
            }
          ]
        }
      ],
      "kind" : "git"
    }
  ],
  "culprits" : [
    {
      "absoluteUrl" : "http://carson.math.uwm.edu/jenkins/user/bmg2",
      "fullName" : "bmg2"
    },
    {
      "absoluteUrl" : "http://carson.math.uwm.edu/jenkins/user/noreply",
      "fullName" : "noreply"
    }
  ],
  "inProgress" : False,
  "nextBuild" : {
    "number" : 396,
    "url" : "http://carson.math.uwm.edu/jenkins/job/cam_global_ERP_Ln9_gfortran_test/396/"
  },
  "previousBuild" : {
    "number" : 394,
    "url" : "http://carson.math.uwm.edu/jenkins/job/cam_global_ERP_Ln9_gfortran_test/394/"
  }
}