Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce namelist option for thermal conductivity of snow: Jordan vs. Sturm #2148

Closed
wants to merge 7 commits into from
29 changes: 24 additions & 5 deletions src/biogeophys/SoilTemperatureMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ module SoilTemperatureMod
! o The thermal conductivity of soil is computed from
! the algorithm of Johansen (as reported by Farouki 1981), and the
! conductivity of snow is from the formulation used in
! SNTHERM (Jordan 1991).
! Sturm (1997) or Jordan (1991) p. 18 depending on namelist option.
! o Boundary conditions:
! F = Rnet - Hg - LEg (top), F= 0 (base of the soil column).
! o Soil / snow temperature is predicted from heat conduction
Expand Down Expand Up @@ -100,7 +100,7 @@ subroutine SoilTemperature(bounds, num_urbanl, filter_urbanl, num_urbanc, filter
! o The thermal conductivity of soil is computed from
! the algorithm of Johansen (as reported by Farouki 1981), and the
! conductivity of snow is from the formulation used in
! SNTHERM (Jordan 1991).
! Sturm (1997) or Jordan (1991) p. 18 depending on namelist option.
! o Boundary conditions:
! F = Rnet - Hg - LEg (top), F= 0 (base of the soil column).
! o Soil / snow temperature is predicted from heat conduction
Expand Down Expand Up @@ -611,7 +611,8 @@ subroutine SoilThermProp (bounds, num_urbanc, filter_urbanc, num_nolakec, filter
!
! (2) The thermal conductivity of soil is computed from the algorithm of
! Johansen (as reported by Farouki 1981), and of snow is from the
! formulation used in SNTHERM (Jordan 1991).
! formulation used in Sturm (1997) or Jordan (1991) p. 18 depending on
! namelist option.
! The thermal conductivities at the interfaces between two neighboring
! layers (j, j+1) are derived from an assumption that the flux across
! the interface is equal to that from the node j to the interface and the
Expand Down Expand Up @@ -734,11 +735,29 @@ subroutine SoilThermProp (bounds, num_urbanc, filter_urbanc, num_nolakec, filter
endif
endif

! Thermal conductivity of snow, which from Jordan (1991) pp. 18
! Thermal conductivity of snow
! Only examine levels from snl(c)+1 -> 0 where snl(c) < 1
if (snl(c)+1 < 1 .AND. (j >= snl(c)+1) .AND. (j <= 0)) then
bw(c,j) = (h2osoi_ice(c,j)+h2osoi_liq(c,j))/(frac_sno(c)*dz(c,j))
thk(c,j) = tkair + (7.75e-5_r8 *bw(c,j) + 1.105e-6_r8*bw(c,j)*bw(c,j))*(tkice-tkair)
! TODO slevis: Add namelist option thermal_cond_snow and then
! uncomment relevant lines below
! select case (thermal_cond_snow)
! case ('Jordan1991')
! thk(c,j) = tkair + (7.75e-5_r8 *bw(c,j) + 1.105e-6_r8*bw(c,j)*bw(c,j))*(tkice-tkair)
! case ('Sturm1997')
Copy link
Contributor

@slevis-lmwg slevis-lmwg Nov 1, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wwieder
I wanted to make sure I had the default value correct... Are we keeping Jordan1991 as default or changing it to Sturm1997?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...and maybe the right answer is Jordan1991 for now to get bfb same answers and we change the default later in an answer changing tag.

! Implemented by Vicky Dutch (VRD), Nick Rutter, and
! Leanne Wake (LMW)
! https://tc.copernicus.org/articles/16/4201/2022/
! Code provided by Adrien Dams to Will Wieder
if (bw(c,j) <= 156) then !LMW or 0.156 ?
thk(c,j) = 0.023 + 0.234*(bw(c,j)/1000) !LMW - units changed by VRD
else !LMW
thk(c,j) = 0.138 - 1.01*(bw(c,j)/1000) +(3.233*((bw(c,j)/1000)*(bw(c,j)/1000))) ! LMW Sturm I think
end if
! case default
! write(iulog,*) subname//' ERROR: unknown thermal_cond_snow value: ', thermal_cond_snow
! call endrun(msg=errMsg(sourcefile, __LINE__))
! end select
end if

end do
Expand Down
Loading