Opened 21 months ago

Closed 19 months ago

Last modified 19 months ago

#2154 closed Bug (fixed)

WAD bug in limiting SBC fluxes in 'dry' cells

Reported by: deazer Owned by: deazer
Priority: low Milestone: 2018 release-4.0
Component: SBC Version: trunk
Severity: minor Keywords: WAD SBC
Cc:

Description (last modified by deazer)

Branch: http://forge.ipsl.jussieu.fr/nemo/browser/NEMO/branches/UKMO/dev_10448_WAD_SBC_BUGFIX

Context

Bug in WAD code concerning limiting surface fluxes in and near dry cells.
Currently this is only partly done in TRA/trasbc.F90

other small output bugs concerning output of SSH, require use of WAD reference level
simple 1 line fixes for those.

Analysis

Purpose is to limit surface fluxes as dry limit in WAD is approached
this is not entirely done at present and can lead to model blow ups
in realistic configurations

Fix

Fix is simple.
a) remove current approach in TRA/trasbc.F90

b) replace with zeroing in SBC/sbcmod.F90 as:

        CALL lbc_lnk( emp, 'T', 1. )
  
     IF ( ll_wd ) THEN     ! If near WAD point limit the flux for now
      WHERE( sshn(:,:) + ht_0(:,:) <= rn_wdmin1 )
              utau(:,:) = 0.0
              vtau(:,:) = 0.0
              qns (:,:) = 0.0
              qsr (:,:) = 0.0
              emp (:,:) = min(emp(:,:),0.0) !can allow puddles to grow u not shrink
              sfx (:,:) = 0.0
      END WHERE
  !
  ! Taper the flux switch off in areas approaching WAD limit (here arbitrarily set at 5m)
  ! 
      WHERE( sshn(:,:) + ht_0(:,:) >  rn_wdmin1  .and. sshn(:,:) + ht_0(:,:)  - rn_wdmin1<   5.0 ) ) 
              qsr  (:,:) =  qsr(:,:)  * (tanh(0.75_wp*( ( sshn(:,:) + ht_0(:,:) -  rn_wdmin1 )*1.0 )))  
              qns  (:,:) =  qns(:,:)  * (tanh(0.75_wp*( ( sshn(:,:) + ht_0(:,:) -  rn_wdmin1 )*1.0 ))) 
              utau (:,:) =  utau(:,:) * (tanh(0.75_wp*( ( sshn(:,:) + ht_0(:,:) -  rn_wdmin1 )*1.0 ))) 
              vtau (:,:) =  vtau(:,:) * (tanh(0.75_wp*( ( sshn(:,:) + ht_0(:,:) -  rn_wdmin1 )*1.0 ))) 
              emp  (:,:) =  emp(:,:)  * (tanh(0.75_wp*( ( sshn(:,:) + ht_0(:,:) -  rn_wdmin1 )*1.0 ))) 
      END WHERE
     ENDIF                                                                          
        !
        IF( kt == nit000 ) THEN

Other minor ssh output bugs are trivial just need ssh_ref in ll_wd cases e.g. change DIA/diatmb.F90 etc to

       IF( ll_wd ) THEN
           CALL iom_put( "sshnmasked", (sshn(:,:)+ssh_ref)*tmask(:,:,1) + zmdi*(1.0 - tmask(:,:,1)) )
        ELSE
           CALL iom_put( "sshnmasked", sshn(:,:)*tmask(:,:,1) + zmdi*(1.0 - tmask(:,:,1)) )
        ENDIF

Commit History (2)

ChangesetAuthorTimeChangeLog
10503deazer2019-01-11T14:32:41+01:00

Deleting branch after resolved #2154

10499deazer2019-01-10T16:12:24+01:00

Fix ticket #2154

Change History (5)

comment:1 Changed 19 months ago by deazer

  • Description modified (diff)

comment:2 Changed 19 months ago by mathiot

  • Owner changed from systeam to deazer
  • Status changed from new to assigned

Thank you Enda for the fix.

In addition to the work suggested here, documentation on WAD has been updated, sanity check on rn_wd_sbcfra and cosmetic changes.

I agree with the changes you made. You can merge the head of your branch UKMO/dev_10448_WAD_SBC_BUGFIX back to the trunk, then close the ticket and delete your branch.

comment:3 Changed 19 months ago by deazer

In 10499:

Fix ticket #2154

comment:4 Changed 19 months ago by deazer

  • Resolution set to fixed
  • Status changed from assigned to closed

comment:5 Changed 19 months ago by deazer

In 10503:

Deleting branch after resolved #2154

Note: See TracTickets for help on using tickets.