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.
user/ctlod/NewSurfaceModule – NEMO
wiki:user/ctlod/NewSurfaceModule

Version 42 (modified by ctlod, 16 years ago) (diff)

--

ParentLinkage(=)?

New Surface Module

TOC(depth=99,private/NewSurfaceModule)?

We put here description of the work done around this package. Mainly some figures ...etc

CONTEXT:
Experiments: REF_CORE (reference version) & SBC_NEW (new surface module)
Configuration type: Configuration ORCA2_LIM with bulk CORE
"Forcing spefs:" precipitation and snow are monthly value without time interpolation else
it will be different in SBC_NEW and REF_CORE.

EXPERIENCES DESCRIPTION:

FULL_SDP7:

* FULL_SDP7:
Only for REF_CORE: following FULL_SDP6 exp., modifications in REF_CORE in the wind stress management
over sea-ice and ocean to be closer to what is done in NEW_SBC.

  • in flx_core.h90, splitting of the ocean/sea-ice wind stress:
              tauxt(:,:) = rhoa*dUnormt(:,:)*Cd(:,:)*(flxnow(:,:,2) - zut(:,:))
              taux_it(:,:) = rhoa*dUnormt(:,:)*Cice*flxnow(:,:,2)
    
    !CT          tauxt(:,:) = rhoa*dUnormt(:,:)*( (1. - freeze(:,:))*Cd(:,:)*(flxnow(:,:,2) - zut(:,:))    &
    !CT               &                          + freeze(:,:)*Cice*flxnow(:,:,2) ) !lb correct pour glace
             ! Tau_y at T-point
             tauyt(:,:) = rhoa*dUnormt(:,:)*Cd(:,:)*(flxnow(:,:,3) - zvt(:,:))
             tauy_it(:,:) = rhoa*dUnormt(:,:)*Cice*flxnow(:,:,3)
    
  • the ocean wind stress is masked using tmask(:,:)
             !Tau_x at U-point
             DO jj = 1, jpjm1
                DO ji = 1, jpi
                   taux(ji,jj) = 0.5*(tauxt(ji,jj) + tauxt(ji+1,jj))*( 2. - tmask(ji,jj,1) )
                   tauy(ji,jj) = 0.5*(tauyt(ji,jj) + tauyt(ji,jj+1))*( 2. - tmask(ji,jj,1) )
                END DO
             END DO
    
  • in icestp.F90: compute wind stress gtau[xy] over sea-ice at I-point location using tau[xy]_it(:,:) fileds.
  • in limdyn.F90: compute the ice/ocean stress the same way it is done in NEW_SBC, i.e. only based on the wind speed [uv]_ice - [uv]_oce differences
  • in ocesbc.F90: the final wind stress over the ocean is the result of both ice/ocean & "pure" ocean stress mixing weighted with leads fraction.

FULL_SDP6:

* FULL_SDP6:
Only for REF_CORE: Correction of an other bug in limdyn.F90:
The friction velocity ust2s() is computed at T-point. To do so, we must compute a mean of speed velocities using velocities around T-point at i,j location and not i-1,j-1 location as it is done in the reference.
Color(white,red,'''NOTICE''')?: this run includes the modification done for SDP5. See below.

        ! computation of friction velocity
         DO jj = 2, jpjm1
            DO ji = 2, jpim1

!CT start SDP6
               zu_ice   = u_ice(ji+1,jj+1) - u_oce(ji+1,jj+1)
               zv_ice   = v_ice(ji+1,jj+1) - v_oce(ji+1,jj+1)
!CT SDP6              zu_ice   = u_ice(ji-1,jj-1) - u_oce(ji-1,jj-1)
!CT SDP6              zv_ice   = v_ice(ji-1,jj-1) - v_oce(ji-1,jj-1)
               zt11  = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice )

               zu_ice   = u_ice(ji,jj+1) - u_oce(ji,jj+1)
               zv_ice   = v_ice(ji,jj+1) - v_oce(ji,jj+1)
!CT SDP6              zu_ice   = u_ice(ji-1,jj) - u_oce(ji-1,jj)
!CT SDP6              zv_ice   = v_ice(ji-1,jj) - v_oce(ji-1,jj)
               zt12  = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice )

               zu_ice   = u_ice(ji+1,jj) - u_oce(ji+1,jj)
               zv_ice   = v_ice(ji+1,jj) - v_oce(ji+1,jj)
