Opened 4 years ago
Last modified 4 years ago
#2457 new Bug
Bug domcfg with isf
Reported by: | mathiot | Owned by: | mathiot |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | tools | Version: | trunk |
Severity: | minor | Keywords: | |
Cc: |
Description
Context
Under some condition domisf leads to negative vertical scale factor: case where isolated grid point in bathymetry where ice shelf almost grounded.
Analysis
This comes from the position of the modification of the bathy because of isolated grid point in the bathymetry.
It has been included before the computation of misfdep (zgr_isf_kspace) but it should be done at the very beginning in zgr_isf_zspace when compatibility between isf draft and bathy is done.
Fix
in domisf.F90, move the bloc:
! 0.0 fill isolated grid point in the bathymetry ! will be done again later on in zgr_bat_ctl, but need to be done here to adjust risfdep/misfdep respectively icompt = 0 DO jj = 2, jpjm1 DO ji = 2, jpim1 ibtest = MAX( mbathy(ji-1,jj), mbathy(ji+1,jj), & & mbathy(ji,jj-1), mbathy(ji,jj+1) ) IF( ibtest < mbathy(ji,jj) ) THEN mbathy(ji,jj) = ibtest bathy(ji,jj) = gdepw_1d(ibtest+1) icompt = icompt + 1 END IF END DO END DO ! ! ensure halo correct zdummy(:,:) = FLOAT( mbathy(:,:) ) ; CALL lbc_lnk('domisf', zdummy, 'T', 1._wp ) ; mbathy(:,:) = INT( zdummy(:,:) ) ! IF( lk_mpp ) CALL mpp_sum('domisf', icompt ) IF( icompt == 0 ) THEN IF(lwp) WRITE(numout,*)' no isolated ocean grid points' ELSE IF(lwp) WRITE(numout,*)' ',icompt,' ocean grid points suppressed' ENDIF
out of zgr_isf_kspace in zgr_isf_zspace at the top as 0.0 to be sure mbathy and bathy not modify before starting to compute the isfdraft.
And in domzgr, move the call to zgr_isf_zspace after the computation of mbathy and before the call to zgr_isf_kspace:
-
domzgr.F90
894 894 IF(lwp) WRITE(numout,*) ' ~~~~~~~ ' 895 895 IF(lwp) WRITE(numout,*) ' mbathy is recomputed : bathy_level file is NOT used' 896 896 897 ! compute position of the ice shelf grounding line898 ! set bathy and isfdraft to 0 where grounded899 IF ( ln_isfcav ) CALL zgr_isf_zspace900 901 897 ! bathymetry in level (from bathy_meter) 902 898 ! =================== 903 899 zmax = gdepw_1d(jpk) + e3t_1d(jpk) ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_1d(jpkm1) ) … … 915 911 WHERE( 0._wp < bathy(:,:) .AND. bathy(:,:) <= zdepth ) mbathy(:,:) = jk-1 916 912 END DO 917 913 918 ! Check compatibility between bathy and iceshelf draft 919 ! insure at least 2 wet level on the vertical under an ice shelf 920 ! compute misfdep and adjust isf draft if needed 921 IF ( ln_isfcav ) CALL zgr_isf_kspace 914 ! if under ice shelf cavities, compute misfdep for ocean point (i.e. the top level) 915 IF ( ln_isfcav ) THEN 916 ! compute position of the ice shelf grounding line 917 CALL zgr_isf_zspace 918 ! compute misfdep and adjust isf draft if needed 919 CALL zgr_isf_kspace 920 END IF
Commit History (2)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
12871 | mathiot | 2020-05-05T17:57:08+02:00 | ticket #2457: add fix suggested in ticket. |
12869 | mathiot | 2020-05-05T15:46:42+02:00 | ticket #2457: branch to fix minor issue in tools (negative e3t in some specific cases with isf) |
Change History (3)
comment:1 Changed 4 years ago by mathiot
comment:2 Changed 4 years ago by mathiot
In 12871:
comment:3 Changed 4 years ago by mathiot
As I was not able to reproduced the bug described by Clement B. (Mercator), I will not push this. I send an email to Clement to send me the information needed to reproduce the bug. I am waiting feedback.
In 12869: