Skip to content

Commit 91a6334

Browse files
authored
avdvective temperature flux only for ice cover (#79)
* avdvective temperature flux only for ice cover * consistent salinity and heat fluxes
1 parent 4e21744 commit 91a6334

4 files changed

Lines changed: 11 additions & 10 deletions

File tree

src/gotm/gotm.F90

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -784,12 +784,13 @@ subroutine integrate_gotm()
784784
#ifdef _ICE_
785785
I_0%value = transmissivity*I_0%value
786786
swf=melt_rate
787-
shf=ocean_ice_heat_flux
788-
ssf=ocean_ice_salt_flux
787+
shf=ocean_ice_heat_flux + rho0*cp*T(nlev)*swf
788+
ssf=ocean_ice_salt_flux + S(nlev)*swf
789789
#endif
790790
else
791791
swf=precip_input%value+evap
792792
shf=-heat_input%value ! temperature() changed to positive heat flux upwards (v7)
793+
ssf= S(nlev)*swf
793794
tx = tx/rho0
794795
ty = ty/rho0
795796
end if

src/meanflow/salinity.F90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ subroutine salinity(nlev,dt,cnpar,wflux,sflux,nus,gams)
116116
! set boundary conditions
117117
DiffBcup = Neumann
118118
DiffBcdw = Neumann
119-
DiffSup = -S(nlev)*wflux-sflux
119+
DiffSup = -sflux
120120
DiffSdw = _ZERO_
121121

122122
AdvBcup = oneSided

src/meanflow/temperature.F90

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,10 @@ subroutine temperature(nlev,dt,cnpar,I_0,wflux,hflux,nuh,gamh,rad)
137137
DiffBcup = Neumann
138138
DiffBcdw = Neumann
139139

140-
! HB:
141-
! Note that this is the surface temperature flux for rigid-lid models like GOTM.
142-
! For a free surface model the surface temperature flux must be - -hflux/(rho0*cp)
143-
DiffTup = -T(nlev)*wflux-hflux/(rho0*cp)
140+
! For the open ocean the surface temperature flux is only the diffusive
141+
! component. In case of ice cover, hflux is defined as the sum of a diffusive
142+
! and advective component.
143+
DiffTup = -hflux/(rho0*cp)
144144
#ifndef _ICE_
145145
! simple sea ice model: surface heat flux switched off for sst < freezing temp
146146
if (T(nlev) .le. -0.0575*S(nlev)) then

src/util/convert_fluxes.F90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ subroutine convert_fluxes(nlev,gravity,swf,shf,ssf,rad,Tsrf,Ssrf,tFlux,sFlux,bt
6666
beta0 = get_beta(Ssrf,Tsrf,_ZERO_)
6767

6868
! temperature flux and associated buoyancy flux
69-
tFlux = -Tsrf*swf - shf/(rho0*cp)
70-
btFlux = gravity*alpha0*tFlux
69+
tFlux = - shf/(rho0*cp)
70+
btFlux = gravity*alpha0*tFlux
7171

7272
! salinity flux and associated buoyancy flux
73-
sFlux = -Ssrf*swf - ssf
73+
sFlux = - ssf
7474
bsFlux = -gravity*beta0*sFlux
7575

7676
! radiative temperature and buoyancy flux profiles

0 commit comments

Comments
 (0)