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 6772 for branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde_crs.F90 – NEMO

Ignore:
Timestamp:
2016-07-01T18:02:45+02:00 (8 years ago)
Author:
cbricaud
Message:

clean in coarsening branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde_crs.F90

    r5601 r6772  
    9696      INTEGER  ::   iku, ikv, ikum1, ikvm1   ! partial step level (ocean bottom level) at u- and v-points 
    9797      REAL(wp) ::  ze3wu, ze3wv, zmaxu, zmaxv  ! temporary scalars 
    98   !cc    REAL(wp), POINTER, DIMENSION(:,:  ) ::  zri, zrj, zhi, zhj 
    99   !cc    REAL(wp), POINTER, DIMENSION(:,:,:) ::  zti, zte    ! interpolated value of tracer 
    10098      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) ::  zri, zrj, zhi, zhj 
    10199      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::  zti, zte    ! interpolated value of tracer 
     
    105103      IF( nn_timing == 1 )  CALL timing_start( 'zps_hde_crs') 
    106104      ! 
    107 !!      CALL wrk_alloc( jpi, jpj,       zri, zrj, zhi, zhj )  
    108 !!      CALL wrk_alloc( jpi, jpj, kjpt, zti, zte           )  
    109105      ALLOCATE( zri(jpi_crs,jpj_crs) , zrj(jpi_crs,jpj_crs), zte(jpi_crs ,jpj_crs ,kjpt), & 
    110106         &      zhi(jpi_crs,jpj_crs) , zhj(jpi_crs,jpj_crs), zti(jpi_crs ,jpj_crs ,kjpt)) 
     
    112108      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==! 
    113109         ! 
    114 # if defined key_vectopt_loop 
    115          jj = 1 
    116          DO ji = 1, jpij-jpi   ! vector opt. (forced unrolled) 
    117 # else 
    118110         DO jj = 1, jpjm1 
    119111            DO ji = 1, jpim1 
    120 # endif 
     112 
    121113               iku = mbku_crs(ji,jj)   ;   ikum1 = MAX( iku - 1 , 1 )    ! last and before last ocean level at u- & v-points 
    122114               ikv = mbkv_crs(ji,jj)   ;   ikvm1 = MAX( ikv - 1 , 1 )    ! if level first is a p-step, ik.m1=1 
    123           !     ze3wu = e3w_crs(ji+1,jj  ,iku) - e3w_crs(ji,jj,iku) 
    124           !     ze3wv = e3w_crs(ji  ,jj+1,ikv) - e3w_crs(ji,jj,ikv) 
    125                ze3wu = e3w_max_crs(ji+1,jj  ,iku) - e3w_max_crs(ji,jj,iku) 
    126                ze3wv = e3w_max_crs(ji  ,jj+1,ikv) - e3w_max_crs(ji,jj,ikv) 
     115               ze3wu = e3w_max_0_crs(ji+1,jj  ,iku) - e3w_max_0_crs(ji,jj,iku) 
     116               ze3wv = e3w_max_0_crs(ji  ,jj+1,ikv) - e3w_max_0_crs(ji,jj,ikv) 
    127117               ! 
    128118               ! i- direction 
    129119               IF( ze3wu >= 0._wp ) THEN      ! case 1 
    130                   zmaxu =  ze3wu / e3w_max_crs(ji+1,jj,iku)   
    131                  !    zmaxu =  ze3wu / e3w_crs(ji+1,jj,iku) 
     120#if defined key_vvl 
     121                  zmaxu =  ze3wu / e3w_max_n_crs(ji+1,jj,iku)   
     122#else 
     123                  zmaxu =  ze3wu / e3w_max_0_crs(ji+1,jj,iku)   
     124#endif 
    132125                  ! interpolated values of tracers 
    133126                  zti(ji,jj,jn) = pta(ji+1,jj,iku,jn) + zmaxu * ( pta(ji+1,jj,ikum1,jn) - pta(ji+1,jj,iku,jn) ) 
     
    135128                  pgtu(ji,jj,jn) = umask_crs(ji,jj,1) * ( zti(ji,jj,jn) - pta(ji,jj,iku,jn) ) 
    136129               ELSE                           ! case 2 
    137                   zmaxu = -ze3wu / e3w_max_crs(ji,jj,iku) 
    138                  !    zmaxu = -ze3wu / e3w_crs(ji,jj,iku) 
     130#if defined key_vvl 
     131                  zmaxu = -ze3wu / e3w_max_n_crs(ji,jj,iku) 
     132#else 
     133                  zmaxu = -ze3wu / e3w_max_0_crs(ji,jj,iku) 
     134#endif 
    139135                  ! interpolated values of tracers 
    140136                  zti(ji,jj,jn) = pta(ji,jj,iku,jn) + zmaxu * ( pta(ji,jj,ikum1,jn) - pta(ji,jj,iku,jn) ) 
     
    145141               ! j- direction 
    146142               IF( ze3wv >= 0._wp ) THEN      ! case 1 
    147                   zmaxv =  ze3wv / e3w_max_crs(ji,jj+1,ikv) 
    148                !      zmaxv =  ze3wv / e3w_crs(ji,jj+1,ikv) 
     143#if defined key_vvl 
     144                  zmaxv =  ze3wv / e3w_max_n_crs(ji,jj+1,ikv) 
     145#else 
     146                  zmaxv =  ze3wv / e3w_max_0_crs(ji,jj+1,ikv) 
     147#endif 
    149148                  ! interpolated values of tracers 
    150149                  zte(ji,jj,jn) = pta(ji,jj+1,ikv,jn) + zmaxv * ( pta(ji,jj+1,ikvm1,jn) - pta(ji,jj+1,ikv,jn) ) 
     
    152151                  pgtv(ji,jj,jn) = vmask_crs(ji,jj,1) * ( zte(ji,jj,jn) - pta(ji,jj,ikv,jn) ) 
    153152               ELSE                           ! case 2 
    154                   zmaxv =  -ze3wv / e3w_max_crs(ji,jj,ikv) 
    155                 !     zmaxv = -ze3wv / e3w_crs(ji,jj,ikv) 
     153#if defined key_vvl 
     154                  zmaxv =  -ze3wv / e3w_max_n_crs(ji,jj,ikv) 
     155#else 
     156                  zmaxv =  -ze3wv / e3w_max_0_crs(ji,jj,ikv) 
     157#endif 
    156158                  ! interpolated values of tracers 
    157159                  zte(ji,jj,jn) = pta(ji,jj,ikv,jn) + zmaxv * ( pta(ji,jj,ikvm1,jn) - pta(ji,jj,ikv,jn) ) 
     
    160162               ENDIF 
    161163 
    162 # if ! defined key_vectopt_loop 
    163164            END DO 
    164 # endif 
    165165         END DO 
    166166         CALL crs_lbc_lnk( pgtu(:,:,jn), 'U', -1. )   ;   CALL crs_lbc_lnk( pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond. 
    167167         ! 
    168168      END DO 
    169 !WRITE(numout,*) ' test24 ', e3w_max_crs 
     169 
    170170      ! horizontal derivative of density anomalies (rd) 
    171171      IF( PRESENT( prd ) ) THEN         ! depth of the partial step level 
    172 # if defined key_vectopt_loop 
    173          jj = 1 
    174          DO ji = 1, jpij-jpi   ! vector opt. (forced unrolled) 
    175 # else 
    176172         DO jj = 1, jpjm1 
    177173            DO ji = 1, jpim1 
    178 # endif 
     174 
    179175               iku = mbku_crs(ji,jj) 
    180176               ikv = mbkv_crs(ji,jj) 
    181    !cc             ze3wu  = e3w_max_crs(ji+1,jj  ,iku) - e3w_max_crs(ji,jj,iku)   !gradiant horizontal pas de max 
    182                ze3wu  = e3w_crs(ji+1,jj  ,iku) - e3w_crs(ji,jj,iku) 
    183        !cc        ze3wv  = e3w_max_crs(ji  ,jj+1,ikv) - e3w_max_crs(ji,jj,ikv) 
    184                ze3wv  = e3w_crs(ji  ,jj+1,ikv) - e3w_crs(ji,jj,ikv) 
    185                IF( ze3wu >= 0._wp ) THEN   ;   zhi(ji,jj) = gdept_crs(ji  ,jj,iku)     ! i-direction: case 1 
    186                ELSE                        ;   zhi(ji,jj) = gdept_crs(ji+1,jj,iku)     ! -     -      case 2 
    187                ENDIF 
    188                IF( ze3wv >= 0._wp ) THEN   ;   zhj(ji,jj) = gdept_crs(ji,jj  ,ikv)     ! j-direction: case 1 
    189                ELSE                        ;   zhj(ji,jj) = gdept_crs(ji,jj+1,ikv)     ! -     -      case 2 
    190                ENDIF 
    191 # if ! defined key_vectopt_loop 
     177               ze3wu  = e3w_0_crs(ji+1,jj  ,iku) - e3w_0_crs(ji,jj,iku) 
     178               ze3wv  = e3w_0_crs(ji  ,jj+1,ikv) - e3w_0_crs(ji,jj,ikv) 
     179               IF( ze3wu >= 0._wp ) THEN   ;   zhi(ji,jj) = fsdept_crs(ji  ,jj,iku)     ! i-direction: case 1 
     180               ELSE                        ;   zhi(ji,jj) = fsdept_crs(ji+1,jj,iku)     ! -     -      case 2 
     181               ENDIF 
     182               IF( ze3wv >= 0._wp ) THEN   ;   zhj(ji,jj) = fsdept_crs(ji,jj  ,ikv)     ! j-direction: case 1 
     183               ELSE                        ;   zhj(ji,jj) = fsdept_crs(ji,jj+1,ikv)     ! -     -      case 2 
     184               ENDIF 
     185 
    192186            END DO 
    193 # endif 
    194187         END DO 
    195188         CALL eos_crs( zti, zhi, zri )   
    196189         CALL eos_crs( zte, zhj, zrj ) 
     190 
    197191         ! Gradient of density at the last level  
    198 # if defined key_vectopt_loop 
    199          jj = 1 
    200          DO ji = 1, jpij-jpi   ! vector opt. (forced unrolled) 
    201 # else 
    202192         DO jj = 1, jpjm1 
    203193            DO ji = 1, jpim1 
    204 # endif 
    205194               iku = mbku_crs(ji,jj) 
    206195               ikv = mbkv_crs(ji,jj) 
    207       !         ze3wu  = e3w_max_crs(ji+1,jj  ,iku) - e3w_max_crs(ji,jj,iku)         gradient horizontal 
    208                 ze3wu  = e3w_crs(ji+1,jj  ,iku) - e3w_crs(ji,jj,iku) 
    209       !         ze3wv  = e3w_max_crs(ji  ,jj+1,ikv) - e3w_max_crs(ji,jj,ikv)         gradient horizontal 
    210                 ze3wv  = e3w_crs(ji  ,jj+1,ikv) - e3w_crs(ji,jj,ikv) 
     196                ze3wu  = e3w_0_crs(ji+1,jj  ,iku) - e3w_0_crs(ji,jj,iku) 
     197                ze3wv  = e3w_0_crs(ji  ,jj+1,ikv) - e3w_0_crs(ji,jj,ikv) 
    211198               IF( ze3wu >= 0._wp ) THEN   ;   pgru(ji,jj) = umask_crs(ji,jj,1) * ( zri(ji  ,jj) - prd(ji,jj,iku) )   ! i: 1 
    212199               ELSE                        ;   pgru(ji,jj) = umask_crs(ji,jj,1) * ( prd(ji+1,jj,iku) - zri(ji,jj) )   ! i: 2 
     
    215202               ELSE                        ;   pgrv(ji,jj) = vmask_crs(ji,jj,1) * ( prd(ji,jj+1,ikv) - zrj(ji,jj) )   ! j: 2 
    216203               ENDIF 
    217 # if ! defined key_vectopt_loop 
     204 
    218205            END DO 
    219 # endif 
    220206         END DO 
    221  
    222207 
    223208         CALL crs_lbc_lnk( pgru , 'U', -1. )   ;   CALL crs_lbc_lnk( pgrv , 'V', -1. )   ! Lateral boundary conditions 
     
    225210      END IF 
    226211      ! 
    227       !!ccCALL wrk_dealloc( jpi, jpj,       zri, zrj, zhi, zhj )  
    228       !!ccCALL wrk_dealloc( jpi, jpj, kjpt, zti, zte           )  
    229212      DEALLOCATE( zri , zrj, zte, zhi, zhj, zti) 
    230213      ! 
Note: See TracChangeset for help on using the changeset viewer.