diff --git a/CHANGELOG.md b/CHANGELOG.md index e5a5b829f..48ceea6a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,13 @@ ## 2025 +### 5 Dec 2025 + +- [change] Removed `BaseTMethod` parameter from HDD/CDD calculations (#144) + - Model now always uses weekday/weekend-specific base temperatures (`BaseT_Heating`, `BaseT_Cooling`) + - Simplifies anthropogenic heat flux calculation logic + - `BaseTMethod` in legacy input files is now ignored + ### 3 Dec 2025 - [feature] Improved albedos ranges (ge=0.0 and le=1.0) in Field of Pydantic classes for alb_id, air_ssa_lw, air_ssa_sw, veg_ssa_lw, veg_ssa_sw (PR #978) - [feature] Improved ranges (ge=0.0) in Field of Pydantic classes for preciplimitalb, roof_albedo_dir_mult_fact, and ground_albedo_dir_mult_fact. (PR #978) diff --git a/docs/source/inputs/tables/RunControl/scheme_options.rst b/docs/source/inputs/tables/RunControl/scheme_options.rst index af7b36d94..585906969 100644 --- a/docs/source/inputs/tables/RunControl/scheme_options.rst +++ b/docs/source/inputs/tables/RunControl/scheme_options.rst @@ -46,15 +46,17 @@ Scheme options .. option:: BaseTMethod + .. deprecated:: v2025a + + This option has been removed. The model now always uses weekday/weekend-specific + base temperatures (``BaseT_Heating`` and ``BaseT_Cooling``) for HDD/CDD calculations. + If present in legacy input files, this parameter is ignored. + :Requirement: - Required + Optional (ignored) :Description: - Determines method for base temperature used in HDD/CDD calculations. - :Configuration: - .. csv-table:: - :file: csv-table/BaseTMethod.csv - :header-rows: 1 - :widths: 10 80 + Previously determined method for base temperature used in HDD/CDD calculations. + Now deprecated in favour of always using weekday/weekend-specific base temperatures. .. option:: EmissionsMethod diff --git a/src/suews/src/suews_ctrl_const.f95 b/src/suews/src/suews_ctrl_const.f95 index 1b1ff8ca3..655179de9 100644 --- a/src/suews/src/suews_ctrl_const.f95 +++ b/src/suews/src/suews_ctrl_const.f95 @@ -1143,7 +1143,6 @@ MODULE module_ctrl_const_datain ! ---- Model options set in RunControl -------------------------------------------------------- INTEGER :: EmissionsMethod, & ! anthropogenic emissions method - BaseTMethod, & ! base temperature method for HDD/CDD calculations used in QF module CBLuse, & !CBL slab model used (1) or not used (0) MultipleMetFiles, & !Indicates whether a single met file is used for all grids (0) or one for each grid (1) MultipleInitFiles, & !Indicates whether a single initial conditions file is used for all grids (0) or one for each grid (1) diff --git a/src/suews/src/suews_phys_dailystate.f95 b/src/suews/src/suews_phys_dailystate.f95 index 6581ac7a3..f07f6853f 100644 --- a/src/suews/src/suews_phys_dailystate.f95 +++ b/src/suews/src/suews_phys_dailystate.f95 @@ -83,8 +83,6 @@ SUBROUTINE SUEWS_cal_DailyState( & TYPE(SUEWS_STATE), INTENT(INOUT) :: modState ! INTEGER :: WaterUseMethod - INTEGER, PARAMETER :: BaseTMethod = 2 ! base t method [-] - REAL(KIND(1D0)), PARAMETER :: BaseT_HC = 18.2 !base temperature for heating degree dayb [degC] ! to be fully removed TODO ! TYPE(IRRIGATION_PRM), INTENT(IN) :: irrPrm ! INTEGER :: Ie_start !Starting time of water use (DOY) @@ -504,12 +502,10 @@ SUBROUTINE SUEWS_cal_DailyState( & ! regular update at all timesteps of a day IF (execute_subroutines) THEN CALL update_DailyState_Day( & - BaseTMethod, & DayofWeek_id, & avkdn, & !input Tair, & Precip, & - BaseT_HC, & BaseT_Heating, BaseT_Cooling, & nsh_real, & Tmin_id, Tmax_id, lenDay_id, & !inout @@ -747,12 +743,10 @@ END SUBROUTINE SUEWS_cal_DailyState ! END SUBROUTINE update_DailyState_End SUBROUTINE update_DailyState_Day( & - BaseTMethod, & DayofWeek_id, & avkdn, & !input Tair, & Precip, & - BaseT_HC, & BaseT_Heating, BaseT_Cooling, & nsh_real, & Tmin_id, Tmax_id, lenDay_id, & !inout @@ -760,13 +754,11 @@ SUBROUTINE update_DailyState_Day( & ! use time, only: id, id_prev_t IMPLICIT NONE - INTEGER, INTENT(IN) :: BaseTMethod INTEGER, DIMENSION(3), INTENT(in) :: DayofWeek_id REAL(KIND(1D0)), INTENT(IN) :: avkdn REAL(KIND(1D0)), INTENT(IN) :: Tair ! Ambient air temperature [degC], this can be from either forcing or diagnostic REAL(KIND(1D0)), INTENT(IN) :: Precip - REAL(KIND(1D0)), INTENT(IN) :: BaseT_HC REAL(KIND(1D0)), DIMENSION(2), INTENT(IN) :: BaseT_Heating REAL(KIND(1D0)), DIMENSION(2), INTENT(IN) :: BaseT_Cooling REAL(KIND(1D0)), INTENT(IN) :: nsh_real @@ -794,18 +786,9 @@ SUBROUTINE update_DailyState_Day( & iu = 1 !Set to 1=weekday IF (DayofWeek_id(1) == 1 .OR. DayofWeek_id(1) == 7) iu = 2 !Set to 2=weekend - SELECT CASE (BaseTMethod) - CASE (1) - BaseT_Heating_use = BaseT_HC - BaseT_Cooling_use = BaseT_HC - CASE (2) - BaseT_Heating_use = BaseT_Heating(iu) - BaseT_Cooling_use = BaseT_Cooling(iu) - - CASE default - CALL ErrorHint(75, "RunControl.nml", -999, -999, -999) - - END SELECT + ! Use weekday/weekend-specific base temperatures for heating/cooling degree day calculations + BaseT_Heating_use = BaseT_Heating(iu) + BaseT_Cooling_use = BaseT_Cooling(iu) ! Daily min and max temp (these get updated through the day) --------------------- Tmin_id = MIN(Tair, Tmin_id) !Daily min T in column 3