From 8ef69a20ec66c13060734ad6397185c8c97cd660 Mon Sep 17 00:00:00 2001 From: JanStreffing Date: Wed, 3 Mar 2021 09:01:49 +0100 Subject: [PATCH 1/6] including hotfix for sea ice initial temperature in previously open water --- src/ice_thermo_cpl.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ice_thermo_cpl.F90 b/src/ice_thermo_cpl.F90 index 9e07a984e..007376c5a 100644 --- a/src/ice_thermo_cpl.F90 +++ b/src/ice_thermo_cpl.F90 @@ -154,7 +154,7 @@ subroutine thermodynamics(mesh) call ice_surftemp(max(h/(max(A,Aimin)),0.05),hsn/(max(A,Aimin)),a2ihf,t) ice_temp(inod) = t else - ice_temp(inod) = 275.15_WP + ice_temp(inod) = 271.34_WP endif call ice_albedo(h,hsn,t,alb) ice_alb(inod) = alb @@ -505,7 +505,7 @@ subroutine ice_albedo(h,hsn,t,alb) ! set albedo ! ice and snow, freezing and melting conditions are distinguished if (h>0.0_WP) then - if (t<273.14_WP) then ! freezing condition + if (t<273.15_WP) then ! freezing condition if (hsn.gt.0.0_WP) then ! snow cover present alb=albsn else ! no snow cover From d3924fb6adeb362af26f9c1d3c6e75527cd45ab2 Mon Sep 17 00:00:00 2001 From: JanStreffing Date: Wed, 3 Mar 2021 11:42:40 +0100 Subject: [PATCH 2/6] test setup for RHO1 --- src/ice_thermo_cpl.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ice_thermo_cpl.F90 b/src/ice_thermo_cpl.F90 index 007376c5a..8a7b5d1cf 100644 --- a/src/ice_thermo_cpl.F90 +++ b/src/ice_thermo_cpl.F90 @@ -476,12 +476,12 @@ subroutine ice_surftemp(h,hsn,a2ihf,t) real(kind=WP), parameter :: ctfreez = 271.38_WP ! ECHAM6's temperature at which sea starts freezing/melting - snicecond = con/consn*rhowat/rhosno ! equivalence fraction thickness of ice/snow + snicecond = con/consn*rhoice/rhosno ! equivalence fraction thickness of ice/snow zsniced=h+snicecond*hsn ! Ice + Snow-Ice-equivalent thickness [m] zicefl=con*ctfreez/zsniced ! Conductive heat flux through sea ice [W/m²] hcapice=rhoice*cpice*dice ! heat capacity of upper 0.05 cm sea ice layer [J/(m²K)] zcpdt=hcapice/dt ! Energy required to change temperature of top ice "layer" [J/(sm²K)] - zcprosn=rhowat*cpsno/dt ! Specific Energy required to change temperature of 1m snow on ice [J/(sm³K)] + zcprosn=rhosno*cpsno/dt ! Specific Energy required to change temperature of 1m snow on ice [J/(sm³K)] zcpdte=zcpdt+zcprosn*hsn ! Combined Energy required to change temperature of snow + 0.05m of upper ice t=(zcpdte*t+a2ihf+zicefl)/(zcpdte+con/zsniced) ! New sea ice surf temp [K] t=min(ctfreez,t) ! Not warmer than freezing please! From d248fae5dd0619be00b180218b73b7a41b311e08 Mon Sep 17 00:00:00 2001 From: JanStreffing Date: Wed, 3 Mar 2021 11:58:57 +0100 Subject: [PATCH 3/6] test for FRE1 --- src/ice_thermo_cpl.F90 | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ice_thermo_cpl.F90 b/src/ice_thermo_cpl.F90 index 8a7b5d1cf..68881fe42 100644 --- a/src/ice_thermo_cpl.F90 +++ b/src/ice_thermo_cpl.F90 @@ -473,18 +473,22 @@ subroutine ice_surftemp(h,hsn,a2ihf,t) real(kind=WP) zcprosn !---- local parameters real(kind=WP), parameter :: dice = 0.05_WP ! ECHAM6's thickness for top ice "layer" - real(kind=WP), parameter :: ctfreez = 271.38_WP ! ECHAM6's temperature at which sea starts freezing/melting + !---- freezing temperature of sea-water [K] + real(kind=WP) :: TFrezs + !---- compute freezing temperature of sea-water from salinity + TFrezs = -0.0575_WP*S_oc + 1.7105e-3_WP*sqrt(S_oc**3) - +2.155e-4_WP*(S_oc**2)+273.15 snicecond = con/consn*rhoice/rhosno ! equivalence fraction thickness of ice/snow zsniced=h+snicecond*hsn ! Ice + Snow-Ice-equivalent thickness [m] - zicefl=con*ctfreez/zsniced ! Conductive heat flux through sea ice [W/m²] + zicefl=con*TFrezs/zsniced ! Conductive heat flux through sea ice [W/m²] hcapice=rhoice*cpice*dice ! heat capacity of upper 0.05 cm sea ice layer [J/(m²K)] zcpdt=hcapice/dt ! Energy required to change temperature of top ice "layer" [J/(sm²K)] zcprosn=rhosno*cpsno/dt ! Specific Energy required to change temperature of 1m snow on ice [J/(sm³K)] zcpdte=zcpdt+zcprosn*hsn ! Combined Energy required to change temperature of snow + 0.05m of upper ice t=(zcpdte*t+a2ihf+zicefl)/(zcpdte+con/zsniced) ! New sea ice surf temp [K] - t=min(ctfreez,t) ! Not warmer than freezing please! + t=min(TFrezs,t) ! Not warmer than freezing please! end subroutine ice_surftemp subroutine ice_albedo(h,hsn,t,alb) From 8f50ef1f235532f0eaf98b035ea74a6dc8dc747c Mon Sep 17 00:00:00 2001 From: JanStreffing Date: Wed, 3 Mar 2021 16:27:18 +0100 Subject: [PATCH 4/6] test FRE2 --- src/ice_thermo_cpl.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ice_thermo_cpl.F90 b/src/ice_thermo_cpl.F90 index 68881fe42..7a92c0cdb 100644 --- a/src/ice_thermo_cpl.F90 +++ b/src/ice_thermo_cpl.F90 @@ -154,7 +154,8 @@ subroutine thermodynamics(mesh) call ice_surftemp(max(h/(max(A,Aimin)),0.05),hsn/(max(A,Aimin)),a2ihf,t) ice_temp(inod) = t else - ice_temp(inod) = 271.34_WP + ! Freezing temp of saltwater in K + ice_temp(inod) = -0.0575_WP*S_oc_array(inod) + 1.7105e-3_WP*sqrt(S_oc_array(inod)**3) -2.155e-4_WP*(S_oc_array(inod)**2)+273.15_WP endif call ice_albedo(h,hsn,t,alb) ice_alb(inod) = alb @@ -477,8 +478,7 @@ subroutine ice_surftemp(h,hsn,a2ihf,t) real(kind=WP) :: TFrezs !---- compute freezing temperature of sea-water from salinity - TFrezs = -0.0575_WP*S_oc + 1.7105e-3_WP*sqrt(S_oc**3) - -2.155e-4_WP*(S_oc**2)+273.15 + TFrezs = -0.0575_WP*S_oc + 1.7105e-3_WP*sqrt(S_oc**3) - 2.155e-4_WP*(S_oc**2)+273.15 snicecond = con/consn*rhoice/rhosno ! equivalence fraction thickness of ice/snow zsniced=h+snicecond*hsn ! Ice + Snow-Ice-equivalent thickness [m] From 9ddc871f601ba9da443b27b6c3b1557431a7c69a Mon Sep 17 00:00:00 2001 From: JanStreffing Date: Wed, 3 Mar 2021 16:44:07 +0100 Subject: [PATCH 5/6] adding SH/NH lead_closing parameter --- src/ice_thermo_cpl.F90 | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/ice_thermo_cpl.F90 b/src/ice_thermo_cpl.F90 index 7a92c0cdb..dfd6119f7 100644 --- a/src/ice_thermo_cpl.F90 +++ b/src/ice_thermo_cpl.F90 @@ -132,17 +132,17 @@ subroutine thermodynamics(mesh) rsf = 0._WP end if -!#if defined (__oifs) -! !---- different lead closing parameter for NH and SH -! call r2g(geolon, geolat, coord_nod2d(1,inod), coord_nod2d(2,inod)) -! if (geolat.lt.0.) then -! h0min = 0.75 -! h0max = 1.0 -! else -! h0min = 0.5 -! h0max = 0.75 -! endif -!#endif /* (__oifs) */ +#if defined (__oifs) + !---- different lead closing parameter for NH and SH + call r2g(geolon, geolat, coord_nod2d(1,inod), coord_nod2d(2,inod)) + if (geolat.lt.0.) then + h0min = 1.0 + h0max = 1.0 + else + h0min = 0.5 + h0max = 0.5 + endif +#endif /* (__oifs) */ call ice_growth #if defined (__oifs) From e3c08ef60acec43d338e92dbc0bbadda68b2dd02 Mon Sep 17 00:00:00 2001 From: JanStreffing Date: Sat, 10 Apr 2021 14:17:39 +0200 Subject: [PATCH 6/6] removing faulty density scaling --- src/ice_thermo_cpl.F90 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ice_thermo_cpl.F90 b/src/ice_thermo_cpl.F90 index dfd6119f7..57085894a 100644 --- a/src/ice_thermo_cpl.F90 +++ b/src/ice_thermo_cpl.F90 @@ -139,8 +139,8 @@ subroutine thermodynamics(mesh) h0min = 1.0 h0max = 1.0 else - h0min = 0.5 - h0max = 0.5 + h0min = 0.3 + h0max = 0.3 endif #endif /* (__oifs) */ @@ -480,15 +480,15 @@ subroutine ice_surftemp(h,hsn,a2ihf,t) !---- compute freezing temperature of sea-water from salinity TFrezs = -0.0575_WP*S_oc + 1.7105e-3_WP*sqrt(S_oc**3) - 2.155e-4_WP*(S_oc**2)+273.15 - snicecond = con/consn*rhoice/rhosno ! equivalence fraction thickness of ice/snow - zsniced=h+snicecond*hsn ! Ice + Snow-Ice-equivalent thickness [m] - zicefl=con*TFrezs/zsniced ! Conductive heat flux through sea ice [W/m²] + snicecond = con/consn ! equivalence fraction thickness of ice/snow + zsniced=h+snicecond*hsn ! Ice + Snow-Ice-equivalent thickness [m] + zicefl=con*TFrezs/zsniced ! Conductive heat flux through sea ice [W/m²] hcapice=rhoice*cpice*dice ! heat capacity of upper 0.05 cm sea ice layer [J/(m²K)] zcpdt=hcapice/dt ! Energy required to change temperature of top ice "layer" [J/(sm²K)] zcprosn=rhosno*cpsno/dt ! Specific Energy required to change temperature of 1m snow on ice [J/(sm³K)] zcpdte=zcpdt+zcprosn*hsn ! Combined Energy required to change temperature of snow + 0.05m of upper ice t=(zcpdte*t+a2ihf+zicefl)/(zcpdte+con/zsniced) ! New sea ice surf temp [K] - t=min(TFrezs,t) ! Not warmer than freezing please! + t=min(TFrezs,t) ! Not warmer than freezing please! end subroutine ice_surftemp subroutine ice_albedo(h,hsn,t,alb)