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 (40 - 42 of 2547)

Ticket Resolution Summary Owner Reporter
#1323 fixed New development branch for surface wave components acc acc
Description

Creation of the 2014/dev_r4642_WavesWG branch. This is a new development branch for combining the surface wave components from several members of the Waves Working Group. The first action on this branch will be to incorporate the changes from the 2013/dev_ECMWF_waves branch which this new branch replaces. INGV will then incorporate their developments and rationalise the two approaches into a single interface. Additional comments will be added to the wiki:ticket/1323_WavesWG page.

#1325 fixed Incorrect output restart filenames generated if files exist and ln_clobber is .true. nemo acc
Description

With ln_clobber set to .true. it should be possible to repeat runs and overwrite earlier versions of output files. The logic is currently flawed in that the processor number is appended to the base filename for checking if the file exists in iom_open and again in iom_nf90_open for output files. The string variable is reset between calls if the file does not exist but not if the file exists and ln_clobber is .true. The result is an extra set of restart files with names such as:

ORCA2_00000465_restart_0000_0000.nc

Changing:

          IF( llwrt .AND. .NOT. ln_clobber ) THEN   ! we stop as we want to write in a new file 
             CALL ctl_stop( TRIM(clinfo), 'We want to write in a new file but '//TRIM(clname)//' already exists...' )
             istop = nstop + 1                      ! make sure that istop /= nstop so we don't open the file
          ENDIF

to:

          IF( llwrt .AND. .NOT. ln_clobber ) THEN   ! we stop as we want to write in a new file 
             CALL ctl_stop( TRIM(clinfo), 'We want to write in a new file but '//TRIM(clname)//' already exists...' )
             istop = nstop + 1                      ! make sure that istop /= nstop so we don't open the file
          ELSEIF( llwrt ) THEN     ! the file exists and we are in write mode with permission to 
             clname = cltmpn       ! overwrite so get back the file name without the cpu number
          ENDIF

in iom.F90 gives the correct behaviour.

#1351 fixed Problems with AMM12 SETTE tests with -O3 optimisation (ifort compiler) nemo acc
Description

My initial attempts to run the AMM12 SETTE tests with a v3.6 trunk (rev 4673) failed when using the ifort compiler (v14) and a -O3 optimisation level. The failure was CFL breaches after 12 time steps. The tests ran successfully at -O2 and below for AMM12 and at -O3 for all other tests (except AGRIF).

Eventually tracked the cause to this block at line 291 in dynspg_ts.F90 ( key_vectopt_loop is not defined ):

      DO jk = 1, jpkm1
#if defined key_vectopt_loop
         DO jj = 1, 1         !Vector opt. => forced unrolling
            DO ji = 1, jpij
#else 
         DO jj = 1, jpj
            DO ji = 1, jpi
#endif                                                                   
               zu_frc(ji,jj) = zu_frc(ji,jj) + fse3u_n(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk)
               zv_frc(ji,jj) = zv_frc(ji,jj) + fse3v_n(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk)
            END DO
         END DO
      END DO

which looks harmless but adding a compiler directive to suppress loop fusion enables a successful SETTE test at -O3 optimisation. I.e.:

      DO jk = 1, jpkm1
!DIR$ NOFUSION
#if defined key_vectopt_loop
         DO jj = 1, 1         !Vector opt. => forced unrolling
            DO ji = 1, jpij
#else 
         DO jj = 1, jpj
            DO ji = 1, jpi
#endif                                                                   
               zu_frc(ji,jj) = zu_frc(ji,jj) + fse3u_n(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk)
               zv_frc(ji,jj) = zv_frc(ji,jj) + fse3v_n(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk)
            END DO
         END DO
      END DO

Does anyone have a clue what might be happening here?

Note: See TracQuery for help on using queries.