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 (79 - 81 of 2547)

Ticket Resolution Summary Owner Reporter
#2616 fixed test on humidity in sbcblk? systeam smasson
Description

Context

A test on humidity has been added in sbcblk

            SELECT CASE( nhumi )
            CASE( np_humi_sph ) ! specific humidity => expect: 0. <= something < 0.065 [kg/kg] (0.061 is saturation at 45degC !!!)
               IF(  (ztmp < 0._wp) .OR. (ztmp > 0.065)  ) ztmp = -1._wp
            CASE( np_humi_dpt ) ! dew-point temperature => expect: 110. <= something < 320. [K]
               IF( (ztmp < 110._wp).OR.(ztmp > 320._wp) ) ztmp = -1._wp
            CASE( np_humi_rlh ) ! relative humidity => expect: 0. <= something < 100. [%]
               IF(  (ztmp < 0._wp) .OR.(ztmp > 100._wp) ) ztmp = -1._wp
            END SELECT1

The test is performed on the mean value if there is more than 8-ocean points in the subdomain:

         ztmp = SUM(tmask(:,:,1)) ! number of ocean points on local proc domain
         IF( ztmp > 8._wp ) THEN ! test only on proc domains with at least 8 ocean points!

Analysis

There are 2 issues:

1) On large MPI subdomains, a few absurd values won't come out in the mean value. The result of this test is changing according to the number of MPI task we use. For example, when running ORCA2_ICE_PISCES on 32 cores everything is OK but when using 192 cores, the model stops as the mean value of one of the subdomains does not pass the test...
This won't happen if we test the min instead of the mean. Any subdomain decomposition will stop the model if an absurd value is found, even if this is a local min.

2) the forcing file of (at least) ORCA2_ICE does contain some absurd values (humidity < 0).

Recommendation

1) Which test do we want to do?

  • if we want to exclude any absurd value, then we should use min instead of mean as soon as there is 1 ocean point in the subdomain.
  • if we accept a few absurd values and we only want to check if there is no error on the definition of humidity variable (specific humidity vs. dew-point temperature vs. relative humidity), I think a test on the global mean (implying a global communication) at the first time step should be enough.

2) We can remove absurd values in forcing file with one of these commands:

ncap2 -s "where(Q_10 < 0.0) Q_10 = 0.0" q_10.15JUNE2009_fill.nc out.nc
cdo -expr,"Q_10=(Q_10<0.0)?0.0:Q_10;" q_10.15JUNE2009_fill.nc out.nc # warning: output file must differ from the input file
cdo setrtoc,-inf,0.,0.  q_10.15JUNE2009_fill.nc out.nc  # warning: output file must differ from the input file
#2615 fixed bug in cpl_define + AGRIF smasson smasson
Description

Context

The bugfix done in cpl_define in cpl_oasis3.F90 [12132] is not working...

#if defined key_agrif
      IF( agrif_fixed() == Agrif_Nb_Fine_Grids() ) THEN
#endif

Analysis

Agrif_Nb_Fine_Grids() is initialized in nemo_gcm when calling

      CALL Agrif_Regrid()

but nemo_init -> sbc_init -> cpl_define is called before!
In consequence, for Agrif_Root, Agrif_Nb_Fine_Grids() is not yet defined and is equal to 0, agrif_fixed() == Agrif_Nb_Fine_Grids() is .true. and we call oasis_enddef before chid grids are defined for oasis...

Fix

One solution would be to exclude Agrif_Root() from the test:

#if defined key_agrif
      IF( agrif_fixed() == Agrif_Nb_Fine_Grids() .and. .not. Agrif_Root() ) THEN
#endif

but this won't work if there is no zoom...

We should find a better solution...

#2614 fixed "NOT USED" case not correctly handled by SAS gsamson gsamson
Description

Context

trying to use SAS with SST forcing only

Analysis

surface fields are not initialised to default values when using "NOT USED" as forcing file name

Fix

add default init for all SAS forcing variables when the forcing file name is "NOT USED" such as what is done in iceistate.F90 for example:

IF( TRIM(sf_ssm_2d(jf_ssh)%clrootname) == 'NOT USED' ) &

& sf_ssm_2d(jf_ssh)%fnow(:,:,1) = 0._wp

Note: See TracQuery for help on using queries.