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 12377 for NEMO/trunk/src/OCE/CRS – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/OCE/CRS/crsdomwri.F90

    r10425 r12377  
    155155      DO jk = 1,jpk    
    156156         DO jj = 1, jpj_crsm1    
    157             DO ji = 1, jpi_crsm1  ! jes what to do for fs_jpim1??vector opt. 
     157            DO ji = 1, jpi_crsm1  ! jes what to do for jpim1??vector opt. 
    158158               zdepu(ji,jj,jk) = MIN( gdept_crs(ji,jj,jk) , gdept_crs(ji+1,jj  ,jk) ) * umask_crs(ji,jj,jk) 
    159159               zdepv(ji,jj,jk) = MIN( gdept_crs(ji,jj,jk) , gdept_crs(ji  ,jj+1,jk) ) * vmask_crs(ji,jj,jk) 
  • NEMO/trunk/src/OCE/CRS/crsfld.F90

    r10425 r12377  
    3232 
    3333   !! * Substitutions 
    34 #  include "vectopt_loop_substitute.h90" 
     34#  include "do_loop_substitute.h90" 
    3535   !!---------------------------------------------------------------------- 
    3636   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    4040CONTAINS 
    4141 
    42    SUBROUTINE crs_fld( kt ) 
     42   SUBROUTINE crs_fld( kt, Kmm ) 
    4343      !!--------------------------------------------------------------------- 
    4444      !!                  ***  ROUTINE crs_fld  *** 
     
    5454      !!---------------------------------------------------------------------- 
    5555      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     56      INTEGER, INTENT(in) ::   Kmm  ! time level index 
    5657      ! 
    5758      INTEGER  ::   ji, jj, jk        ! dummy loop indices 
     
    6768 
    6869      ! Depth work arrrays 
    69       ze3t(:,:,:) = e3t_n(:,:,:) 
    70       ze3u(:,:,:) = e3u_n(:,:,:) 
    71       ze3v(:,:,:) = e3v_n(:,:,:) 
    72       ze3w(:,:,:) = e3w_n(:,:,:) 
     70      ze3t(:,:,:) = e3t(:,:,:,Kmm) 
     71      ze3u(:,:,:) = e3u(:,:,:,Kmm) 
     72      ze3v(:,:,:) = e3v(:,:,:,Kmm) 
     73      ze3w(:,:,:) = e3w(:,:,:,Kmm) 
    7374 
    7475      IF( kt == nit000  ) THEN 
     
    9697 
    9798      !  Temperature 
    98       zt(:,:,:) = tsn(:,:,:,jp_tem)  ;      zt_crs(:,:,:) = 0._wp 
     99      zt(:,:,:) = ts(:,:,:,jp_tem,Kmm)  ;      zt_crs(:,:,:) = 0._wp 
    99100      CALL crs_dom_ope( zt, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 ) 
    100101      tsn_crs(:,:,:,jp_tem) = zt_crs(:,:,:) 
     
    105106       
    106107      !  Salinity 
    107       zs(:,:,:) = tsn(:,:,:,jp_sal)  ;      zs_crs(:,:,:) = 0._wp 
     108      zs(:,:,:) = ts(:,:,:,jp_sal,Kmm)  ;      zs_crs(:,:,:) = 0._wp 
    108109      CALL crs_dom_ope( zs, 'VOL', 'T', tmask, zs_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 ) 
    109110      tsn_crs(:,:,:,jp_sal) = zt_crs(:,:,:) 
     
    113114 
    114115      !  U-velocity 
    115       CALL crs_dom_ope( un, 'SUM', 'U', umask, un_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0 ) 
     116      CALL crs_dom_ope( uu(:,:,:,Kmm), 'SUM', 'U', umask, un_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0 ) 
    116117      ! 
    117118      zt(:,:,:) = 0._wp     ;    zs(:,:,:) = 0._wp  ;   zt_crs(:,:,:) = 0._wp   ;    zs_crs(:,:,:) = 0._wp 
    118       DO jk = 1, jpkm1 
    119          DO jj = 2, jpjm1 
    120             DO ji = 2, jpim1    
    121                zt(ji,jj,jk)  = un(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )  
    122                zs(ji,jj,jk)  = un(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )  
    123             END DO 
    124          END DO 
    125       END DO 
     119      DO_3D_00_00( 1, jpkm1 ) 
     120         zt(ji,jj,jk)  = uu(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) )  
     121         zs(ji,jj,jk)  = uu(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) )  
     122      END_3D 
    126123      CALL crs_dom_ope( zt, 'SUM', 'U', umask, zt_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0 ) 
    127124      CALL crs_dom_ope( zs, 'SUM', 'U', umask, zs_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0 ) 
     
    132129 
    133130      !  V-velocity 
    134       CALL crs_dom_ope( vn, 'SUM', 'V', vmask, vn_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0 ) 
     131      CALL crs_dom_ope( vv(:,:,:,Kmm), 'SUM', 'V', vmask, vn_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0 ) 
    135132      !                                                                                  
    136133      zt(:,:,:) = 0._wp     ;    zs(:,:,:) = 0._wp  ;   zt_crs(:,:,:) = 0._wp   ;    zs_crs(:,:,:) = 0._wp 
    137       DO jk = 1, jpkm1 
    138          DO jj = 2, jpjm1 
    139             DO ji = 2, jpim1    
    140                zt(ji,jj,jk)  = vn(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) )  
    141                zs(ji,jj,jk)  = vn(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) )  
    142             END DO 
    143          END DO 
    144       END DO 
     134      DO_3D_00_00( 1, jpkm1 ) 
     135         zt(ji,jj,jk)  = vv(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) )  
     136         zs(ji,jj,jk)  = vv(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) )  
     137      END_3D 
    145138      CALL crs_dom_ope( zt, 'SUM', 'V', vmask, zt_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0 ) 
    146139      CALL crs_dom_ope( zs, 'SUM', 'V', vmask, zs_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0 ) 
     
    152145      IF( iom_use( "eken") ) THEN     !      kinetic energy 
    153146         z3d(:,:,jk) = 0._wp  
    154          DO jk = 1, jpkm1 
    155             DO jj = 2, jpjm1 
    156                DO ji = fs_2, fs_jpim1   ! vector opt. 
    157                   zztmp  = r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
    158                   z3d(ji,jj,jk) = 0.25_wp * zztmp * (                                    & 
    159                      &            un(ji-1,jj,jk)**2 * e2u(ji-1,jj) * e3u_n(ji-1,jj,jk)   & 
    160                      &          + un(ji  ,jj,jk)**2 * e2u(ji  ,jj) * e3u_n(ji  ,jj,jk)   & 
    161                      &          + vn(ji,jj-1,jk)**2 * e1v(ji,jj-1) * e3v_n(ji,jj-1,jk)   & 
    162                      &          + vn(ji,jj  ,jk)**2 * e1v(ji,jj  ) * e3v_n(ji,jj  ,jk)   ) 
    163                END DO 
    164             END DO 
    165          END DO 
     147         DO_3D_00_00( 1, jpkm1 ) 
     148            zztmp  = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     149            z3d(ji,jj,jk) = 0.25_wp * zztmp * (                                    & 
     150               &            uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm)   & 
     151               &          + uu(ji  ,jj,jk,Kmm)**2 * e2u(ji  ,jj) * e3u(ji  ,jj,jk,Kmm)   & 
     152               &          + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm)   & 
     153               &          + vv(ji,jj  ,jk,Kmm)**2 * e1v(ji,jj  ) * e3v(ji,jj  ,jk,Kmm)   ) 
     154         END_3D 
    166155         CALL lbc_lnk( 'crsfld', z3d, 'T', 1. ) 
    167156         ! 
     
    191180      !  W-velocity 
    192181      IF( ln_crs_wn ) THEN 
    193          CALL crs_dom_ope( wn, 'SUM', 'W', tmask, wn_crs, p_e12=e1e2t, p_surf_crs=e1e2w_msk, psgn=1.0 ) 
    194        !  CALL crs_dom_ope( wn, 'VOL', 'W', tmask, wn_crs, p_e12=e1e2t, p_e3=ze3w ) 
     182         CALL crs_dom_ope( ww, 'SUM', 'W', tmask, wn_crs, p_e12=e1e2t, p_surf_crs=e1e2w_msk, psgn=1.0 ) 
     183       !  CALL crs_dom_ope( ww, 'VOL', 'W', tmask, wn_crs, p_e12=e1e2t, p_e3=ze3w ) 
    195184      ELSE 
    196185        wn_crs(:,:,jpk) = 0._wp 
     
    219208       
    220209      !  sbc fields   
    221       CALL crs_dom_ope( sshn , 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=ze3t           , psgn=1.0 )   
     210      CALL crs_dom_ope( ssh(:,:,Kmm) , 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=ze3t           , psgn=1.0 )   
    222211      CALL crs_dom_ope( utau , 'SUM', 'U', umask, utau_crs , p_e12=e2u  , p_surf_crs=e2u_crs  , psgn=1.0 ) 
    223212      CALL crs_dom_ope( vtau , 'SUM', 'V', vmask, vtau_crs , p_e12=e1v  , p_surf_crs=e1v_crs  , psgn=1.0 ) 
  • NEMO/trunk/src/OCE/CRS/crsini.F90

    r11536 r12377  
    3535CONTAINS 
    3636    
    37    SUBROUTINE crs_init  
     37   SUBROUTINE crs_init( Kmm ) 
    3838      !!------------------------------------------------------------------- 
    3939      !!                     *** SUBROUTINE crs_init 
     
    6868      !!               - Read in pertinent data ? 
    6969      !!------------------------------------------------------------------- 
     70      INTEGER, INTENT(in) :: Kmm   ! time level index 
     71      ! 
    7072      INTEGER  :: ji,jj,jk      ! dummy indices 
    7173      INTEGER  :: ierr                                ! allocation error status 
     
    8082     !--------------------------------------------------------- 
    8183     ! 
    82       REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
    8384      READ  ( numnam_ref, namcrs, IOSTAT = ios, ERR = 901) 
    8485901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namcrs in reference namelist' ) 
    85       REWIND( numnam_cfg )              ! Namelist namrun in configuration namelist : Parameters of the run 
    8686      READ  ( numnam_cfg, namcrs, IOSTAT = ios, ERR = 902 ) 
    8787902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namcrs in configuration namelist' ) 
     
    9898        WRITE(numout,*) '      create a mesh file (=T)               ln_msh_crs = ', ln_msh_crs 
    9999        WRITE(numout,*) '      type of Kz coarsening (0,1,2)         nn_crs_kz  = ', nn_crs_kz 
    100         WRITE(numout,*) '      wn coarsened or computed using hdivn  ln_crs_wn  = ', ln_crs_wn 
     100        WRITE(numout,*) '      ww coarsened or computed using hdiv  ln_crs_wn  = ', ln_crs_wn 
    101101     ENDIF 
    102102               
     
    174174      
    175175     ! 
    176      ze3t(:,:,:) = e3t_n(:,:,:) 
    177      ze3u(:,:,:) = e3u_n(:,:,:) 
    178      ze3v(:,:,:) = e3v_n(:,:,:) 
    179      ze3w(:,:,:) = e3w_n(:,:,:) 
     176     ze3t(:,:,:) = e3t(:,:,:,Kmm) 
     177     ze3u(:,:,:) = e3u(:,:,:,Kmm) 
     178     ze3v(:,:,:) = e3v(:,:,:,Kmm) 
     179     ze3w(:,:,:) = e3w(:,:,:,Kmm) 
    180180 
    181181     !    3.d.2   Surfaces  
Note: See TracChangeset for help on using the changeset viewer.