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.
Custom Query – NEMO

Custom Query (2547 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (139 - 141 of 2547)

Ticket Owner Reporter Resolution Summary
#2405 mathiot clem fixed compilation of the tools fails in 4.0-HEAD
Description

In nemo 4.0-HEAD, compilation of the tools fails because of a missing file in mk (Fmake_tools_bld.sh). See message below

./maketools: line 155: /gpfswork/rech/omr/romr008/NEMO4/release-4.0-HEAD/mk/Fmake_tools_bld.sh: No such file or directory

Just adding the Fmake file does the job but since mk is tagged for this nemo revision, I do not know how to correct it.

#2406 mathiot mathiot fixed Bugs in tke with ice shelves
Description

Context

  • If tke switch on, nn_pdl == 1 and ice shelf cavities opened, cells at the ocean/ice shelf interface are warming and freshening over time to reach unrealistic temperature and salinity even without any melting/freezing at the ice shelf/ocean interface.

Analysis

  • avt is wrongly masked in the top cells. tmask is used instead of wmask in tke.
  • In the mean time, I found some bugs in the computation of en(:,:,1):
    • en(jk=1) overwritten to different value when top and bottom drag contribution included (only if ice shelf cavities opened)
    • case \ln_drg = .false. and ln_OFF = .true. in namdrg\ gives a different result (ORCA2) than \ln_drg = .true. and ln_OFF = .true. in namdrg\.

This is affecting NEMO v4 and the trunk.

Fix


Avt masking (zdftke):

@@ -517,7 +517,7 @@
       !
       IF( nn_pdl == 1 ) THEN      !* Prandtl number case: update avt
          DO_3D_00_00( 2, jpkm1 )
-            p_avt(ji,jj,jk)   = MAX( apdlr(ji,jj,jk) * p_avt(ji,jj,jk), avtb_2d(ji,jj) * avtb(jk) ) * tmask(ji,jj,jk)
+            p_avt(ji,jj,jk)   = MAX( apdlr(ji,jj,jk) * p_avt(ji,jj,jk), avtb_2d(ji,jj) * avtb(jk) ) * wmask(ji,jj,jk)
          END_3D
       ENDIF

en surface value: We should first set up the value at surface (level 1). If ln_drg = .fasle., en(ji,jj,mikt(ji,jj)) is initialised to 0 as en(ji,jj,mbkt(ji,jj)+1) is.

@@ -213,15 +213,10 @@
       !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
       !                     !  Surface/top/bottom boundary condition on tke
       !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-      
+      !      
       DO_2D_00_00
          en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1)
       END_2D
-      IF ( ln_isfcav ) THEN
-         DO_2D_00_00
-            en(ji,jj,mikt(ji,jj)) = rn_emin * tmask(ji,jj,1)
-         END_2D
-      ENDIF
       !
       !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
       !                     !  Bottom boundary condition on tke

If ln_drag, en(ji,jj,mikt(ji,jj)) should be modified only beneath the ice shelves otherwise it will overwrite the ocean surface (jk=1) value. So we need to use tmask(ji,jj,1) and (1._wp - tmask(ji,jj,1)) * ssmask(ji,jj) to separate case under ice shelf and in open ocean.

@@ -248,7 +248,7 @@
                !                             ! where 0.001875 = (rn_ebb0/rho0) * 0.5 = 3.75*0.5/1000.  (CAUTION CdU<0)
                zetop = - 0.001875_wp * rCdU_top(ji,jj) * SQRT(  ( zmsku*( uu(ji,jj,mikt(ji,jj),Kbb)+uu(ji-1,jj,mikt(ji,jj),Kbb) ) )**2  &
                   &                                           + ( zmskv*( vv(ji,jj,mikt(ji,jj),Kbb)+vv(ji,jj-1,mikt(ji,jj),Kbb) ) )**2  )
-               en(ji,jj,mikt(ji,jj)) = MAX( zetop, rn_emin ) * (1._wp - tmask(ji,jj,1))   ! masked at ocean surface
+               en(ji,jj,mikt(ji,jj)) = en(ji,jj,1) * tmask(ji,jj,1) + MAX( zetop, rn_emin ) * (1._wp - tmask(ji,jj,1)) * ssmask(ji,jj)   ! masked at ocean surface
             END_2D
          ENDIF

The MAX( zebot, rn_emin ) used to compute the bottom and top boundary condition due to drag (case ln_drg = .true. in tke namelist) leads to different result between the case:

  • ln_drg = .false. and ln_OFF = .true. in namdrg => bottom boundary is 0.0 (initialisation)
  • ln_drg = .true. and ln_OFF = .true. in namdrg => zebot = 0 => bottom boundary is rn_emin

I think both cases should give the same answer. I changed MAX( zebot, rn_emin ) by zebot (ie initialised bottom boundary condition to 0.0) and in this case both simulations gave the same results ().

#2440 systeam jchanut fixed Issue with land processors removal
Description

Context

The rewriting of mpp initialization has theoretically allowed some flexibility in defining different mpp layouts over each AGRIF grid. This includes the removal of land processors over parent and child grids.

Analysis

Boundary conditions in an AGRIF zoom are set by detecting if the processor domain includes the global domain edges. This is done by using nbondi/nbondj integers that define the type of east/west/north/south neighbors. Doing so potentially marks a local domain close to a land processor domain as a "boundary domain". Hence, AGRIF will attempt to set boundary conditions in that case. In some circonstances, this updates ocean points that should't be updated.

Fix

The use of nbondi/nbondj has been suppressed in the last version (trunk), the reasoning being done on global indexes. In earlier NEMO 4.0 versions, we should define once for all (in mppini) logicals to detect if a local domain lays on one of global domain edges.

...

Note: See TracQuery for help on using queries.