diff --git a/src/gotm/gotm.F90 b/src/gotm/gotm.F90 index b3cf852c..5268a9b3 100644 --- a/src/gotm/gotm.F90 +++ b/src/gotm/gotm.F90 @@ -784,7 +784,7 @@ subroutine integrate_gotm() #ifdef _ICE_ I_0%value = transmissivity*I_0%value swf=melt_rate - shf=ocean_ice_heat_flux + shf=ocean_ice_heat_flux + T(nlev)*swf ssf=ocean_ice_salt_flux #endif else diff --git a/src/meanflow/temperature.F90 b/src/meanflow/temperature.F90 index d314a5ad..2b767d63 100644 --- a/src/meanflow/temperature.F90 +++ b/src/meanflow/temperature.F90 @@ -137,10 +137,10 @@ subroutine temperature(nlev,dt,cnpar,I_0,wflux,hflux,nuh,gamh,rad) DiffBcup = Neumann DiffBcdw = Neumann -! HB: -! Note that this is the surface temperature flux for rigid-lid models like GOTM. -! For a free surface model the surface temperature flux must be - -hflux/(rho0*cp) - DiffTup = -T(nlev)*wflux-hflux/(rho0*cp) +! For the open ocean the surface temperature flux is only the diffusive +! component. In case of ice cover, hflux is defined as the sum of a diffusive +! and advective component. + DiffTup = -hflux/(rho0*cp) #ifndef _ICE_ ! simple sea ice model: surface heat flux switched off for sst < freezing temp if (T(nlev) .le. -0.0575*S(nlev)) then diff --git a/src/util/convert_fluxes.F90 b/src/util/convert_fluxes.F90 index 6b37a80d..75620c83 100644 --- a/src/util/convert_fluxes.F90 +++ b/src/util/convert_fluxes.F90 @@ -66,8 +66,8 @@ subroutine convert_fluxes(nlev,gravity,swf,shf,ssf,rad,Tsrf,Ssrf,tFlux,sFlux,bt beta0 = get_beta(Ssrf,Tsrf,_ZERO_) ! temperature flux and associated buoyancy flux - tFlux = -Tsrf*swf - shf/(rho0*cp) - btFlux = gravity*alpha0*tFlux + tFlux = - shf/(rho0*cp) + btFlux = gravity*alpha0*tFlux ! salinity flux and associated buoyancy flux sFlux = -Ssrf*swf - ssf