New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
#2464 (atm-ice stress at the coast is used and polluted by land values) – NEMO

Opened 4 years ago

Closed 4 years ago

#2464 closed Bug (fixed)

atm-ice stress at the coast is used and polluted by land values

Reported by: smasson Owned by: systeam
Priority: low Milestone:
Component: SI3 Version: trunk
Severity: minor Keywords:
Cc:

Description

Context

atmosphere-ice stress is computed in blk_ice_1

         ! C-grid ice dynamics :   U & V-points (same as ocean)
         DO_2D_00_00
            putaui(ji,jj) = 0.5_wp * (  rhoa(ji+1,jj) * zcd_dui(ji+1,jj)             &
               &                      + rhoa(ji  ,jj) * zcd_dui(ji  ,jj)  )          &
               &         * ( 0.5_wp * ( pwndi(ji+1,jj) + pwndi(ji,jj) ) - rn_vfac * puice(ji,jj) )
            pvtaui(ji,jj) = 0.5_wp * (  rhoa(ji,jj+1) * zcd_dui(ji,jj+1)             &
               &                      + rhoa(ji,jj  ) * zcd_dui(ji,jj  )  )          &
               &         * ( 0.5_wp * ( pwndj(ji,jj+1) + pwndj(ji,jj) ) - rn_vfac * pvice(ji,jj) )
         END_2D
         CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1., pvtaui, 'V', -1. )

values are computed at U/V point by averaging values at T point without taking care of the land-sea mask.

Same story in sbc_cpl_ice_tau if the wind stress is sent to T point:

         CASE( 'T' )
            DO_2D_00_00
               p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji+1,jj  ,1) + frcv(jpr_itx1)%z3(ji,jj,1) )
               p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji  ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) )
            END_2D

Analysis

Depending on how land values were defined, putaui and pvtaui are then potentially corrupted at the coast.
The stress at coastal points is used in si3 if:

  • ln_frazil = .true.
  • in the ice rheology

Note that, in the current version, ocean wind stress (utau, vtau) at the coast is not used in the model. There is no impact if it is polluted at the coast.

Fix

make sure that the stress at coastal points is correctly computed by using the same method used for utau in the ocean part:

         DO_2D_10_10
            utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zwnd_i(ji,jj) + zwnd_i(ji+1,jj  ) ) &
               &          * MAX(tmask(ji,jj,1),tmask(ji+1,jj,1))
            vtau(ji,jj) = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( zwnd_j(ji,jj) + zwnd_j(ji  ,jj+1) ) &
               &          * MAX(tmask(ji,jj,1),tmask(ji,jj+1,1))
         END_2D
         CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. )

Even if it is useless for utau and vtau, I think it is safer to take care of the land-sea mask to compute ocean stress, as you never know if someone somewhere decide to use the coastal ocean stress...

Commit History (1)

ChangesetAuthorTimeChangeLog
12925smasson2020-05-14T15:46:17+02:00

trunk: avoid pollution of atm-ice stress at coastal points, see #2464

Change History (2)

comment:1 Changed 4 years ago by smasson

In 12925:

Error: Failed to load processor CommitTicketReference
No macro or processor named 'CommitTicketReference' found

comment:2 Changed 4 years ago by smasson

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

We took the opportunity of this bugfix to modify the way atm-ice stress is computed at U and V point.
We first compute it at T point and next distribute it over U and V point with a "masked" average.
With this method, we do the average of a product (rho*Cd*|Wnd|*Wnd) instead of the product of averaged values. We therefore keep a larger part of the signal with the new method.

fixed in [12925]. All sette tests are ok. As expected configuration with sea-ice and forcing are different: ORCA2_ICE_PISCES, ORCA2_SAS_ICE, AGRIF_DEMO and SPITZ12

[reee217@jean-zay1: sette]$ ./sette_rpt.sh

Current code is : NEMO/trunk @ r12925  ( last change @ r12925 )

