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.
Changeset 15264 for NEMO/branches/2020/ticket2487/tests/CANAL/MY_SRC – NEMO

Ignore:
Timestamp:
2021-09-16T12:42:20+02:00 (3 years ago)
Author:
smueller
Message:

Synchronizing with /NEMO/releases/r4.0/r4.0-HEAD@15236 (ticket #2487)

Location:
NEMO/branches/2020/ticket2487
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/ticket2487

    • Property svn:externals
      •  

        old new  
        1 ^/utils/build/arch@12130      arch 
        2 ^/utils/build/makenemo@12191  makenemo 
        3 ^/utils/build/mk@11662        mk 
        4 ^/utils/tools_r4.0-HEAD@12672 tools 
        5 ^/vendors/AGRIF/dev@10586     ext/AGRIF 
        6 ^/vendors/FCM@10134           ext/FCM 
        7 ^/vendors/IOIPSL@9655         ext/IOIPSL 
         1^/utils/build/arch@12130        arch 
         2^/utils/build/makenemo@12191    makenemo 
         3^/utils/build/mk@11662          mk 
         4^/utils/tools_r4.0-HEAD@14974  tools 
         5^/vendors/AGRIF/stable@14105    ext/AGRIF 
         6^/vendors/FCM@10134             ext/FCM 
         7^/vendors/IOIPSL@9655           ext/IOIPSL 
        88 
        99# SETTE mapping (inactive) 
  • NEMO/branches/2020/ticket2487/tests/CANAL/MY_SRC/diawri.F90

    r12206 r15264  
    230230      IF( iom_use('logavs') )   CALL iom_put( "logavs", LOG( MAX( 1.e-20_wp, avs(:,:,:) ) ) ) 
    231231 
    232       IF ( iom_use("salgrad") .OR. iom_use("salgrad2") ) THEN 
     232      IF ( iom_use("socegrad") .OR. iom_use("socegrad2") ) THEN 
    233233         z3d(:,:,jpk) = 0. 
    234234         DO jk = 1, jpkm1 
     
    244244         END DO 
    245245         CALL lbc_lnk( 'diawri', z3d, 'T', 1. ) 
    246          CALL iom_put( "salgrad2",  z3d )          ! square of module of sal gradient 
     246         CALL iom_put( "socegrad2",  z3d )          ! square of module of sal gradient 
    247247         z3d(:,:,:) = SQRT( z3d(:,:,:) ) 
    248          CALL iom_put( "salgrad" ,  z3d )          ! module of sal gradient 
     248         CALL iom_put( "socegrad" ,  z3d )          ! module of sal gradient 
    249249      ENDIF 
    250250          
     
    299299            END DO 
    300300         END DO 
    301          CALL iom_put( "salt2c", rau0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
    302       ENDIF 
    303       ! 
    304       IF ( iom_use("eken") ) THEN 
     301         CALL iom_put( "salt2c", rau0 * z2d )          ! vertically integrated squared salt content (PSU*kg/m2) 
     302      ENDIF 
     303      ! 
     304      IF ( iom_use("eken") .OR. iom_use("eken_int") ) THEN 
    305305         z3d(:,:,jpk) = 0._wp  
    306306         DO jk = 1, jpkm1 
    307             DO jj = 2, jpj 
    308                DO ji = 2, jpi 
     307            DO jj = 2, jpjm1 
     308               DO ji = 2, jpim1 
    309309                  zztmpx = 0.5 * ( un(ji-1,jj  ,jk) + un(ji,jj,jk) ) 
    310310                  zztmpy = 0.5 * ( vn(ji  ,jj-1,jk) + vn(ji,jj,jk) ) 
     
    315315         CALL lbc_lnk( 'diawri', z3d, 'T', 1. ) 
    316316         CALL iom_put( "eken", z3d )                 ! kinetic energy 
    317       ENDIF 
    318  
    319       IF ( iom_use("ke") .or. iom_use("ke_zint") ) THEN 
    320          ! 
    321          z3d(:,:,jpk) = 0._wp 
    322          z3d(1,:, : ) = 0._wp 
    323          z3d(:,1, : ) = 0._wp 
    324          DO jk = 1, jpkm1 
    325             DO jj = 2, jpj 
    326                DO ji = 2, jpi 
    327                   z3d(ji,jj,jk) = 0.25_wp * ( un(ji  ,jj,jk) * un(ji  ,jj,jk) * e1e2u(ji  ,jj) * e3u_n(ji  ,jj,jk)  & 
    328                      &                      + un(ji-1,jj,jk) * un(ji-1,jj,jk) * e1e2u(ji-1,jj) * e3u_n(ji-1,jj,jk)  & 
    329                      &                      + vn(ji,jj  ,jk) * vn(ji,jj  ,jk) * e1e2v(ji,jj  ) * e3v_n(ji,jj  ,jk)  & 
    330                      &                      + vn(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1e2v(ji,jj-1) * e3v_n(ji,jj-1,jk)  )  & 
    331                      &                    * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
    332                END DO 
    333             END DO 
    334          END DO 
    335           
    336          CALL lbc_lnk( 'diawri', z3d, 'T', 1. ) 
    337          CALL iom_put( "ke", z3d ) ! kinetic energy 
    338317 
    339318         z2d(:,:)  = 0._wp  
     
    341320            DO jj = 1, jpj 
    342321               DO ji = 1, jpi 
    343                   z2d(ji,jj) = z2d(ji,jj) + e3t_n(ji,jj,jk) * z3d(ji,jj,jk) * tmask(ji,jj,jk) 
    344                END DO 
    345             END DO 
    346          END DO 
    347          CALL iom_put( "ke_zint", z2d )   ! vertically integrated kinetic energy 
    348  
     322                  z2d(ji,jj) = z2d(ji,jj) + e3t_n(ji,jj,jk) * z3d(ji,jj,jk) * e1e2t(ji,jj) * tmask(ji,jj,jk) 
     323               END DO 
     324            END DO 
     325         END DO 
     326         CALL iom_put( "eken_int", z2d )   ! vertically integrated kinetic energy 
    349327      ENDIF 
    350328      ! 
     
    358336               DO ji = 1, fs_jpim1   ! vector opt. 
    359337                  z3d(ji,jj,jk) = (  e2v(ji+1,jj  ) * vn(ji+1,jj  ,jk) - e2v(ji,jj) * vn(ji,jj,jk)    & 
    360                      &              - e1u(ji  ,jj+1) * un(ji  ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
     338                     &             - e1u(ji  ,jj+1) * un(ji  ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    361339               END DO 
    362340            END DO 
  • NEMO/branches/2020/ticket2487/tests/CANAL/MY_SRC/usrdef_istate.F90

    r10425 r15264  
    6464      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~   ' 
    6565      ! 
    66       IF (ln_sshnoise) CALL RANDOM_NUMBER(zrandom) 
    6766      zjetx = ABS(rn_ujetszx)/2. 
    6867      zjety = ABS(rn_ujetszy)/2. 
    6968      ! 
     69      zf0   = 2._wp * omega * SIN( rad * rn_ppgphi0 ) 
     70      ! 
    7071      SELECT CASE(nn_initcase) 
     72 
     73      CASE(-1)    ! stratif at rest 
     74 
     75         ! sea level: 
     76         pssh(:,:) = 0. 
     77         ! temperature: 
     78         pts(:,:,1,jp_tem) = 25. !!30._wp 
     79         pts(:,:,2:jpk,jp_tem) = 22. !!24._wp 
     80         ! salinity:   
     81         pts(:,:,:,jp_sal) = 35._wp 
     82         ! velocities: 
     83         pu(:,:,:) = 0. 
     84         pv(:,:,:) = 0. 
     85 
    7186      CASE(0)    ! rest 
    7287          
     
    96111            zbeta = 2._wp * omega * COS( rad * rn_ppgphi0 ) / ra 
    97112            WHERE( ABS(gphit) <= zjety ) 
    98                pssh(:,:) = - rn_uzonal / grav * ( ff_t(:,:) * gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 ) 
    99             ELSEWHERE 
    100                pssh(:,:) = - rn_uzonal / grav * ( ff_t(:,:) * SIGN(zjety, gphit(:,:)) * 1.e3   & 
     113               pssh(:,:) = - rn_uzonal / grav * ( zf0 * gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 ) 
     114            ELSEWHERE 
     115               pssh(:,:) = - rn_uzonal / grav * ( zf0 * SIGN(zjety, gphit(:,:)) * 1.e3   & 
    101116                  &                             + 0.5 * zbeta * zjety * zjety * 1.e6 ) 
    102117            END WHERE 
     
    107122         pts(:,:,jpk,jp_sal) = 0. 
    108123         DO jk=1, jpkm1 
    109             pts(:,:,jk,jp_sal) = gphit(:,:) 
     124            WHERE( ABS(gphit) <= zjety ) 
     125!!$            WHERE( ABS(gphit) <= zjety*0.5 .AND. ABS(glamt) <= zjety*0.5 ) ! for a square of salt 
     126               pts(:,:,jk,jp_sal) = 35. 
     127            ELSEWHERE 
     128               pts(:,:,jk,jp_sal) = 30. 
     129            END WHERE                     
    110130         END DO 
    111131         ! velocities: 
     
    132152            WHERE( ABS(gphit) <= zjety ) 
    133153               pssh(:,:) = - SIGN(rn_uzonal, gphit(:,:)) / grav   & 
    134                   &        * ( ff_t(:,:) * gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 ) 
     154                  &        * ( zf0 * gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 ) 
    135155            ELSEWHERE 
    136156               pssh(:,:) = - SIGN(rn_uzonal, gphit(:,:)) / grav   & 
    137                   &        * ( ff_t(:,:) * SIGN(zjety, gphit(:,:)) * 1.e3 + 0.5 * zbeta * zjety * zjety * 1.e6 ) 
     157                  &        * ( zf0 * SIGN(zjety, gphit(:,:)) * 1.e3 + 0.5 * zbeta * zjety * zjety * 1.e6 ) 
    138158            END WHERE 
    139159         END SELECT 
     
    141161         pts(:,:,:,jp_tem) = 10._wp 
    142162         ! salinity:   
    143          pts(:,:,:,jp_sal) = 2. 
    144          DO jk=1, jpkm1 
    145             WHERE( ABS(gphiv) <= zjety ) pts(:,:,jk,jp_sal) = 2. + SIGN(1.,gphiv(:,:)) 
     163         pts(:,:,:,jp_sal) = 30. 
     164         DO jk=1, jpkm1 
     165            WHERE( ABS(gphiv) <= zjety ) pts(:,:,jk,jp_sal) = 30. + SIGN(1.,gphiv(:,:)) 
    146166         END DO 
    147167         ! velocities: 
     
    176196         ! salinity:   
    177197         DO jk=1, jpkm1 
    178             pts(:,:,jk,jp_sal) = gphit(:,:) 
     198            pts(:,:,jk,jp_sal) = pssh(:,:) 
    179199         END DO 
    180200         ! velocities: 
     
    213233         zf0   = 2._wp * omega * SIN( rad * rn_ppgphi0 ) 
    214234         zumax = rn_vtxmax * SIGN(1._wp, zf0) ! Here Anticyclonic: set zumax=-1 for cyclonic 
    215          zlambda = SQRT(2._wp)*rn_lambda       ! Horizontal scale in meters  
     235         zlambda = SQRT(2._wp)*rn_lambda*1.e3       ! Horizontal scale in meters  
    216236         zn2 = 3.e-3**2 
    217237         zH = 0.5_wp * 5000._wp 
     
    253273         ! velocities: 
    254274         za = 2._wp * zP0 / zlambda**2 
    255          DO jj=1, jpj 
    256             DO ji=1, jpim1 
     275         DO jj = 2, jpjm1 
     276            DO ji = 2, jpim1 
    257277               zx = glamu(ji,jj) * 1.e3 
    258278               zy = gphiu(ji,jj) * 1.e3 
     
    270290         END DO 
    271291         ! 
    272          DO jj=1, jpjm1 
    273             DO ji=1, jpi 
     292         DO jj = 2, jpjm1 
     293            DO ji = 2, jpim1 
    274294               zx = glamv(ji,jj) * 1.e3 
    275295               zy = gphiv(ji,jj) * 1.e3 
     
    287307         END DO 
    288308         !             
     309         CALL lbc_lnk_multi( 'usrdef_istate', pu, 'U', -1., pv, 'V', -1. ) 
     310 
    289311      END SELECT 
    290312 
    291313      IF (ln_sshnoise) THEN 
     314         CALL RANDOM_SEED() 
    292315         CALL RANDOM_NUMBER(zrandom) 
    293316         pssh(:,:) = pssh(:,:) + ( 0.1  * zrandom(:,:) - 0.05 ) 
    294317      END IF 
    295       CALL lbc_lnk( 'usrdef_istate', pssh, 'T',  1. ) 
    296       CALL lbc_lnk(  'usrdef_istate', pts, 'T',  1. ) 
    297       CALL lbc_lnk(   'usrdef_istate', pu, 'U', -1. ) 
    298       CALL lbc_lnk(   'usrdef_istate', pv, 'V', -1. ) 
    299  
     318   
    300319   END SUBROUTINE usr_def_istate 
    301320 
  • NEMO/branches/2020/ticket2487/tests/CANAL/MY_SRC/usrdef_nam.F90

    r11899 r15264  
    5050   LOGICAL , PUBLIC ::   ln_sshnoise=.false. ! add random noise on initial ssh 
    5151   REAL(wp), PUBLIC ::   rn_lambda  = 50.    ! gaussian lambda 
     52   INTEGER , PUBLIC ::   nn_perio   =    0   ! periodicity of the channel (0=closed, 1=E-W) 
    5253 
    5354   !!---------------------------------------------------------------------- 
     
    7980      !! 
    8081      NAMELIST/namusr_def/  rn_domszx, rn_domszy, rn_domszz, rn_dx, rn_dy, rn_dz, rn_0xratio, rn_0yratio   & 
    81          &                 , nn_fcase, rn_ppgphi0, rn_vtxmax, rn_uzonal, rn_ujetszx, rn_ujetszy   & 
    82          &                 , rn_u10, rn_windszx, rn_windszy, rn_uofac   & 
    83          &                 , nn_botcase, nn_initcase, ln_sshnoise, rn_lambda 
     82         &                 , nn_fcase, rn_ppgphi0, rn_u10, rn_windszx, rn_windszy & !!, rn_uofac   & 
     83         &                 , rn_vtxmax, rn_uzonal, rn_ujetszx, rn_ujetszy  & 
     84         &                 , nn_botcase, nn_initcase, ln_sshnoise, rn_lambda, nn_perio 
    8485      !!---------------------------------------------------------------------- 
    8586      ! 
     
    151152         WRITE(numout,*) '      add random noise on initial ssh   ln_sshnoise= ', ln_sshnoise 
    152153         WRITE(numout,*) '      Gaussian lambda parameter          rn_lambda = ', rn_lambda 
    153          WRITE(numout,*) '   ' 
    154          WRITE(numout,*) '   Lateral boundary condition of the global domain' 
    155          WRITE(numout,*) '      EW_CANAL : closed basin               jperio = ', kperio 
     154         WRITE(numout,*) '      Periodicity of the basin            nn_perio = ', nn_perio 
    156155      ENDIF 
     156      !                             ! Set the lateral boundary condition of the global domain 
     157      kperio = nn_perio                    ! EW_CANAL configuration : closed basin 
    157158      ! 
    158159   END SUBROUTINE usr_def_nam 
  • NEMO/branches/2020/ticket2487/tests/CANAL/MY_SRC/usrdef_sbc.F90

    r10074 r15264  
    1717   USE sbc_oce         ! Surface boundary condition: ocean fields 
    1818   USE phycst          ! physical constants 
    19    USE usrdef_nam, ONLY : rn_u10, rn_uofac, rn_windszy  
     19   USE usrdef_nam, ONLY : rn_u10, rn_uofac, rn_windszy, rn_windszx  
    2020   ! 
    2121   USE in_out_manager  ! I/O manager 
     
    7171         ! 
    7272         utau(:,:) = 0._wp 
    73          IF( rn_u10 /= 0. .AND. rn_windszy > 0. ) THEN 
    74             WHERE( ABS(gphit) <= rn_windszy/2. ) utau(:,:) = zrhocd * rn_u10 * rn_u10 
    75          ENDIF 
    7673         vtau(:,:) = 0._wp 
    7774         taum(:,:) = 0._wp 
     
    8380         qsr (:,:) = 0._wp 
    8481         !          
     82      ENDIF 
     83 
     84      IF( rn_u10 /= 0. .AND. rn_windszy > 0. ) THEN 
     85         IF( nyear == 1 .AND. nmonth == 1 .AND. nday <= 10 ) THEN 
     86            WHERE( ABS(gphit) <= rn_windszy/2. .AND. ABS(glamt) <= rn_windszx/2. ) utau(:,:) = zrhocd * rn_u10 * rn_u10 
     87         ELSE 
     88            utau(:,:) = 0. 
     89         ENDIF 
    8590      ENDIF 
    8691 
  • NEMO/branches/2020/ticket2487/tests/CANAL/MY_SRC/usrdef_zgr.F90

    r10425 r15264  
    199199         zmaxlam = MAXVAL(glamt) 
    200200         CALL mpp_max( 'usrdef_zgr', zmaxlam )                 ! max over the global domain 
    201          zscl = rpi / zmaxlam 
    202          z2d(:,:) = 0.5 * ( 1. - COS( glamt(:,:) * zscl ) ) 
    203          z2d(:,:) = REAL(jpkm1 - NINT( 0.75 * REAL(jpkm1,wp) * z2d(:,:) ), wp) 
     201         zscl = 0.5 * rpi / zmaxlam 
     202         z2d(:,:) = COS( glamt(:,:) * zscl ) 
     203         z2d(:,:) = REAL(jpkm1 - NINT( 0.5 * REAL(jpkm1,wp) * z2d(:,:) ), wp) 
    204204      END SELECT 
    205205      ! 
Note: See TracChangeset for help on using the changeset viewer.