!CT SDP6              zu_ice   = u_ice(ji,jj-1) - u_oce(ji,jj-1)
!CT SDP6              zv_ice   = v_ice(ji,jj-1) - v_oce(ji,jj-1)
               zt21  = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice )

               zu_ice   = u_ice(ji,jj) - u_oce(ji,jj)
               zv_ice   = v_ice(ji,jj) - v_oce(ji,jj)
               zt22  = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice )
!CT end SDP6

               ztair2 = gtaux(ji,jj) * gtaux(ji,jj) + gtauy(ji,jj) * gtauy(ji,jj)

!CT start SDP5
               zustm =  0.25 * ( zt11 + zt12 + zt21 + zt22 )
!CT start               zustm =  ( 1 - frld(ji,jj) ) * 0.25 * ( zt11 + zt12 + zt21 + zt22 )        &
!CT start                  &  +        frld(ji,jj)   * SQRT( ztair2 )
!CT start SDP5

               ust2s(ji,jj) = ( zustm / rau0 ) * ( rone + sdvt(ji,jj) ) * tms(ji,jj)
            END DO
         END DO

It results in a systematic icethickness decreasing O(-2/4 cm) in winter (March) along the sea-ice edge.
Whereas "inside" Arctic area, it increases lightly icethickness O(+1/2 cm) with max. O(+10 cm) in the Hudson bay and off the North Siberian coast.
The trend for ice fraction leads is the same, i.e. an decreasing between O(-1/5 %) at the sea-ice limit extent.
But it doesn't change radically the icethickness differences with with the SDP3 New run. Patterns are still unchanged in Arctic.
So even this bug correction doesn't explain the big differences between REF_CORE and SBC_NEW experiments.

Ice thickness diffs. between REF_CORE SDP6 - REF_CORE SDP5 / Year 10 / Winter March:


Fraction leads diffs. between REF_CORE SDP6 - REF_CORE SDP5 / Year 10 / Winter March:


Ice thickness diffs. between SBC_NEW SDP3 - REF_CORE SDP6 / Year 10 / Winter March:


FULL_SDP5:

* FULL_SDP5:
Only for the REF_CORE code, we remove the fraction leads frld in the computation of the friction velocity between sea-ice & ocean in limdyn.F90. It is not necessary to mix since the friction velocity is only used to compute flux at Ice/ocean interface? So:

               ztair2 = gtaux(ji,jj) * gtaux(ji,jj) + gtauy(ji,jj) * gtauy(ji,jj)
!CT start SDP5
               zustm =  0.25 * ( zt11 + zt12 + zt21 + zt22 )
!CT start               zustm =  ( 1 - frld(ji,jj) ) * 0.25 * ( zt11 + zt12 + zt21 + zt22 )        &
!CT start                  &  +        frld(ji,jj)   * SQRT( ztair2 )
!CT start SDP5
               ust2s(ji,jj) = ( zustm / rau0 ) * ( rone + sdvt(ji,jj) ) * tms(ji,jj)

Above, gtau[xy] are wind stress components over the ocean at I-point.
In doing that we are closer to what is done in limdyn.F90 of the NEW SBC.
It results in a sea-ice surface temperature colder O(-1/2°C) than in SDP Ref mainly in the limit sea-ice extent.
And a systematic decrease of the icet thickness by O(-2/4 cm) over all the Arctic reaching in some area O(-10 cm) Hudson bay or near the Bering strait.
So its impact is significant and must be take into account in the rewritten of this part in the NEW _SBC.
Color(white,red,'''BUT''')? it remains a bug in the comptutation of zt11, zt12 ..etc see SDP6 experience above

Ice temperature diffs. between REF_CORE SDP5 - REF_CORE SDP / Year 10 / Winter March:


Ice thickness diffs. between REF_CORE SDP5 - REF_CORE SDP / Year 10 / Winter March:


FULL_SDP4:

* FULL_SDP4:
Only for the REF_CORE code, correction of a bug in the computation of the final wind stress in ocesbc.F90 module.

         ! update the stress below sea-ice area
         DO jj = 1, jpjm1
            DO ji = 1, fs_jpim1   ! vertor opt.
!CT start SDP4
               ztx         = MAX( freezn(ji,jj), freezn(ji+1,jj) )
               zty         = MAX( freezn(ji,jj), freezn(ji,jj+1) )