SETTE validation report generated for :

       NEMO/trunk @ r12925 (last changed revision)

       on X64_JEANZAY arch file


!!---------------1st pass------------------!!

   !----restart----!
WGYRE_PISCES_ST              run.stat    restartability  passed :  12925
WGYRE_PISCES_ST              tracer.stat restartability  passed :  12925
WORCA2_ICE_PISCES_ST         run.stat    restartability  passed :  12925
WORCA2_ICE_PISCES_ST         tracer.stat restartability  passed :  12925
WORCA2_OFF_PISCES_ST         tracer.stat restartability  passed :  12925
WAMM12_ST                    run.stat    restartability  passed :  12925
WORCA2_SAS_ICE_ST            run.stat    restartability  passed :  12925
WAGRIF_DEMO_ST               run.stat    restartability  passed :  12925
WSPITZ12_ST                  run.stat    restartability  passed :  12925
WISOMIP_ST                   run.stat    restartability  passed :  12925
WOVERFLOW_ST                 run.stat    restartability  passed :  12925
WLOCK_EXCHANGE_ST            run.stat    restartability  passed :  12925
WVORTEX_ST                   run.stat    restartability  passed :  12925
WICE_AGRIF_ST                run.stat    restartability  passed :  12925

   !----repro----!
WGYRE_PISCES_ST              run.stat    reproducibility passed :  12925
WGYRE_PISCES_ST              tracer.stat reproducibility passed :  12925
WORCA2_ICE_PISCES_ST         run.stat    reproducibility passed :  12925
WORCA2_ICE_PISCES_ST         tracer.stat reproducibility passed :  12925
WORCA2_OFF_PISCES_ST         tracer.stat reproducibility passed :  12925
WAMM12_ST                    run.stat    reproducibility passed :  12925
WORCA2_SAS_ICE_ST            run.stat    reproducibility passed :  12925
WORCA2_ICE_OBS_ST            run.stat    reproducibility passed :  12925
WAGRIF_DEMO_ST               run.stat    reproducibility passed :  12925
WSPITZ12_ST                  run.stat    reproducibility passed :  12925
WISOMIP_ST                   run.stat    reproducibility passed :  12925
WVORTEX_ST                   run.stat    reproducibility passed :  12925
WICE_AGRIF_ST                run.stat    reproducibility passed :  12925

   !----agrif check----!
ORCA2 AGRIF vs ORCA2 NOAGRIF run.stat    unchanged  -    passed :  12925 12925

   !----result comparison check----!

check result differences between :
VALID directory : /gpfswork/rech/fqx/reee217/NEMO_ALL_VALIDATIONS/trunk/NEMO_VALIDATION at rev 12925
and
REFERENCE directory : /gpfswork/rech/fqx/reee217/NEMO_ALL_VALIDATIONS/trunk/NEMO_VALIDATION at rev 12895

WGYRE_PISCES_ST       run.stat    files are identical
WGYRE_PISCES_ST       tracer.stat files are identical
WORCA2_ICE_PISCES_ST  run.stat    files are DIFFERENT (results are different after  1  time steps)
WORCA2_ICE_PISCES_ST  tracer.stat files are DIFFERENT (results are different after   time steps)
WORCA2_OFF_PISCES_ST  tracer.stat files are identical
WAMM12_ST             run.stat    files are identical
WISOMIP_ST            run.stat    files are identical
WORCA2_SAS_ICE_ST     run.stat    files are DIFFERENT (results are different after  1  time steps)
WAGRIF_DEMO_ST        run.stat    files are DIFFERENT (results are different after  1  time steps)
WSPITZ12_ST           run.stat    files are DIFFERENT (results are different after  1  time steps)
WISOMIP_ST            run.stat    files are identical
WVORTEX_ST            run.stat    files are identical
WICE_AGRIF_ST         run.stat    files are identical
Note: See TracTickets for help on using tickets.