Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
4d76724
[dev.01] define q_building
cathyxinchangli Apr 30, 2024
c665176
[dev.02] Modify ventilation & building flux
cathyxinchangli May 1, 2024
593dc8b
[dev.03] update q_building & dehumidify
cathyxinchangli May 1, 2024
caeba35
[dev.03] update q_building & dehumidify (cont'd)
cathyxinchangli May 1, 2024
600cf4c
[dev.04] bug fix
cathyxinchangli May 2, 2024
485662c
[dev.04] bug fix (cont'd)
cathyxinchangli May 6, 2024
e2792d4
[dev.04] bug fix (cont'd)
cathyxinchangli May 6, 2024
33a79db
[dev.04] bug fix (cont'd)
cathyxinchangli May 6, 2024
7612c85
[dev.04] bug fix (cont'd)
cathyxinchangli May 6, 2024
7b6d20c
[dev.04] bug fix (cont'd)
cathyxinchangli May 6, 2024
d015119
[dev.04] bug fix (cont'd)
cathyxinchangli May 6, 2024
d1e4dad
[dev.04] bug fix (cont'd)
cathyxinchangli May 9, 2024
b40cf24
[dev.06] shift to RH setpoint
cathyxinchangli May 17, 2024
62970a7
[dev.07] debug
cathyxinchangli May 19, 2024
5c720ce
[dev.07] debug cont'd
cathyxinchangli May 20, 2024
fc0c0ee
[dev.09] put RH control inside temp control
cathyxinchangli May 22, 2024
3b74929
[dev.11] rho, cp of humid air
cathyxinchangli May 28, 2024
3afe52b
[dev.11] fix bug
cathyxinchangli May 28, 2024
5f39e20
[dev.12] change pressure to pstd
cathyxinchangli May 28, 2024
3732413
Revert "[dev.12] change pressure to pstd"
cathyxinchangli Jul 18, 2024
7bfcb5a
[dev.13] update pressure
cathyxinchangli Jul 18, 2024
5a2cf11
[dev.14] Add output for sensible AC flux
cathyxinchangli Sep 27, 2024
455d3b5
[dev.15] Calculate condensed water flux
cathyxinchangli Oct 16, 2024
997182c
[dev.15] debug
cathyxinchangli Oct 16, 2024
8fa2d87
[dev.15] debug cont'd
cathyxinchangli Oct 16, 2024
1ab522e
[dev.15] debug cont'd
cathyxinchangli Oct 16, 2024
20478c5
[dev.16] add condensate to surface runoff
cathyxinchangli Oct 17, 2024
9a592d1
[dev.16] add condensate to water balance checks
cathyxinchangli Oct 17, 2024
12fabb9
[dev.16] debug
cathyxinchangli Oct 17, 2024
1cb7864
[dev.16] change condensate flux base area
cathyxinchangli Oct 23, 2024
5b3ad0f
[dev.16.1] manual error check
cathyxinchangli Oct 23, 2024
d3d01bb
[dev.16.1] debug
cathyxinchangli Oct 24, 2024
3a67153
[dev.16.1] debug cont'd
cathyxinchangli Oct 24, 2024
7a290f2
[dev.16.1] remove write statements
cathyxinchangli Oct 24, 2024
ad41a81
[dev.16.2] update RH setpoint to 65%
cathyxinchangli Oct 24, 2024
de44b19
[dev.17] output condensate flux
cathyxinchangli May 28, 2025
6dd8032
[dev.17] debug
cathyxinchangli May 28, 2025
c2ab31a
[dev.17] debug
cathyxinchangli May 29, 2025
1b00445
[dev.17] debug
cathyxinchangli May 30, 2025
0d1268e
[dev.18] correct condensate flux calculation
cathyxinchangli Jun 12, 2025
d0af2bf
[dev.18] continue attempting to debug
cathyxinchangli Jun 12, 2025
2a4be85
Revert "[dev.18] continue attempting to debug"
cathyxinchangli Jun 13, 2025
0bf22dc
Revert "[dev.18] correct condensate flux calculation"
cathyxinchangli Jun 13, 2025
df6c4c2
[dev.18] Only correctly condensate flux calc
cathyxinchangli Jun 13, 2025
cd7b25a
[dev.18.01] change where q_buliding(l) is updated
cathyxinchangli Jun 16, 2025
1b1936a
[dev.18.02] debug: output lun level var
cathyxinchangli Jun 17, 2025
b865561
[dev.18.02] cont'd
cathyxinchangli Jun 17, 2025
c683215
[dev.18.02] cont'd 2
cathyxinchangli Jun 17, 2025
34ceff6
[dev.18.03] loop over columns separately
cathyxinchangli Jun 17, 2025
e6069b3
[dev.19] add consistency check
cathyxinchangli Jun 19, 2025
87f91dc
[dev.20] clean up
cathyxinchangli Jun 19, 2025
24e8ff9
Add ac_dehumid master toggle
cathyxinchangli Aug 4, 2026
40511d4
clean up unnecessary comments
cathyxinchangli Aug 5, 2026
3f870b0
Replace ac_dehumid with building humidity modes
cathyxinchangli Aug 8, 2026
02ef8b4
Improve readability
cathyxinchangli Aug 11, 2026
e5c8083
correct typo
cathyxinchangli Aug 11, 2026
3bdd812
update inline comments and var long_name
cathyxinchangli Aug 12, 2026
5b94e6e
Fix conflicts
olyson Aug 12, 2026
b547e72
Fix conflicts
olyson Aug 12, 2026
f59b1f6
Fix build errors
olyson Aug 12, 2026
fff8bfc
address pr comments
cathyxinchangli Aug 26, 2026
b552d64
return white space in errh2o_grc
cathyxinchangli Aug 26, 2026
8f34aa7
fix typos
cathyxinchangli Aug 26, 2026
6143a6d
Get five unit tests working
olyson Aug 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions bld/CLMBuildNamelist.pm
Original file line number Diff line number Diff line change
Expand Up @@ -2375,9 +2375,26 @@ sub setup_logic_urban {

add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'building_temp_method');
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_hac');
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'building_humidity_mode');
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_explicit_ac');
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'urban_traffic');
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'init_interp_fill_missing_urban_with_HD');
my $building_humidity_mode = $nl->get_value('building_humidity_mode');
if ($building_humidity_mode < 0 || $building_humidity_mode > 2) {
Comment thread
olyson marked this conversation as resolved.
$log->fatal_error("building_humidity_mode must be 0, 1, or 2");
}
if ($building_humidity_mode >= 1 && $nl->get_value('building_temp_method') != 1) {
$log->fatal_error("building_humidity_mode=1 or 2 requires building_temp_method=1");
}
if ($building_humidity_mode == 2) {
my $urban_hac = remove_leading_and_trailing_quotes($nl->get_value('urban_hac'));
if ($urban_hac ne 'ON' && $urban_hac ne 'ON_WASTEHEAT') {
$log->fatal_error("building_humidity_mode=2 requires urban_hac to be ON or ON_WASTEHEAT");
}
if (! value_is_true($nl->get_value('urban_explicit_ac'))) {
$log->fatal_error("building_humidity_mode=2 requires urban_explicit_ac=.true.");
}
}
}

#-------------------------------------------------------------------------------
Expand Down
3 changes: 3 additions & 0 deletions bld/namelist_files/namelist_defaults_ctsm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,9 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
<calc_human_stress_indices >FAST</calc_human_stress_indices>
<calc_human_stress_indices phys="clm4_5" >NONE</calc_human_stress_indices>

<!-- Urban building humidity and air-conditioning dehumidification -->
<building_humidity_mode>0</building_humidity_mode>

<!-- Explicit, time-varying urban air conditioning adoption rate scheme -->
<urban_explicit_ac>.false.</urban_explicit_ac>
<urban_explicit_ac phys="clm6_0" >.true.</urban_explicit_ac>
Expand Down
12 changes: 12 additions & 0 deletions bld/namelist_files/namelist_definition_ctsm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1247,6 +1247,18 @@ Turn urban air conditioning/heating ON or OFF and add wasteheat:
<entry id="urban_explicit_ac" type="logical" category="clm_physics"
group="clmu_inparm" valid_values="" >
If TRUE, use explicit, time-varying AC adoption rate for air-conditioning flux and interior building temperature calculations.
See Li et al. (2024), doi:10.1029/2023MS004107
</entry>

<entry id="building_humidity_mode" type="integer" category="clm_physics"
group="clmu_inparm" valid_values="0,1,2" >
Select treatment of indoor building humidity:
Comment thread
olyson marked this conversation as resolved.
0 = Existing CLMU formulation without indoor humidity or air-conditioning dehumidification
1 = Indoor humidity and latent heat exchange without air-conditioning dehumidification
2 = Indoor humidity and latent heat exchange with air-conditioning dehumidification and condensate production
Modes 1 and 2 require building_temp_method=1 (prognostic calculation of interior building temp (clm5_0)).
Mode 2 also requires urban_hac to be ON or ON_WASTEHEAT and urban_explicit_ac=.true.
See Li et al. (2026), doi:10.1038/s44284-026-00474-4
</entry>

<entry id="urban_traffic" type="logical" category="clm_physics"
Expand Down
32 changes: 31 additions & 1 deletion bld/unit_testers/build-namelist_test.pl
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ sub cat_and_create_namelistinfile {
#
# Figure out number of tests that will run
#
my $ntests = 3407;
my $ntests = 3413;

if ( defined($opts{'compare'}) ) {
$ntests += 2061;
Expand Down Expand Up @@ -634,6 +634,36 @@ sub cat_and_create_namelistinfile {
system( "touch $finidat" );

my %failtest = (
"building humidity mode below range"
=>{ options=>"-envxml_dir .",
namelst=>"building_humidity_mode=-1",
phys=>"clm6_0",
},
"building humidity mode above range"
=>{ options=>"-envxml_dir .",
namelst=>"building_humidity_mode=3",
phys=>"clm6_0",
},
"humidity mode 1 with simple temperature"
=>{ options=>"-envxml_dir .",
namelst=>"building_humidity_mode=1,building_temp_method=0",
phys=>"clm6_0",
},
"humidity mode 2 with simple temperature"
=>{ options=>"-envxml_dir .",
namelst=>"building_humidity_mode=2,building_temp_method=0,urban_hac='ON',urban_explicit_ac=.true.",
phys=>"clm6_0",
},
"humidity mode 2 with AC off"
=>{ options=>"-envxml_dir .",
namelst=>"building_humidity_mode=2,building_temp_method=1,urban_hac='OFF',urban_explicit_ac=.true.",
phys=>"clm6_0",
},
"humidity mode 2 without explicit AC"
=>{ options=>"-envxml_dir .",
namelst=>"building_humidity_mode=2,building_temp_method=1,urban_hac='ON',urban_explicit_ac=.false.",
phys=>"clm6_0",
},
"cmip7_w_issp" =>{ options=>"-envxml_dir . -use_case 1850-2100_SSP2-4.5_transient",
namelst=>"",
CLM_CMIP_ERA=>"cmip7",
Expand Down
25 changes: 24 additions & 1 deletion src/biogeophys/BalanceCheckMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ module BalanceCheckMod
use column_varcon , only : icol_roof, icol_sunwall, icol_shadewall
use column_varcon , only : icol_road_perv, icol_road_imperv
use clm_varctl , only : use_hillslope_routing
use UrbanParamsType , only : IsACDehumidificationEnabled
!
! !PUBLIC TYPES:
implicit none
Expand Down Expand Up @@ -499,6 +500,7 @@ subroutine BalanceCheck( bounds, &
real(r8) :: qflx_glcice_dyn_water_flux_grc(bounds%begg:bounds%endg) ! grid cell-level water flux needed for balance check due to glc_dyn_runoff_routing [mm H2O/s] (positive means addition of water to the system)
real(r8) :: qflx_snwcp_discarded_liq_grc(bounds%begg:bounds%endg) ! grid cell-level excess liquid h2o due to snow capping, which we simply discard in order to reset the snow pack [mm H2O /s]
real(r8) :: qflx_snwcp_discarded_ice_grc(bounds%begg:bounds%endg) ! grid cell-level excess solid h2o due to snow capping, which we simply discard in order to reset the snow pack [mm H2O /s]
real(r8) :: qflx_condensate_from_ac_grc(bounds%begg:bounds%endg) ! grid cell-level condensate water flux from air-conditioning [mm H2O /s]

real(r8) :: errh2o_max_val ! Maximum value of error in water conservation error over all columns [mm H2O]
real(r8) :: errh2osno_max_val ! Maximum value of error in h2osno conservation error over all columns [kg m-2]
Expand Down Expand Up @@ -558,7 +560,8 @@ subroutine BalanceCheck( bounds, &

qflx_sfc_irrig_col => waterflux_inst%qflx_sfc_irrig_col , & ! Input: [real(r8) (:) ] column level irrigation flux (mm H2O /s)
qflx_sfc_irrig_grc => waterlnd2atm_inst%qirrig_grc , & ! Input: [real(r8) (:) ] grid cell-level irrigation flux (mm H20 /s)
qflx_glcice_dyn_water_flux_col => waterflux_inst%qflx_glcice_dyn_water_flux_col & ! Input: [real(r8) (:)] column level water flux needed for balance check due to glc_dyn_runoff_routing (mm H2O/s) (positive means addition of water to the system)
qflx_glcice_dyn_water_flux_col => waterflux_inst%qflx_glcice_dyn_water_flux_col, & ! Input: [real(r8) (:)] column level water flux needed for balance check due to glc_dyn_runoff_routing (mm H2O/s) (positive means addition of water to the system)
qflx_condensate_from_ac_col => waterflux_inst%qflx_condensate_from_ac_col & ! Input: [real(r8) (:)] column level condensate water flux from air-conditioning (mm H2O /s)
)

! Get step size and time step
Expand Down Expand Up @@ -604,6 +607,10 @@ subroutine BalanceCheck( bounds, &
- qflx_snwcp_discarded_liq_col(c) &
- qflx_snwcp_discarded_ice_col(c)) * dtime

if (IsACDehumidificationEnabled()) then
Comment thread
olyson marked this conversation as resolved.
errh2o_col(c) = errh2o_col(c) - qflx_condensate_from_ac_col(c) * dtime
end if

else

errh2o_col(c) = 0.0_r8
Expand Down Expand Up @@ -638,6 +645,9 @@ subroutine BalanceCheck( bounds, &
write(iulog,*)'qflx_surf = ',qflx_surf_col(indexc)*dtime
write(iulog,*)'qflx_qrgwl = ',qflx_qrgwl_col(indexc)*dtime
write(iulog,*)'qflx_drain = ',qflx_drain_col(indexc)*dtime
if (IsACDehumidificationEnabled()) then
write(iulog,*)'qflx_condensate_from_ac = ',qflx_condensate_from_ac_col(indexc)*dtime
end if

write(iulog,*)'qflx_ice_runoff = ',qflx_ice_runoff_col(indexc)*dtime

Expand Down Expand Up @@ -675,6 +685,12 @@ subroutine BalanceCheck( bounds, &
qflx_snwcp_discarded_ice_col(bounds%begc:bounds%endc), &
qflx_snwcp_discarded_ice_grc(bounds%begg:bounds%endg), &
c2l_scale_type= 'urbanf', l2g_scale_type='unity' )
if (IsACDehumidificationEnabled()) then
call c2g( bounds, &
qflx_condensate_from_ac_col(bounds%begc:bounds%endc), &
qflx_condensate_from_ac_grc(bounds%begg:bounds%endg), &
c2l_scale_type= 'urbanf', l2g_scale_type='unity' )
end if

do g = bounds%begg, bounds%endg
errh2o_grc(g) = endwb_grc(g) - begwb_grc(g) &
Expand All @@ -691,6 +707,10 @@ subroutine BalanceCheck( bounds, &
- qflx_ice_runoff_grc(g) &
- qflx_snwcp_discarded_liq_grc(g) &
- qflx_snwcp_discarded_ice_grc(g)) * dtime

if (IsACDehumidificationEnabled()) then
Comment thread
olyson marked this conversation as resolved.
errh2o_grc(g) = errh2o_grc(g) - qflx_condensate_from_ac_grc(g) * dtime
end if
end do

! add landunit level flux variable, convert from (m3/s) to (kg m-2 s-1)
Expand Down Expand Up @@ -738,6 +758,9 @@ subroutine BalanceCheck( bounds, &
write(iulog,*)'qflx_drain_perched = ',qflx_drain_perched_grc(indexg)*dtime
write(iulog,*)'forc_flood = ',forc_flood_grc(indexg)*dtime
write(iulog,*)'qflx_glcice_dyn_water_flux = ',qflx_glcice_dyn_water_flux_grc(indexg)*dtime
if (IsACDehumidificationEnabled()) then
write(iulog,*)'qflx_condensate_from_ac = ',qflx_condensate_from_ac_grc(indexg)*dtime
end if

write(iulog,*)'CTSM is stopping'
call endrun(subgrid_index=indexg, subgrid_level=subgrid_level_gridcell, msg=errmsg(sourcefile, __LINE__))
Expand Down
24 changes: 18 additions & 6 deletions src/biogeophys/EnergyFluxType.F90
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ module EnergyFluxType
use ColumnType , only : col
use PatchType , only : patch
use AnnualFluxDribbler, only : annual_flux_dribbler_type, annual_flux_dribbler_gridcell
use UrbanParamsType, only : IsACDehumidificationEnabled
!
implicit none
save
Expand Down Expand Up @@ -63,14 +64,15 @@ module EnergyFluxType
real(r8), pointer :: eflx_anthro_patch (:) ! patch total anthropogenic heat flux (W/m**2)
real(r8), pointer :: eflx_traffic_patch (:) ! patch traffic sensible heat flux (W/m**2)
real(r8), pointer :: eflx_wasteheat_patch (:) ! patch sensible heat flux from domestic heating/cooling sources of waste heat (W/m**2)
real(r8), pointer :: eflx_ventilation_patch (:) ! patch sensible heat flux from building ventilation (W/m**2)
real(r8), pointer :: eflx_ventilation_patch (:) ! patch sensible and latent heat flux from building ventilation (W/m**2)
real(r8), pointer :: eflx_heat_from_ac_patch (:) ! patch sensible heat flux put back into canyon due to removal by AC (W/m**2)
real(r8), pointer :: eflx_traffic_lun (:) ! lun traffic sensible heat flux (W/m**2)
real(r8), pointer :: eflx_wasteheat_lun (:) ! lun sensible heat flux from domestic heating/cooling sources of waste heat (W/m**2)
real(r8), pointer :: eflx_ventilation_lun (:) ! lun sensible heat flux from building ventilation (W/m**2)
real(r8), pointer :: eflx_ventilation_lun (:) ! lun sensible and latent heat flux from building ventilation (W/m**2)
real(r8), pointer :: eflx_heat_from_ac_lun (:) ! lun sensible heat flux to be put back into canyon due to removal by AC (W/m**2)
real(r8), pointer :: eflx_building_lun (:) ! lun building heat flux from change in interior building air temperature (W/m**2)
real(r8), pointer :: eflx_building_lun (:) ! lun building heat flux from change in interior building air temperature (and humidity, if prognosed indoor humidity) (W/m**2)
real(r8), pointer :: eflx_urban_ac_lun (:) ! lun urban air conditioning flux (W/m**2)
real(r8), pointer :: eflx_urban_ac_sen_lun (:) ! lun sensible heat component of air conditioning flux (W/m**2)
real(r8), pointer :: eflx_urban_heat_lun (:) ! lun urban heating flux (W/m**2)

! Derivatives of energy fluxes
Expand Down Expand Up @@ -234,6 +236,7 @@ subroutine InitAllocate(this, bounds)
allocate( this%eflx_heat_from_ac_lun (begl:endl)) ; this%eflx_heat_from_ac_lun (:) = nan
allocate( this%eflx_building_lun (begl:endl)) ; this%eflx_building_lun (:) = nan
allocate( this%eflx_urban_ac_lun (begl:endl)) ; this%eflx_urban_ac_lun (:) = nan
allocate( this%eflx_urban_ac_sen_lun (begl:endl)) ; this%eflx_urban_ac_sen_lun (:) = nan
allocate( this%eflx_urban_heat_lun (begl:endl)) ; this%eflx_urban_heat_lun (:) = nan
allocate( this%eflx_traffic_lun (begl:endl)) ; this%eflx_traffic_lun (:) = nan
allocate( this%eflx_wasteheat_lun (begl:endl)) ; this%eflx_wasteheat_lun (:) = nan
Expand Down Expand Up @@ -581,14 +584,21 @@ subroutine InitHistory(this, bounds, is_simple_buildtemp, is_prog_buildtemp)
else
this%eflx_building_lun(begl:endl) = spval
call hist_addfld1d (fname='EFLXBUILD', units='W/m^2', &
avgflag='A', long_name='building heat flux from change in interior building air temperature', &
avgflag='A', long_name='building heat flux from change in interior building air temperature (and humidity, if prognosed indoor humidity)', &
ptr_lunit=this%eflx_building_lun, set_nourb=0._r8, l2g_scale_type='unity')

this%eflx_urban_ac_lun(begl:endl) = spval
call hist_addfld1d (fname='URBAN_AC', units='W/m^2', &
avgflag='A', long_name='urban air conditioning flux', &
ptr_lunit=this%eflx_urban_ac_lun, set_nourb=0._r8, l2g_scale_type='unity')

if (IsACDehumidificationEnabled()) then
this%eflx_urban_ac_sen_lun(begl:endl) = spval
call hist_addfld1d (fname='URBAN_AC_SEN', units='W/m^2', &
avgflag='A', long_name='sensible heat component of urban air conditioning flux', &
ptr_lunit=this%eflx_urban_ac_sen_lun, set_nourb=0._r8, l2g_scale_type='unity')
end if

this%eflx_urban_heat_lun(begl:endl) = spval
call hist_addfld1d (fname='URBAN_HEAT', units='W/m^2', &
avgflag='A', long_name='urban heating flux', &
Expand Down Expand Up @@ -625,7 +635,7 @@ subroutine InitHistory(this, bounds, is_simple_buildtemp, is_prog_buildtemp)
if ( is_prog_buildtemp )then
this%eflx_ventilation_patch(begp:endp) = spval
call hist_addfld1d (fname='VENTILATION', units='W/m^2', &
avgflag='A', long_name='sensible heat flux from building ventilation', &
avgflag='A', long_name='sensible (and latent, if prognosed indoor humidity) heat flux from building ventilation', &
ptr_patch=this%eflx_ventilation_patch, set_nourb=0._r8, c2l_scale_type='urbanf')
end if

Expand Down Expand Up @@ -763,6 +773,7 @@ subroutine InitCold(this, bounds, t_grnd_col, is_simple_buildtemp, is_prog_build
if ( is_prog_buildtemp )then
this%eflx_building_lun(l) = 0._r8
this%eflx_urban_ac_lun(l) = 0._r8
this%eflx_urban_ac_sen_lun(l)= 0._r8
this%eflx_urban_heat_lun(l) = 0._r8
end if

Expand All @@ -776,6 +787,7 @@ subroutine InitCold(this, bounds, t_grnd_col, is_simple_buildtemp, is_prog_build
if ( is_prog_buildtemp )then
this%eflx_building_lun(l) = 0._r8
this%eflx_urban_ac_lun(l) = 0._r8
this%eflx_urban_ac_sen_lun(l)= 0._r8
this%eflx_urban_heat_lun(l) = 0._r8
this%eflx_ventilation_lun(l)= 0._r8
end if
Expand Down Expand Up @@ -874,7 +886,7 @@ subroutine Restart(this, bounds, ncid, flag, is_simple_buildtemp, is_prog_buildt
end if
call restartvar(ncid=ncid, flag=flag, varname='EFLX_VENTILATION', xtype=ncd_double, &
dim1name='landunit', &
long_name='sensible heat flux from building ventilation', units='watt/m^2', &
long_name='sensible (and latent, if prognosed indoor humidity) heat flux from building ventilation', units='watt/m^2', &
interpinic_flag='interp', readvar=readvar, data=this%eflx_ventilation_lun)
if (flag=='read' .and. .not. readvar) then
if (masterproc) write(iulog,*) "can't find EFLX_VENTILATION in initial file..."
Expand Down
1 change: 0 additions & 1 deletion src/biogeophys/HumanIndexMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1387,4 +1387,3 @@ end subroutine QSat_2
!-----------------------------------------------------------------------

end module HumanIndexMod

2 changes: 1 addition & 1 deletion src/biogeophys/SoilFluxesMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ subroutine SoilFluxes (bounds, num_urbanl, filter_urbanl, &
htvp => energyflux_inst%htvp_col , & ! Input: [real(r8) (:) ] latent heat of vapor of water (or sublimation) [j/kg]
eflx_building_heat_errsoi=> energyflux_inst%eflx_building_heat_errsoi_col , & ! Input: [real(r8) (:)] heat flux to interior surface of walls and roof for errsoi check (W m-2)
eflx_wasteheat_patch => energyflux_inst%eflx_wasteheat_patch , & ! Input: [real(r8) (:) ] sensible heat flux from urban heating/cooling sources of waste heat (W/m**2)
eflx_ventilation_patch => energyflux_inst%eflx_ventilation_patch , & ! Input: [real(r8) (:) ] sensible heat flux from building ventilation (W/m**2)
eflx_ventilation_patch => energyflux_inst%eflx_ventilation_patch , & ! Input: [real(r8) (:) ] sensible and latent heat flux from building ventilation (W/m**2)
eflx_heat_from_ac_patch => energyflux_inst%eflx_heat_from_ac_patch , & ! Input: [real(r8) (:) ] sensible heat flux put back into canyon due to removal by AC (W/m**2)
eflx_traffic_patch => energyflux_inst%eflx_traffic_patch , & ! Input: [real(r8) (:) ] traffic sensible heat flux (W/m**2)
dlrad => energyflux_inst%dlrad_patch , & ! Input: [real(r8) (:) ] downward longwave radiation below the canopy [W/m2]
Expand Down
Loading
Loading