!CT            ztx         = MAX( freezn(ji,jj), freezn(ji,jj+1) )   ! ice/ocean indicator at U- and V-points
!CT            zty         = MAX( freezn(ji,jj), freezn(ji+1,jj) )
!CT end SDP4
               ztaux       = 0.5 *( ftaux(ji+1,jj) + ftaux(ji+1,jj+1) ) ! ice-ocean stress at U- and V-points
               ztauy       = 0.5 *( ftauy(ji,jj+1) + ftauy(ji+1,jj+1) )
               taux(ji,jj) = (1.-ztx) * taux(ji,jj) + ztx * ztaux    ! stress at the ocean surface
               tauy(ji,jj) = (1.-zty) * tauy(ji,jj) + zty * ztauy
            END DO
         END DO

The impact of this modification is weak as seen on plots below change in ice thickness are O(±1/2 cm)) in Arctic during winter (March). Same behaviour in summer (Sept).
Ice thickness diffs. between REF_CORE SDP4 - REF_CORE SDP / Year 10 / Winter March:


Ice thickness diffs. between REF_CORE SDP4 - REF_CORE SDP / Year 10 / Summer September:


FULL_SDP3:

* FULL_SDP3:
Only for the SBC_NEW code, this time this run is identical to FULL_SDP but in sbcblk_core.F90, the sea-ice velocity ([uv]i_ice()) has been removed in the computation of the wind stress and wind module over sea-ice.
Since the computation is clearly done in a better way now, it could implies important modifications which should be identify.
Small impact O(±2/3 cm) in the Arctic area but shoul be underlined.

Ice thickness in NEW_SBC experience / Year 10 / Winter March:


Ice thickness in NEW_SBC experience / Year 10 / Summer September:


Ice thickness differences between New SDP3 - New SDP experience / Year 10 / Winter March:
In SDP3 the sea-ice velocity [uv]i_ice() is removed from the computation of sea-ice wind-stress and & scalar wind-stress in sbc_blk_ice() whereas it is used in SDP experience, it is the only thing which changes between the 2
This modification implies a weaker extension off the east Greenland coast and north to the Spitzberg.
A lightly increasing of the ice thickness close to the Greenland and North to the Bering strait area O(+2cm)


Ice thickness differences between NEW_SBC SDP3 - REF_CORE SDP experience / Year 10 / Winter March:
Even with this modification in SDP3, the ice thickness differences are still important O(±10/15 cm) reaching min/max O(±50 cm).
Differences are almost the same than the initial NEW_SBC SDP - REF_CORE SDP see next plot.


Ice thickness differences between NEW_SBC SDP - REF_CORE SDP experience / Year 10 / Winter March:


FULL_SDP2:

* FULL_SDP2:
Still SSS damping term without the ice-dynamics, i.e. ln_limdyn=.FALSE. in the sea-ice namelist.

Ice thickness in NEW_SBC experience / Year 10: NO SEA-ICE DYNAMICS = ln_limdyn=FALSE


Ice thickness differences between NEW_SBC & REF_CORE experience / Year 10: NO SEA-ICE DYNAMICS = ln_limdyn=FALSE


FULL_SDP:

* FULL_SDP:
similar to FULL but with a strong restoring SSS damping of ~ 787 mm/day correponding to 12 days of time restoring
It is the same time damping as the SST which corresponds to -40 W/m2/K used for SST over a 10 meters ocean water column.
Modifications have been necessary in sbcssr.F90 module such as using the array sdta(:,:) computed in dtasal.F90 to ensure same
SSS damping field in both experiments SBC_NEW and REF_CORE.

Ice thickness in NEW_SBC experience / Year 10
The sea-ice extension in winter seems to be larger in this run than in the REF_CORE one.


Ice thickness in REF_CORE experience / Year 10


FULL:

* FULL: done for REF_CORE and SBC_NEW:
We fully relax constrains imposed in T2X experiences, i.e. on stress, frictional velocity and so on ...

T24:

* T2X:
In doing the following modifications in both experiments, we are waiting for almost exactly the same results.
# The wind stress ([uv]tau/gtau[xy]) and wind module (zwind_speed_t(:,:)/dUnormt(:,:) at the ocean surface (even
above sea-ice) is forced to be the same in both experiments. (sbcblk_core.F90/flx_core.h90)
# The friction velocity ust2s(:,:) between sea-ice and ocean is also forced to be the same (limdyn.F90)

Attachments (39)