Opened 11 years ago
Closed 11 years ago
#1043 closed Bug (fixed)
wrong sign of depth-int isoneutral-diffusive heat flux somehdif
Reported by: | agn | Owned by: | acc |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | OCE | Version: | trunk |
Severity: | Keywords: | ||
Cc: |
Description
Using the standard implementation of isoneutral diffusion, the fields udiff_heattr and vdiff_heattr (saved as somehdif) created in traldf_iso.F90 have the wrong sign.
This problem is evident in trunk, 3.4.1 and 2012/dev_MERGE_2012, and has existed for some time, I believe. It gives, e.g. at 1 deg, northward heat transports in the Atlantic 0.07 PW too high.
The problem is apparent
(i) Looking at traldf_iso.F90 the updating of the tracer tendency has
ztra = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk) )
pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra
implying that zftu and zftv are opposite to the fluxes.
However these fluxes are *added* to give the diagnostic:
z2d(:,:) = 0._wp
DO jk = 1, jpkm1
DO jj = 2, jpjm1
DO ji = fs_2, fs_jpim1 ! vector opt.
z2d(ji,jj) = z2d(ji,jj) + zftv(ji,jj,jk)
END DO
END DO
END DO
z2d(:,:) = zztmp * z2d(:,:)
CALL lbc_lnk( z2d, 'V', -1. )
CALL iom_put( "vdiff_heattr", z2d ) ! heat transport in i-direction
(ii) Note also (l193-196 of traldf_iso.F90) that
zftv(ji,jj,jk) = ( zabe2 * zdjt(ji,jj,jk) &
& + zcof2 * ( zdkt (ji,jj+1) + zdk1t(ji,jj) &
& + zdk1t(ji,jj+1) + zdkt (ji,jj) ) ) * vmask(ji,jj,jk)
where (l179) zabe2 is +ve
and (l145)
zdjt(ji,jj,jk) = ( ptb(ji ,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) * vmask(ji,jj,jk)
so the part of zftv (zabe2 * zdjt(ji,jj,jk) ) from horizontal gradients in T has the *same* sign as the T-gradient, so it must be the opposite of the flux.
and
(iii) diagnosed isoneutral heat fluxes are southward across the Gulf Stream, which makes no sense.
Commit History (4)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
3806 | acc | 2013-02-12T18:55:59+01:00 | Branch dev_v3_4_STABLE_2012. #1043 also correct sign of diagnostic poleward diffusive transport |
3805 | acc | 2013-02-12T18:53:37+01:00 | Branch dev_MERGE_2012. #1043 also correct sign of diagnostic poleward diffusive transport |
3783 | acc | 2013-02-08T18:25:31+01:00 | Branch dev_v3_4_STABLE_2012. #1043 correct sign of diagnostic diffusive transport |
3782 | acc | 2013-02-08T18:24:38+01:00 | Branch dev_MERGE_2012. #1043 correct sign of diagnostic diffusive transport |
Change History (3)
comment:1 Changed 11 years ago by clevy
- Owner changed from NEMO team to acc
comment:2 Changed 11 years ago by acc
comment:3 Changed 11 years ago by acc
- Resolution set to fixed
- Status changed from new to closed
After discussion' also changed the sign of the argument passed to ptr_vj for the poleward transport diagnostic in traldf_bilapg.F90 and traldf_iso.F90.
Closing ticket.
It seems the minimal fix is to change the sign on the constant used in the diagnostic calculation, i.e:
But is there also the same error with the diaptr diagnostics?: