From 1cd7caacd41be5ab22ffd8e67d5268a9cfeb4c88 Mon Sep 17 00:00:00 2001 From: eleanorgb <38913404+eleanorgb@users.noreply.github.com> Date: Mon, 17 Aug 2026 11:44:27 +0100 Subject: [PATCH 1/4] adding dim_cslayer as dimension --- src/science/soil/soil_htc_jls_mod.F90 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/science/soil/soil_htc_jls_mod.F90 b/src/science/soil/soil_htc_jls_mod.F90 index 475e1175..c6a331a3 100644 --- a/src/science/soil/soil_htc_jls_mod.F90 +++ b/src/science/soil/soil_htc_jls_mod.F90 @@ -36,6 +36,7 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & USE jules_soil_mod, ONLY: facur, gamma_t, mmax, tacur, l_bedrock, & ns_deep USE jules_soil_biogeochem_mod, ONLY: heat_of_respiration, l_bgc_heat +USE ancil_info, ONLY: dim_cslayer USE jules_surface_mod, ONLY: l_flake_model USE jules_surface_types_mod, ONLY: lake USE jules_irrig_mod, ONLY: l_irrig_dmd @@ -104,7 +105,7 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & ! Volumetric soil moisture concentration at saturation (m3 H2O/m3 soil). w_flux(npnts,0:nshyd), & ! The fluxes of water between layers (kg/m2/s). - resp_s_soilt(npnts,nshyd,dim_cs1) + resp_s_soilt(npnts,dim_cslayer,dim_cs1) ! Soil respiration in pools (kg C/m2/s) in each layer ! The fluxes of water between layers (kg/m2/s). @@ -384,7 +385,7 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & !$OMP w_flux, dhadv_dtsl0, dhadv_dtsl1, dhadv_dtsl2, v_sat, & !$OMP tiny_0, smcl, small_value, work1, smclsat, bexp, tmax, sathh, & !$OMP dhsl0, timestep, dhsl, resp_s_soilt, l_bgc_heat, dim_cs1, & -!$OMP heat_of_respiration) +!$OMP dim_cslayer, heat_of_respiration) ! Blocking is needed as the nshyd dimension has a spatial ! dependence (n +/-1). Blocking enables parallelising over the @@ -490,7 +491,7 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & IF (l_bgc_heat) THEN !$OMP DO SCHEDULE(STATIC) DO j = 1, soil_pts - DO n = 1, nshyd + DO n = 1, dim_cslayer !DIR$ IVDEP !CDIR NODEP i = soil_index(j) From 26378cb48d6a1a0b59170ef2da44ff9e9fe3f8be Mon Sep 17 00:00:00 2001 From: eleanorgb <38913404+eleanorgb@users.noreply.github.com> Date: Fri, 28 Aug 2026 09:37:32 +0100 Subject: [PATCH 2/4] l_bgc_heat can be used in um and for one layer soil carbon --- rose-meta/jules-standalone/HEAD/rose-meta.conf | 3 --- src/control/shared/jules_soil_biogeochem_mod.F90 | 14 -------------- src/control/um/check_unavailable_options_mod.F90 | 12 +----------- 3 files changed, 1 insertion(+), 28 deletions(-) diff --git a/rose-meta/jules-standalone/HEAD/rose-meta.conf b/rose-meta/jules-standalone/HEAD/rose-meta.conf index e30a27c5..f17daa04 100644 --- a/rose-meta/jules-standalone/HEAD/rose-meta.conf +++ b/rose-meta/jules-standalone/HEAD/rose-meta.conf @@ -4942,8 +4942,6 @@ url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml [namelist:jules_soil_biogeochem=l_bgc_heat] compulsory=true description=Switch for release of biogeochemical heat into the soil. - =Not available to the UM. -fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; #Biogenic heating scheme is not available to the UM sort-key=c1 trigger=namelist:jules_soil_biogeochem=heat_of_respiration: .true.; type=logical @@ -5015,7 +5013,6 @@ sort-key=c url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_q10 value-titles=Q10 temperature function,Clark et al. (2011) temperature function values=.true.,.false. -warn-if=this == '.false.' and namelist:jules_soil_biogeochem=l_bgc_heat == '.true.' widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget [namelist:jules_soil_biogeochem=l_soil_resp_lev2] diff --git a/src/control/shared/jules_soil_biogeochem_mod.F90 b/src/control/shared/jules_soil_biogeochem_mod.F90 index 4b6588f6..358a8ae4 100644 --- a/src/control/shared/jules_soil_biogeochem_mod.F90 +++ b/src/control/shared/jules_soil_biogeochem_mod.F90 @@ -333,20 +333,6 @@ SUBROUTINE check_jules_soil_biogeochem() 'the layered soil temperature calculation (l_ch4_tlayered)' ) END IF -! Check if l_q10=T to use l_bgc_heat -IF ( .NOT. l_q10 .AND. l_bgc_heat ) THEN - CALL ereport( TRIM(RoutineName), warningstatus, & - 'To use the biogenic heating of soil carbon decomposition' // & - 'you must use l_q10=.true. and l_bgc_heat=.true.' ) -END IF - -! Check if l_layeredC=T to use l_bgc_heat -IF ( .NOT. l_layeredc .AND. l_bgc_heat ) THEN - CALL ereport( TRIM(RoutineName), errorstatus, & - 'To use the biogenic heating of soil carbon decomposition' // & - 'you must use l_layeredc=.true. and l_bgc_heat=.true.' ) -END IF - ! Check if l_bgc_heat = T, heat_of_respiration is 3.7e09 IF ( l_bgc_heat ) THEN IF ( ABS( heat_of_respiration - rmdi ) < EPSILON(1.0) ) THEN diff --git a/src/control/um/check_unavailable_options_mod.F90 b/src/control/um/check_unavailable_options_mod.F90 index 5c39b56f..e044bd7f 100644 --- a/src/control/um/check_unavailable_options_mod.F90 +++ b/src/control/um/check_unavailable_options_mod.F90 @@ -24,8 +24,7 @@ SUBROUTINE check_unavailable_options() USE jules_urban_mod, ONLY: l_urban_empirical USE jules_rivers_mod, ONLY: l_riv_overbank, l_rivers, i_river_vn, & rivers_um_trip, rivers_rfm -USE jules_soil_biogeochem_mod, ONLY: l_ch4_microbe, l_label_frac_cs, & - l_bgc_heat +USE jules_soil_biogeochem_mod, ONLY: l_ch4_microbe, l_label_frac_cs USE jules_soil_mod, ONLY: l_tile_soil, l_bedrock USE jules_surface_types_mod, ONLY: ncpft USE jules_water_resources_mod, ONLY: l_water_resources @@ -71,15 +70,6 @@ SUBROUTINE check_unavailable_options() END IF END IF -! jules_soil_biogeochem_mod -IF ( l_bgc_heat ) THEN - error_sum = error_sum + 1 - WRITE(jules_message,'(I0,A,L1)') error_sum, & - ": Biogenic heating scheme is only available to standalone JULES. " // & - "l_bgc_heat = ", l_bgc_heat - CALL jules_print(RoutineName, jules_message, level = PrNorm) -END IF - ! jules_soil_biogeochem_mod IF ( l_ch4_microbe ) THEN error_sum = error_sum + 1 From f78d8287853d689815d64d2607d6d88ab841e73a Mon Sep 17 00:00:00 2001 From: eleanorgb <38913404+eleanorgb@users.noreply.github.com> Date: Fri, 28 Aug 2026 10:04:13 +0100 Subject: [PATCH 3/4] adding cla --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index db1cc110..5c9e382f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -5,3 +5,4 @@ | yaswant | Yaswant Pradhan | Met Office | 2026-06-30 | | doucla | Douglas Clark | UKCEH | 2026-07-03 | | james-bruten-mo | James Bruten | Met Office | 2026-07-09 | +| eleanorgb | Eleanor Burke | Met Office | 2026-08-24 | From f7a0f7ab500b888cc816ab29271322a870ddbcc6 Mon Sep 17 00:00:00 2001 From: eleanorgb <38913404+eleanorgb@users.noreply.github.com> Date: Fri, 28 Aug 2026 13:07:46 +0100 Subject: [PATCH 4/4] fixing resp_s_soilt call --- src/science/soil/hydrol_jls_mod.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/science/soil/hydrol_jls_mod.F90 b/src/science/soil/hydrol_jls_mod.F90 index d86095c2..0572457d 100644 --- a/src/science/soil/hydrol_jls_mod.F90 +++ b/src/science/soil/hydrol_jls_mod.F90 @@ -1126,7 +1126,7 @@ SUBROUTINE hydrol ( & sathh_soilt(:,m,:), smcl_soilt(:,m,:), snowdepth_surft, & surf_ht_flux_ld, smvcst_soilt(:,m,:), w_flux_soilt(:,m,:), & sthf_soilt(:,m,:), sthu_soilt(:,m,:), sthu_irr_soilt(:,m,:), & - t_soil_soilt(:,m,:), tsoil_deep_gb, dim_cs1, resp_s_soilt ) + t_soil_soilt(:,m,:), tsoil_deep_gb, dim_cs1, resp_s_soilt(:,m,:,:) ) ELSE ! Surface and soil tiles map directly on to each other. DO m = 1, nsoilt @@ -1139,7 +1139,7 @@ SUBROUTINE hydrol ( & sathh_soilt(:,m,:), smcl_soilt(:,m,:), snowdepth_surft, & snow_soil_htf(:,n), smvcst_soilt(:,m,:), w_flux_soilt(:,m,:), & sthf_soilt(:,m,:), sthu_soilt(:,m,:), sthu_irr_soilt(:,m,:), & - t_soil_soilt(:,m,:), tsoil_deep_gb, dim_cs1, resp_s_soilt ) + t_soil_soilt(:,m,:), tsoil_deep_gb, dim_cs1, resp_s_soilt(:,m,:,:) ) END DO END IF