From 39b119204b28308606d1b2e705fb762389980a50 Mon Sep 17 00:00:00 2001 From: Jesse Nusbaumer Date: Fri, 10 Jan 2025 15:30:56 -0700 Subject: [PATCH 1/8] Update PUMAS external with CCPP cap, and try using CCPP cap for init. --- .gitmodules | 4 +- cime_config/testdefs/testlist_cam.xml | 1 + src/physics/cam7/micro_pumas_cam.F90 | 97 ++++++++++++++------------- src/physics/pumas | 2 +- 4 files changed, 54 insertions(+), 50 deletions(-) diff --git a/.gitmodules b/.gitmodules index 752c3bf4f7..afee82f977 100644 --- a/.gitmodules +++ b/.gitmodules @@ -14,9 +14,9 @@ [submodule "pumas"] path = src/physics/pumas - url = https://github.com/ESCOMP/PUMAS + url = https://github.com/nusbaume/PUMAS fxrequired = AlwaysRequired - fxtag = pumas_cam-release_v1.36 + fxtag = c5a15a3 fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS [submodule "pumas-frozen"] diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index d0789ac1f3..443d6d8c9e 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -1898,6 +1898,7 @@ + diff --git a/src/physics/cam7/micro_pumas_cam.F90 b/src/physics/cam7/micro_pumas_cam.F90 index 5d76f36be5..2deac2f2a3 100644 --- a/src/physics/cam7/micro_pumas_cam.F90 +++ b/src/physics/cam7/micro_pumas_cam.F90 @@ -864,7 +864,7 @@ end subroutine micro_pumas_cam_init_cnst subroutine micro_pumas_cam_init(pbuf2d) use time_manager, only: is_first_step use micro_pumas_utils, only: micro_pumas_utils_init - use micro_pumas_v1, only: micro_mg_init3_0 => micro_pumas_init + use micro_pumas_ccpp, only: micro_pumas_ccpp_init use stochastic_tau_cam, only: stochastic_tau_init_cam use stochastic_emulated_cam, only: stochastic_emulated_init_cam @@ -877,15 +877,15 @@ subroutine micro_pumas_cam_init(pbuf2d) type(physics_buffer_desc), pointer :: pbuf2d(:,:) integer :: m, mm - logical :: history_amwg ! output the variables used by the AMWG diag package - logical :: history_budget ! Output tendencies and state variables for CAM4 - ! temperature, water vapor, cloud ice and cloud - ! liquid budgets. + logical :: history_amwg ! output the variables used by the AMWG diag package + logical :: history_budget ! Output tendencies and state variables for CAM4 + ! temperature, water vapor, cloud ice and cloud + ! liquid budgets. logical :: use_subcol_microp logical :: do_clubb_sgs - integer :: budget_histfile ! output history file number for budget fields + integer :: budget_histfile ! output history file number for budget fields integer :: ierr - character(128) :: errstring ! return status (non-blank for error return) + character(len=512) :: errstring ! return status (non-blank for error return) character(len=cl) :: stochastic_emulated_filename_quantile, stochastic_emulated_filename_input_scale, & stochastic_emulated_filename_output_scale @@ -926,27 +926,30 @@ subroutine micro_pumas_cam_init(pbuf2d) stochastic_emulated_filename_output_scale) end if - call micro_mg_init3_0( & - r8, gravit, rair, rh2o, cpair, & - tmelt, latvap, latice, rhmini, & - micro_mg_dcs, & - micro_mg_do_hail,micro_mg_do_graupel, & - microp_uniform, do_cldice, use_hetfrz_classnuc, & - micro_mg_precip_frac_method, micro_mg_berg_eff_factor, & - micro_mg_accre_enhan_fact , & - micro_mg_autocon_fact , micro_mg_autocon_nd_exp, micro_mg_autocon_lwp_exp, micro_mg_homog_size, & - micro_mg_vtrmi_factor, micro_mg_vtrms_factor, micro_mg_effi_factor, & - micro_mg_iaccr_factor, micro_mg_max_nicons, & - allow_sed_supersat, micro_mg_warm_rain, & - micro_mg_evap_sed_off, micro_mg_icenuc_rh_off, micro_mg_icenuc_use_meyers, & - micro_mg_evap_scl_ifs, micro_mg_evap_rhthrsh_ifs, & - micro_mg_rainfreeze_ifs, micro_mg_ifs_sed, micro_mg_precip_fall_corr,& - micro_mg_accre_sees_auto, micro_mg_implicit_fall, & - micro_mg_nccons, micro_mg_nicons, micro_mg_ncnst, & - micro_mg_ninst, micro_mg_ngcons, micro_mg_ngnst, & - micro_mg_nrcons, micro_mg_nrnst, micro_mg_nscons, micro_mg_nsnst, & - stochastic_emulated_filename_quantile, stochastic_emulated_filename_input_scale, & - stochastic_emulated_filename_output_scale, iulog, errstring) + call micro_pumas_ccpp_init(gravit, rair, rh2o, cpair, tmelt, latvap, latice, & + rhmini, iulog, micro_mg_do_hail, micro_mg_do_graupel, & + microp_uniform, do_cldice, use_hetfrz_classnuc, & + allow_sed_supersat, micro_mg_evap_sed_off, & + micro_mg_icenuc_rh_off, micro_mg_icenuc_use_meyers, & + micro_mg_evap_scl_ifs, micro_mg_evap_rhthrsh_ifs, & + micro_mg_rainfreeze_ifs, micro_mg_ifs_sed, & + micro_mg_precip_fall_corr, micro_mg_accre_sees_auto, & + micro_mg_implicit_fall, micro_mg_nccons, & + micro_mg_nicons, micro_mg_ngcons, micro_mg_nrcons, & + micro_mg_nscons, micro_mg_precip_frac_method, & + micro_mg_warm_rain, & + stochastic_emulated_filename_quantile, & + stochastic_emulated_filename_input_scale, & + stochastic_emulated_filename_output_scale, & + micro_mg_dcs, & + micro_mg_berg_eff_factor, micro_mg_accre_enhan_fact, & + micro_mg_autocon_fact, micro_mg_autocon_nd_exp, & + micro_mg_autocon_lwp_exp, micro_mg_homog_size, & + micro_mg_vtrmi_factor, micro_mg_vtrms_factor, & + micro_mg_effi_factor, micro_mg_iaccr_factor, & + micro_mg_max_nicons, micro_mg_ncnst, & + micro_mg_ninst, micro_mg_ngnst, micro_mg_nrnst, & + micro_mg_nsnst, errstring, ierr) call handle_errmsg(errstring, subname="micro_pumas_cam_init") @@ -1666,7 +1669,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) real(r8), pointer :: cld(:,:) ! Total cloud fraction real(r8), pointer :: concld(:,:) ! Convective cloud fraction real(r8), pointer :: prec_dp(:) ! Deep Convective precip - real(r8), pointer :: prec_sh(:) ! Shallow Convective precip + real(r8), pointer :: prec_sh(:) ! Shallow Convective precip real(r8), pointer :: iciwpst(:,:) ! Stratiform in-cloud ice water path for radiation real(r8), pointer :: iclwpst(:,:) ! Stratiform in-cloud liquid water path for radiation @@ -1996,7 +1999,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) else precc(:ncol) = 0._r8 end if - + if (.not. do_cldice) then ! If we are NOT prognosing ice and snow tendencies, then get them from the Pbuf call pbuf_get_field(pbuf, tnd_qsnow_idx, tnd_qsnow, col_type=col_type, copy_if_needed=use_subcol_microp) @@ -2175,10 +2178,10 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) call pbuf_get_field(pbuf, evpsnow_st_idx, evpsnow_st_grid) call pbuf_get_field(pbuf, am_evp_st_idx, am_evp_st_grid) - !----------------------------------------------------------------------- + !----------------------------------------------------------------------- ! ... Calculate cosine of zenith angle ! then cast back to angle (radians) - !----------------------------------------------------------------------- + !----------------------------------------------------------------------- zen_angle(:) = 0.0_r8 rlats(:) = 0.0_r8 @@ -2292,7 +2295,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) ! Zero out diagnostic rainbow arrays rbfreq = 0._r8 - rbfrac = 0._r8 + rbfrac = 0._r8 ! Zero out values above top_lev before passing into _tend for some pbuf variables that are inputs naai(:ncol,:top_lev-1) = 0._r8 @@ -3189,7 +3192,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) !----------------------------------------------------------------------- ! Diagnostic Rainbow Calculation. Seriously. !----------------------------------------------------------------------- - + do i = 1, ngrdcol top_idx = pver @@ -3197,14 +3200,14 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) frlow = 0._r8 cldmx = 0._r8 cldtot = maxval(ast(i,top_lev:)) - + ! Find levels in surface layer do k = top_lev, pver - if (state%pmid(i,k) > rb_pmin) then + if (state%pmid(i,k) > rb_pmin) then top_idx = min(k,top_idx) - end if - end do - + end if + end do + !For all fractional precip calculated below, use maximum in surface layer. !For convective precip, base on convective cloud area convmx = maxval(concld(i,top_idx:)) @@ -3220,27 +3223,27 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) ! (rval = true if any sig precip) rval = ((precc(i) > rb_rcmin) .or. (rmax > rb_rmin)) - + !Now can find conditions for a rainbow: ! Maximum cloud cover (CLDTOT) < 0.5 ! 48 < SZA < 90 ! freqr (below rb_pmin) > 0.25 -! Some rain (liquid > 1.e-6 kg/kg, convective precip > 1.e-7 m/s - - if ((cldtot < 0.5_r8) .and. (sza(i) > 48._r8) .and. (sza(i) < 90._r8) .and. rval) then +! Some rain (liquid > 1.e-6 kg/kg, convective precip > 1.e-7 m/s -!Rainbow 'probability' (area) derived from solid angle theory + if ((cldtot < 0.5_r8) .and. (sza(i) > 48._r8) .and. (sza(i) < 90._r8) .and. rval) then + +!Rainbow 'probability' (area) derived from solid angle theory !as the fraction of the hemisphere for a spherical cap with angle phi=sza-48. ! This is only valid between 48 < sza < 90 (controlled for above). rbfrac(i) = max(0._r8,(1._r8-COS((sza(i)-48._r8)*deg2rad))/2._r8) * frlow - rbfreq(i) = 1.0_r8 - end if + rbfreq(i) = 1.0_r8 + end if end do ! end column loop for rainbows call outfld('RBFRAC', rbfrac, psetcols, lchnk, avg_subcol_field=use_subcol_microp) - call outfld('RBFREQ', rbfreq, psetcols, lchnk, avg_subcol_field=use_subcol_microp) + call outfld('RBFREQ', rbfreq, psetcols, lchnk, avg_subcol_field=use_subcol_microp) ! --------------------- ! diff --git a/src/physics/pumas b/src/physics/pumas index 84f27d8042..c5a15a399a 160000 --- a/src/physics/pumas +++ b/src/physics/pumas @@ -1 +1 @@ -Subproject commit 84f27d804207e79e344e8deec98b471207f9b1f0 +Subproject commit c5a15a399a584d9614e61eee7d4f5267ef15107d From 08d79c7db66a4bc3540cf84ff02ae725471ebc2d Mon Sep 17 00:00:00 2001 From: Jesse Nusbaumer Date: Tue, 14 Jan 2025 16:20:17 -0700 Subject: [PATCH 2/8] Add PUMAS CCPP run-phase cap, and fix bugs found during testing. --- src/physics/cam7/micro_pumas_cam.F90 | 124 +++++++++++++++------------ 1 file changed, 68 insertions(+), 56 deletions(-) diff --git a/src/physics/cam7/micro_pumas_cam.F90 b/src/physics/cam7/micro_pumas_cam.F90 index 2deac2f2a3..44f93258cc 100644 --- a/src/physics/cam7/micro_pumas_cam.F90 +++ b/src/physics/cam7/micro_pumas_cam.F90 @@ -1479,7 +1479,7 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) use micro_pumas_utils, only: mg_liq_props, mg_ice_props, avg_diameter use micro_pumas_utils, only: rhoi, rhosn, rhow, rhows, rhog, qsmall, mincld - use micro_pumas_v1, only: micro_pumas_tend + use micro_pumas_ccpp, only: micro_pumas_ccpp_run use physics_buffer, only: pbuf_col_type_index use subcol, only: subcol_field_avg @@ -1894,8 +1894,10 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) integer :: col_type ! Flag to store whether accessing grid or sub-columns in pbuf_get_field integer :: ierr integer :: nlev + integer :: num_dust_bins - character(128) :: errstring ! return status (non-blank for error return) + character(512) :: ccpp_errmsg ! CCPP return status (non-blank for error return) + character(128) :: pumas_errstring ! PUMAS return status (non-blank for error return) ! For rrtmg optics. specified distribution. real(r8), parameter :: dcon = 25.e-6_r8 ! Convective size distribution effective radius (meters) @@ -1946,9 +1948,9 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) ! all the other arrays in this routine are dimensioned pver. This is required because ! PUMAS only gets the top_lev:pver array subsection, and the proc_rates arrays ! need to be the same levels. - call proc_rates%allocate(ncol, nlev, ncd, micro_mg_warm_rain, errstring) + call proc_rates%allocate(ncol, nlev, ncd, micro_mg_warm_rain, pumas_errstring) - call handle_errmsg(errstring, subname="micro_pumas_cam_tend") + call handle_errmsg(pumas_errstring, subname="micro_pumas_cam_tend") call phys_getopts(use_subcol_microp_out=use_subcol_microp) @@ -2380,60 +2382,70 @@ subroutine micro_pumas_cam_tend(state, ptend, dtime, pbuf) frzcnt(:ncol,:top_lev-1)=0._r8 frzdep(:ncol,:top_lev-1)=0._r8 + !Determine number of dust size bins: + num_dust_bins = size(rndst, dim=3) + do it = 1, num_steps - call micro_pumas_tend( & - ncol, nlev, dtime/num_steps,& - state_loc%t(:ncol,top_lev:), state_loc%q(:ncol,top_lev:,ixq), & - state_loc%q(:ncol,top_lev:,ixcldliq), state_loc%q(:ncol,top_lev:,ixcldice), & - state_loc%q(:ncol,top_lev:,ixnumliq), state_loc%q(:ncol,top_lev:,ixnumice), & - state_loc%q(:ncol,top_lev:,ixrain), state_loc%q(:ncol,top_lev:,ixsnow), & - state_loc%q(:ncol,top_lev:,ixnumrain), state_loc%q(:ncol,top_lev:,ixnumsnow), & - state_loc_graup(:ncol,top_lev:), state_loc_numgraup(:ncol,top_lev:), & - relvar(:ncol,top_lev:), accre_enhan(:ncol,top_lev:), & - state_loc%pmid(:ncol,top_lev:), state_loc%pdel(:ncol,top_lev:), state_loc%pint(:ncol,top_lev:), & - ast(:ncol,top_lev:), alst_mic(:ncol,top_lev:), aist_mic(:ncol,top_lev:), qsatfac(:ncol,top_lev:), & - rate1cld(:ncol,top_lev:), & - naai(:ncol,top_lev:), npccn(:ncol,top_lev:), & - rndst(:ncol,top_lev:,:), nacon(:ncol,top_lev:,:), & - tlat(:ncol,top_lev:), qvlat(:ncol,top_lev:), & - qcten(:ncol,top_lev:), qiten(:ncol,top_lev:), & - ncten(:ncol,top_lev:), niten(:ncol,top_lev:), & - qrten(:ncol,top_lev:), qsten(:ncol,top_lev:), & - nrten(:ncol,top_lev:), nsten(:ncol,top_lev:), & - qgten(:ncol,top_lev:), ngten(:ncol,top_lev:), & - rel(:ncol,top_lev:), rel_fn_dum(:ncol,top_lev:), rei(:ncol,top_lev:), & - sadice(:ncol,top_lev:), sadsnow(:ncol,top_lev:), & - prect(:ncol), preci(:ncol), & - nevapr(:ncol,top_lev:), am_evp_st(:ncol,top_lev:), & - prain(:ncol,top_lev:), & - cmeice(:ncol,top_lev:), dei(:ncol,top_lev:), & - mu(:ncol,top_lev:), lambdac(:ncol,top_lev:), & - qsout(:ncol,top_lev:), des(:ncol,top_lev:), & - qgout(:ncol,top_lev:), ngout(:ncol,top_lev:), dgout(:ncol,top_lev:), & - cflx(:ncol,top_lev:), iflx(:ncol,top_lev:), & - gflx(:ncol,top_lev:), & - rflx(:ncol,top_lev:), sflx(:ncol,top_lev:), qrout(:ncol,top_lev:), & - reff_rain_dum(:ncol,top_lev:), reff_snow_dum(:ncol,top_lev:), reff_grau_dum(:ncol,top_lev:), & - nrout(:ncol,top_lev:), nsout(:ncol,top_lev:), & - refl(:ncol,top_lev:), arefl(:ncol,top_lev:), areflz(:ncol,top_lev:), & - frefl(:ncol,top_lev:), csrfl(:ncol,top_lev:), acsrfl(:ncol,top_lev:), & - fcsrfl(:ncol,top_lev:), & - refl10cm(:ncol,top_lev:), reflz10cm(:ncol,top_lev:), rercld(:ncol,top_lev:), & - ncai(:ncol,top_lev:), ncal(:ncol,top_lev:), & - qrout2(:ncol,top_lev:), qsout2(:ncol,top_lev:), & - nrout2(:ncol,top_lev:), nsout2(:ncol,top_lev:), & - drout_dum(:ncol,top_lev:), dsout2_dum(:ncol,top_lev:), & - qgout2(:ncol,top_lev:), ngout2(:ncol,top_lev:), dgout2(:ncol,top_lev:), freqg(:ncol,top_lev:), & - freqs(:ncol,top_lev:), freqr(:ncol,top_lev:), & - nfice(:ncol,top_lev:), qcrat(:ncol,top_lev:), & - proc_rates, & - errstring, & - tnd_qsnow(:ncol,top_lev:),tnd_nsnow(:ncol,top_lev:),re_ice(:ncol,top_lev:),& - prer_evap(:ncol,top_lev:), & - frzimm(:ncol,top_lev:), frzcnt(:ncol,top_lev:), frzdep(:ncol,top_lev:) ) - - call handle_errmsg(errstring, subname="micro_pumas_cam_tend") + call micro_pumas_ccpp_run( & + ncol, nlev, nlev+1, num_dust_bins, dtime/num_steps, & + state_loc%t(:ncol,top_lev:), state_loc%q(:ncol,top_lev:,ixq), & + state_loc%q(:ncol,top_lev:,ixcldliq), state_loc%q(:ncol,top_lev:,ixcldice), & + state_loc%q(:ncol,top_lev:,ixnumliq), state_loc%q(:ncol,top_lev:,ixnumice), & + state_loc%q(:ncol,top_lev:,ixrain), state_loc%q(:ncol,top_lev:,ixsnow), & + state_loc%q(:ncol,top_lev:,ixnumrain), state_loc%q(:ncol,top_lev:,ixnumsnow), & + state_loc_graup(:ncol,top_lev:), state_loc_numgraup(:ncol,top_lev:), & + relvar(:ncol,top_lev:), accre_enhan(:ncol,top_lev:), & + state_loc%pmid(:ncol,top_lev:), state_loc%pdel(:ncol,top_lev:), & + state_loc%pint(:ncol,top_lev:), & + ast(:ncol,top_lev:), alst_mic(:ncol,top_lev:), & + aist_mic(:ncol,top_lev:), qsatfac(:ncol,top_lev:), & + naai(:ncol,top_lev:), npccn(:ncol,top_lev:), & + rndst(:ncol,top_lev:,:), nacon(:ncol,top_lev:,:), & + tnd_qsnow(:ncol,top_lev:), tnd_nsnow(:ncol,top_lev:), & + re_ice(:ncol,top_lev:), & + frzimm(:ncol,top_lev:), frzcnt(:ncol,top_lev:), & + frzdep(:ncol,top_lev:), rate1cld(:ncol,top_lev:), & + tlat(:ncol,top_lev:), qvlat(:ncol,top_lev:), & + qcten(:ncol,top_lev:), qiten(:ncol,top_lev:), & + ncten(:ncol,top_lev:), niten(:ncol,top_lev:), & + qrten(:ncol,top_lev:), qsten(:ncol,top_lev:), & + nrten(:ncol,top_lev:), nsten(:ncol,top_lev:), & + qgten(:ncol,top_lev:), ngten(:ncol,top_lev:), & + rel(:ncol,top_lev:), rel_fn_dum(:ncol,top_lev:), & + rei(:ncol,top_lev:), & + sadice(:ncol,top_lev:), sadsnow(:ncol,top_lev:), & + prect(:ncol), preci(:ncol), & + nevapr(:ncol,top_lev:), am_evp_st(:ncol,top_lev:), & + prain(:ncol,top_lev:), & + cmeice(:ncol,top_lev:), dei(:ncol,top_lev:), & + mu(:ncol,top_lev:), lambdac(:ncol,top_lev:), & + qsout(:ncol,top_lev:), des(:ncol,top_lev:), & + qgout(:ncol,top_lev:), ngout(:ncol,top_lev:), & + dgout(:ncol,top_lev:), & + cflx(:ncol,top_lev:), iflx(:ncol,top_lev:), & + gflx(:ncol,top_lev:), & + rflx(:ncol,top_lev:), sflx(:ncol,top_lev:), & + qrout(:ncol,top_lev:), reff_rain_dum(:ncol,top_lev:), & + reff_snow_dum(:ncol,top_lev:), reff_grau_dum(:ncol,top_lev:), & + nrout(:ncol,top_lev:), nsout(:ncol,top_lev:), & + refl(:ncol,top_lev:), arefl(:ncol,top_lev:), & + areflz(:ncol,top_lev:), frefl(:ncol,top_lev:), & + csrfl(:ncol,top_lev:), acsrfl(:ncol,top_lev:), & + fcsrfl(:ncol,top_lev:), refl10cm(:ncol,top_lev:), & + reflz10cm(:ncol,top_lev:), rercld(:ncol,top_lev:), & + ncai(:ncol,top_lev:), ncal(:ncol,top_lev:), & + qrout2(:ncol,top_lev:), qsout2(:ncol,top_lev:), & + nrout2(:ncol,top_lev:), nsout2(:ncol,top_lev:), & + drout_dum(:ncol,top_lev:), dsout2_dum(:ncol,top_lev:), & + qgout2(:ncol,top_lev:), ngout2(:ncol,top_lev:), & + dgout2(:ncol,top_lev:), freqg(:ncol,top_lev:), & + freqs(:ncol,top_lev:), freqr(:ncol,top_lev:), & + nfice(:ncol,top_lev:), qcrat(:ncol,top_lev:), & + prer_evap(:ncol,top_lev:), proc_rates, & + ccpp_errmsg, ierr ) + + call handle_errmsg(ccpp_errmsg, subname="micro_pumas_cam_tend") call physics_ptend_init(ptend_loc, psetcols, "micro_pumas", & ls=.true., lq=lq) From 4cbe479cd4795ffc7559a4c89f7c8038f27ec431 Mon Sep 17 00:00:00 2001 From: Jesse Nusbaumer Date: Thu, 16 Jan 2025 09:00:59 -0700 Subject: [PATCH 3/8] Update PUMAS external, and remove debugging test from testlist. --- .gitmodules | 2 +- cime_config/testdefs/testlist_cam.xml | 1 - src/physics/pumas | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index afee82f977..e2cb5f1139 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,7 +16,7 @@ path = src/physics/pumas url = https://github.com/nusbaume/PUMAS fxrequired = AlwaysRequired - fxtag = c5a15a3 + fxtag = 7cde106 fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS [submodule "pumas-frozen"] diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index 443d6d8c9e..d0789ac1f3 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -1898,7 +1898,6 @@ - diff --git a/src/physics/pumas b/src/physics/pumas index c5a15a399a..7cde106d1a 160000 --- a/src/physics/pumas +++ b/src/physics/pumas @@ -1 +1 @@ -Subproject commit c5a15a399a584d9614e61eee7d4f5267ef15107d +Subproject commit 7cde106d1a5487e7a93800e1ec57fbd4dd68b613 From a49b003a999716df6e5069d7eede35ad1038c429 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Fri, 14 Mar 2025 12:40:23 -0600 Subject: [PATCH 4/8] update to ccpp-physics branch which has PUMAS submodule and wv_sat_methods only --- .gitmodules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index ce4add39ef..11e1c4f69a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,10 +13,10 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CARMA_base.git [submodule "pumas"] - path = src/physics/pumas - url = https://github.com/nusbaume/PUMAS + path = src/physics/pumas + url = https://github.com/ESCOMP/PUMAS fxrequired = AlwaysRequired - fxtag = 7cde106 + fxtag = pumas_cam-release_v1.38 fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS [submodule "pumas-frozen"] From 98920de44cdf7281b7b37bfd05f4468022b521c4 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Fri, 14 Mar 2025 15:17:34 -0600 Subject: [PATCH 5/8] update atmos_phys external which has kind_phys for wv_sat_methods --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 11e1c4f69a..c6d74f30ff 100644 --- a/.gitmodules +++ b/.gitmodules @@ -35,8 +35,8 @@ [submodule "atmos_phys"] path = src/atmos_phys - url = https://github.com/ESCOMP/atmospheric_physics - fxtag = atmos_phys0_10_001 + url = https://github.com/nusbaume/atmospheric_physics + fxtag = c0ab182b27 fxrequired = AlwaysRequired fxDONOTUSEurl = https://github.com/ESCOMP/atmospheric_physics From c7af949ecf251643ef0e8c81691c3a30a6919750 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Tue, 18 Mar 2025 16:07:50 -0600 Subject: [PATCH 6/8] Revert back to current atmos_phys tag --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index c6d74f30ff..11e1c4f69a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -35,8 +35,8 @@ [submodule "atmos_phys"] path = src/atmos_phys - url = https://github.com/nusbaume/atmospheric_physics - fxtag = c0ab182b27 + url = https://github.com/ESCOMP/atmospheric_physics + fxtag = atmos_phys0_10_001 fxrequired = AlwaysRequired fxDONOTUSEurl = https://github.com/ESCOMP/atmospheric_physics From 79bce8a18b9f52d93384d2697415ecdd81011e35 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Tue, 18 Mar 2025 16:09:59 -0600 Subject: [PATCH 7/8] Add PUMAS commit --- src/physics/pumas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/physics/pumas b/src/physics/pumas index 7cde106d1a..8e61d3f608 160000 --- a/src/physics/pumas +++ b/src/physics/pumas @@ -1 +1 @@ -Subproject commit 7cde106d1a5487e7a93800e1ec57fbd4dd68b613 +Subproject commit 8e61d3f6089024956f3e54c8b393b76301d3fc39 From dc39662bc3583f5f3d0b7e34225ef6c82a117362 Mon Sep 17 00:00:00 2001 From: Cheryl Craig Date: Fri, 21 Mar 2025 15:07:01 -0600 Subject: [PATCH 8/8] ChangeLog for cam6_4_079 --- doc/ChangeLog | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 37e1c0c0a2..dac00fcadd 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,6 +1,73 @@ =============================================================== +Tag name: cam6_4_079 +Originator(s): nusbaume, cacraig +Date: March 21, 2025 +One-line Summary: First round of work on CCPP'izing PUMAS +Github PR URL: https://github.com/ESCOMP/CAM/pull/1275 + +Purpose of changes (include the issue number and title text for each relevant GitHub issue): + - Partially addresses PUMAS interface needs to become CCPP-compliant: https://github.com/ESCOMP/CAM/issue/1151 + +Describe any changes made to build system: N/A + +Describe any changes made to the namelist: N/A + +List any changes to the defaults for the boundary datasets: N/A + +Describe any substantial timing or memory changes: N/A + +Code reviewed by: jimmielin + +List all files eliminated: N/A + +List all files added and what they do: N/A + +List all existing files that have been modified, and describe the changes: +M .gitmodules + - update PUMAS external to version which has CAM dependencies removed + +M src/physics/cam7/micro_pumas_cam.F90 + - Changes to interface to PUMAS + +If there were any failures reported from running test_driver.sh on any test +platform, and checkin with these failures has been OK'd by the gatekeeper, +then copy the lines from the td.*.status files for the failed tests to the +appropriate machine below. All failed tests must be justified. + +derecho/intel/aux_cam: all BFB except for pre-existing test failures + + ERP_D_Ln9.ne30pg3_ne30pg3_mt232.QPC7.derecho_intel.cam-outfrq3s_cosp (Overall: FAIL) details: + FAIL ERP_D_Ln9.ne30pg3_ne30pg3_mt232.QPC7.derecho_intel.cam-outfrq3s_cosp COMPARE_base_rest + ERS_Ln9.ne30pg3_ne30pg3_mg17.FHISTC_WXma.derecho_intel.cam-outfrq9s (Overall: FAIL) details: + FAIL ERS_Ln9.ne30pg3_ne30pg3_mg17.FHISTC_WXma.derecho_intel.cam-outfrq9s COMPARE_base_rest + - pre-existing failures introduced in cam6_4_078 (see issue #1281) + + SMS_D_Ln9_P1280x1.ne0ARCTICne30x4_ne0ARCTICne30x4_mt12.FHIST.derecho_intel.cam-outfrq9s (Overall: PASS) details: + [ SMS_D_Ln9_P1280x1.ne0ARCTICne30x4_ne0ARCTICne30x4_mt12.FHIST.derecho_intel.cam-outfrq9s (Overall: DIFF) details: + - This particular test passed this time, but I belived it fails "sometimes"] + + SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s (Overall: FAIL) details: + FAIL SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s SETUP + - pre-existing failures due to build-namelist error requiring CLM/CTSM external update + + ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s (Overall: FAIL) details: + FAIL ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s COMPARE_base_rest + FAIL ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s BASELINE /glade/campaign/cesm/community/amwg/cam_baselines/cam6_4_078_intel: DIFF + SMS_Lh12.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq3h (Overall: DIFF) details: + FAIL SMS_Lh12.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq3h BASELINE /glade/campaign/cesm/community/amwg/cam_baselines/cam6_4 + - pre-existing failures due to HEMCO not having reproducible results (issues #1018 and #856) + +derecho/nvhpc/aux_cam: all BFB + +izumi/nag/aux_cam: all BFB + +izumi/gnu/aux_cam: all BFB + +=============================================================== +=============================================================== + Tag name: cam6_4_078 Originator(s): PeterHjortLauritzen, mbramberger, cacraig Date: March 19, 2025