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 14072 for NEMO/trunk/src/ICE/icedyn_adv_pra.F90 – NEMO

Ignore:
Timestamp:
2020-12-04T08:48:38+01:00 (3 years ago)
Author:
laurent
Message:

Merging branch "2020/dev_r13648_ASINTER-04_laurent_bulk_ice", ticket #2369

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/ICE/icedyn_adv_pra.F90

    r14005 r14072  
    1 MODULE icedyn_adv_pra  
     1MODULE icedyn_adv_pra 
    22   !!====================================================================== 
    33   !!                       ***  MODULE icedyn_adv_pra   *** 
     
    3535 
    3636   ! Moments for advection 
    37    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxice, syice, sxxice, syyice, sxyice   ! ice thickness  
     37   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxice, syice, sxxice, syyice, sxyice   ! ice thickness 
    3838   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxsn , sysn , sxxsn , syysn , sxysn    ! snow thickness 
    3939   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxa  , sya  , sxxa  , syya  , sxya     ! ice concentration 
     
    5959      !!---------------------------------------------------------------------- 
    6060      !!                **  routine ice_dyn_adv_pra  ** 
    61       !!   
     61      !! 
    6262      !! ** purpose :   Computes and adds the advection trend to sea-ice 
    6363      !! 
     
    101101      REAL(wp), DIMENSION(jpi,jpj,nlay_i,jpl) ::   z0ei 
    102102      !! diagnostics 
    103       REAL(wp), DIMENSION(jpi,jpj)            ::   zdiag_adv_mass, zdiag_adv_salt, zdiag_adv_heat       
     103      REAL(wp), DIMENSION(jpi,jpj)            ::   zdiag_adv_mass, zdiag_adv_salt, zdiag_adv_heat 
    104104      !!---------------------------------------------------------------------- 
    105105      ! 
     
    127127         ELSEWHERE                      ; ze_s(:,:,jk,:) = 0._wp 
    128128         END WHERE 
    129       END DO    
     129      END DO 
    130130      CALL icemax4D( ze_i , zei_max ) 
    131131      CALL icemax4D( ze_s , zes_max ) 
     
    139139      zcflnow(1) =                  MAXVAL( ABS( pu_ice(:,:) ) * rDt_ice * r1_e1u(:,:) ) 
    140140      zcflnow(1) = MAX( zcflnow(1), MAXVAL( ABS( pv_ice(:,:) ) * rDt_ice * r1_e2v(:,:) ) ) 
    141        
     141 
    142142      ! non-blocking global communication send zcflnow and receive zcflprv 
    143143      CALL mpp_delay_max( 'icedyn_adv_pra', 'cflice', zcflnow(:), zcflprv(:), kt == nitend - nn_fsbc + 1 ) 
     
    148148      zdt = rDt_ice / REAL(icycle) 
    149149      z1_dt = 1._wp / zdt 
    150        
     150 
    151151      ! --- transport --- ! 
    152152      zudy(:,:) = pu_ice(:,:) * e2u(:,:) 
     
    164164         ! record at_i before advection (for open water) 
    165165         zati1(:,:) = SUM( pa_i(:,:,:), dim=3 ) 
    166           
    167          ! --- transported fields --- !                                         
     166 
     167         ! --- transported fields --- ! 
    168168         DO jl = 1, jpl 
    169169            zarea(:,:,jl) = e1e2t(:,:) 
     
    209209            END DO 
    210210            DO jk = 1, nlay_i                                                                           !--- ice heat content 
    211                CALL adv_x( zdt, zudy, 1._wp, zarea, z0ei(:,:,jk,:), sxe(:,:,jk,:),   &  
     211               CALL adv_x( zdt, zudy, 1._wp, zarea, z0ei(:,:,jk,:), sxe(:,:,jk,:),   & 
    212212                  &                                 sxxe(:,:,jk,:), sye(:,:,jk,:), syye(:,:,jk,:), sxye(:,:,jk,:) ) 
    213                CALL adv_y( zdt, zvdx, 0._wp, zarea, z0ei(:,:,jk,:), sxe(:,:,jk,:),   &  
     213               CALL adv_y( zdt, zvdx, 0._wp, zarea, z0ei(:,:,jk,:), sxe(:,:,jk,:),   & 
    214214                  &                                 sxxe(:,:,jk,:), sye(:,:,jk,:), syye(:,:,jk,:), sxye(:,:,jk,:) ) 
    215215            END DO 
     
    217217            IF ( ln_pnd_LEV .OR. ln_pnd_TOPO ) THEN 
    218218               CALL adv_x( zdt , zudy , 1._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap )    !--- melt pond fraction 
    219                CALL adv_y( zdt , zvdx , 0._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap )  
     219               CALL adv_y( zdt , zvdx , 0._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap ) 
    220220               CALL adv_x( zdt , zudy , 1._wp , zarea , z0vp , sxvp , sxxvp , syvp , syyvp , sxyvp )    !--- melt pond volume 
    221                CALL adv_y( zdt , zvdx , 0._wp , zarea , z0vp , sxvp , sxxvp , syvp , syyvp , sxyvp )  
     221               CALL adv_y( zdt , zvdx , 0._wp , zarea , z0vp , sxvp , sxxvp , syvp , syyvp , sxyvp ) 
    222222               IF ( ln_pnd_lids ) THEN 
    223223                  CALL adv_x( zdt , zudy , 1._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl ) !--- melt pond lid volume 
    224                   CALL adv_y( zdt , zvdx , 0._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl )  
     224                  CALL adv_y( zdt , zvdx , 0._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl ) 
    225225               ENDIF 
    226226            ENDIF 
     
    245245            END DO 
    246246            DO jk = 1, nlay_i                                                                           !--- ice heat content 
    247                CALL adv_y( zdt, zvdx, 1._wp, zarea, z0ei(:,:,jk,:), sxe(:,:,jk,:),   &  
     247               CALL adv_y( zdt, zvdx, 1._wp, zarea, z0ei(:,:,jk,:), sxe(:,:,jk,:),   & 
    248248                  &                                 sxxe(:,:,jk,:), sye(:,:,jk,:), syye(:,:,jk,:), sxye(:,:,jk,:) ) 
    249                CALL adv_x( zdt, zudy, 0._wp, zarea, z0ei(:,:,jk,:), sxe(:,:,jk,:),   &  
     249               CALL adv_x( zdt, zudy, 0._wp, zarea, z0ei(:,:,jk,:), sxe(:,:,jk,:),   & 
    250250                  &                                 sxxe(:,:,jk,:), sye(:,:,jk,:), syye(:,:,jk,:), sxye(:,:,jk,:) ) 
    251251            END DO 
     
    257257               IF ( ln_pnd_lids ) THEN 
    258258                  CALL adv_y( zdt , zvdx , 1._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl ) !--- melt pond lid volume 
    259                   CALL adv_x( zdt , zudy , 0._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl )  
     259                  CALL adv_x( zdt , zudy , 0._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl ) 
    260260               ENDIF 
    261261            ENDIF 
    262262            ! 
    263263         ENDIF 
    264           
     264 
    265265         ! --- Lateral boundary conditions --- ! 
    266266         !     caution: for gradients (sx and sy) the sign changes 
     
    276276            &                                , sxxage, 'T', 1._wp, syyage, 'T',  1._wp, sxyage, 'T',  1._wp  ) 
    277277         CALL lbc_lnk_multi( 'icedyn_adv_pra', z0es  , 'T', 1._wp, sxc0  , 'T', -1._wp, syc0  , 'T', -1._wp  & ! snw enthalpy 
    278             &                                , sxxc0 , 'T', 1._wp, syyc0 , 'T',  1._wp, sxyc0 , 'T',  1._wp  )  
     278            &                                , sxxc0 , 'T', 1._wp, syyc0 , 'T',  1._wp, sxyc0 , 'T',  1._wp  ) 
    279279         CALL lbc_lnk_multi( 'icedyn_adv_pra', z0ei  , 'T', 1._wp, sxe   , 'T', -1._wp, sye   , 'T', -1._wp  & ! ice enthalpy 
    280280            &                                , sxxe  , 'T', 1._wp, syye  , 'T',  1._wp, sxye  , 'T',  1._wp  ) 
     
    283283               &                                , sxxap, 'T', 1._wp, syyap, 'T',  1._wp, sxyap, 'T',  1._wp  & 
    284284               &                                , z0vp , 'T', 1._wp, sxvp , 'T', -1._wp, syvp , 'T', -1._wp  & ! melt pond volume 
    285                &                                , sxxvp, 'T', 1._wp, syyvp, 'T',  1._wp, sxyvp, 'T',  1._wp  )  
     285               &                                , sxxvp, 'T', 1._wp, syyvp, 'T',  1._wp, sxyvp, 'T',  1._wp  ) 
    286286            IF ( ln_pnd_lids ) THEN 
    287287               CALL lbc_lnk_multi( 'icedyn_adv_pra', z0vl ,'T', 1._wp, sxvl ,'T', -1._wp, syvl ,'T', -1._wp  & ! melt pond lid volume 
    288                   &                                , sxxvl,'T', 1._wp, syyvl,'T',  1._wp, sxyvl,'T',  1._wp  )  
     288                  &                                , sxxvl,'T', 1._wp, syyvl,'T',  1._wp, sxyvl,'T',  1._wp  ) 
    289289            ENDIF 
    290290         ENDIF 
     
    348348      ! 
    349349   END SUBROUTINE ice_dyn_adv_pra 
    350     
    351     
     350 
     351 
    352352   SUBROUTINE adv_x( pdt, put , pcrh, psm , ps0 ,   & 
    353353      &              psx, psxx, psy , psyy, psxy ) 
    354354      !!---------------------------------------------------------------------- 
    355355      !!                **  routine adv_x  ** 
    356       !!   
     356      !! 
    357357      !! ** purpose :   Computes and adds the advection trend to sea-ice 
    358358      !!                variable on x axis 
     
    363363      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   psm                ! area 
    364364      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   ps0                ! field to be advected 
    365       REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   psx , psy          ! 1st moments  
     365      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   psx , psy          ! 1st moments 
    366366      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   psxx, psyy, psxy   ! 2nd moments 
    367       !!  
     367      !! 
    368368      INTEGER  ::   ji, jj, jl, jcat                     ! dummy loop indices 
    369369      INTEGER  ::   jj0                                  ! dummy loop indices 
     
    386386      DO jl = 1, jcat   ! loop on categories 
    387387         ! 
    388          ! Limitation of moments.                                            
     388         ! Limitation of moments. 
    389389         DO jj = Njs0 - jj0, Nje0 + jj0 
    390              
     390 
    391391            DO ji = Nis0 - 1, Nie0 + 1 
    392392 
     
    399399               zpsxy = psxy(ji,jj,jl) 
    400400 
    401                !  Initialize volumes of boxes  (=area if adv_x first called, =psm otherwise)                                      
     401               !  Initialize volumes of boxes  (=area if adv_x first called, =psm otherwise) 
    402402               zpsm = MAX( pcrh * e1e2t(ji,jj) + ( 1.0 - pcrh ) * zpsm , epsi20 ) 
    403403               ! 
     
    408408               rswitch = ( 1.0 - MAX( 0._wp, SIGN( 1._wp, -zslpmax) ) ) * tmask(ji,jj,1)   ! Case of empty boxes & Apply mask 
    409409 
    410                zps0  = zslpmax   
     410               zps0  = zslpmax 
    411411               zpsx  = zs1new  * rswitch 
    412412               zpsxx = zs2new  * rswitch 
     
    415415               zpsxy = MIN( zslpmax, MAX( -zslpmax, zpsxy ) ) * rswitch 
    416416 
    417                !  Calculate fluxes and moments between boxes i<-->i+1               
    418                !                                !  Flux from i to i+1 WHEN u GT 0  
     417               !  Calculate fluxes and moments between boxes i<-->i+1 
     418               !                                !  Flux from i to i+1 WHEN u GT 0 
    419419               zbet(ji,jj)  =  MAX( 0._wp, SIGN( 1._wp, put(ji,jj) ) ) 
    420420               zalf         =  MAX( 0._wp, put(ji,jj) ) * pdt / zpsm 
     
    423423               zalf1q       =  zalf1 * zalf1 
    424424               ! 
    425                zfm (ji,jj)  =  zalf  *   zpsm  
     425               zfm (ji,jj)  =  zalf  *   zpsm 
    426426               zf0 (ji,jj)  =  zalf  * ( zps0  + zalf1 * ( zpsx + (zalf1 - zalf) * zpsxx ) ) 
    427427               zfx (ji,jj)  =  zalfq * ( zpsx  + 3.0 * zalf1 * zpsxx ) 
     
    441441               ! 
    442442               psm (ji,jj,jl) = zpsm ! optimization 
    443                ps0 (ji,jj,jl) = zps0  
    444                psx (ji,jj,jl) = zpsx  
     443               ps0 (ji,jj,jl) = zps0 
     444               psx (ji,jj,jl) = zpsx 
    445445               psxx(ji,jj,jl) = zpsxx 
    446                psy (ji,jj,jl) = zpsy  
     446               psy (ji,jj,jl) = zpsy 
    447447               psyy(ji,jj,jl) = zpsyy 
    448448               psxy(ji,jj,jl) = zpsxy 
    449449               ! 
    450450            END DO 
    451              
     451 
    452452            DO ji = Nis0 - 1, Nie0 
    453453               !                                !  Flux from i+1 to i when u LT 0. 
    454                zalf          = MAX( 0._wp, -put(ji,jj) ) * pdt / psm(ji+1,jj,jl)  
     454               zalf          = MAX( 0._wp, -put(ji,jj) ) * pdt / psm(ji+1,jj,jl) 
    455455               zalg  (ji,jj) = zalf 
    456456               zalfq         = zalf * zalf 
     
    491491               zpsxy = zalg1q(ji-1,jj) * zpsxy 
    492492 
    493                !   Put the temporary moments into appropriate neighboring boxes.     
     493               !   Put the temporary moments into appropriate neighboring boxes. 
    494494               !                                !   Flux from i to i+1 IF u GT 0. 
    495495               zbt   =       zbet(ji-1,jj) 
     
    508508                  &            + 3.0 * (- zalf1*zfy(ji-1,jj)  + zalf * zpsy ) )  & 
    509509                  &            + zbt1 * zpsxy 
    510                zpsy  =  zbt  * ( zpsy  + zfy (ji-1,jj) ) + zbt1 * zpsy  
     510               zpsy  =  zbt  * ( zpsy  + zfy (ji-1,jj) ) + zbt1 * zpsy 
    511511               zpsyy =  zbt  * ( zpsyy + zfyy(ji-1,jj) ) + zbt1 * zpsyy 
    512512 
     
    530530               ! 
    531531               psm (ji,jj,jl) = zpsm  ! optimization 
    532                ps0 (ji,jj,jl) = zps0  
    533                psx (ji,jj,jl) = zpsx  
     532               ps0 (ji,jj,jl) = zps0 
     533               psx (ji,jj,jl) = zpsx 
    534534               psxx(ji,jj,jl) = zpsxx 
    535                psy (ji,jj,jl) = zpsy  
     535               psy (ji,jj,jl) = zpsy 
    536536               psyy(ji,jj,jl) = zpsyy 
    537537               psxy(ji,jj,jl) = zpsxy 
     
    541541         ! 
    542542      END DO 
    543       !       
     543      ! 
    544544   END SUBROUTINE adv_x 
    545545 
     
    549549      !!--------------------------------------------------------------------- 
    550550      !!                **  routine adv_y  ** 
    551       !!             
    552       !! ** purpose :   Computes and adds the advection trend to sea-ice  
     551      !! 
     552      !! ** purpose :   Computes and adds the advection trend to sea-ice 
    553553      !!                variable on y axis 
    554554      !!--------------------------------------------------------------------- 
     
    558558      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   psm                ! area 
    559559      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   ps0                ! field to be advected 
    560       REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   psx , psy          ! 1st moments  
     560      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   psx , psy          ! 1st moments 
    561561      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   psxx, psyy, psxy   ! 2nd moments 
    562562      !! 
     
    578578      ! 
    579579      jcat = SIZE( ps0 , 3 )   ! size of input arrays 
    580       !       
     580      ! 
    581581      DO jl = 1, jcat   ! loop on categories 
    582582         ! 
     
    601601            rswitch = ( 1.0 - MAX( 0._wp, SIGN( 1._wp, -zslpmax) ) ) * tmask(ji,jj,1)   ! Case of empty boxes & Apply mask 
    602602            ! 
    603             zps0  = zslpmax   
     603            zps0  = zslpmax 
    604604            zpsx  = zpsx  * rswitch 
    605605            zpsxx = zpsxx * rswitch 
     
    608608            zpsxy = MIN( zslpmax, MAX( -zslpmax, zpsxy ) ) * rswitch 
    609609 
    610             !  Calculate fluxes and moments between boxes j<-->j+1               
    611             !                                !  Flux from j to j+1 WHEN v GT 0    
     610            !  Calculate fluxes and moments between boxes j<-->j+1 
     611            !                                !  Flux from j to j+1 WHEN v GT 0 
    612612            zbet(ji,jj)  =  MAX( 0._wp, SIGN( 1._wp, pvt(ji,jj) ) ) 
    613613            zalf         =  MAX( 0._wp, pvt(ji,jj) ) * pdt / zpsm 
     
    617617            ! 
    618618            zfm (ji,jj)  =  zalf  * zpsm 
    619             zf0 (ji,jj)  =  zalf  * ( zps0 + zalf1 * ( zpsy  + (zalf1-zalf) * zpsyy ) )  
     619            zf0 (ji,jj)  =  zalf  * ( zps0 + zalf1 * ( zpsy  + (zalf1-zalf) * zpsyy ) ) 
    620620            zfy (ji,jj)  =  zalfq *( zpsy + 3.0*zalf1*zpsyy ) 
    621621            zfyy(ji,jj)  =  zalf  * zalfq * zpsyy 
     
    634634            ! 
    635635            psm (ji,jj,jl) = zpsm ! optimization 
    636             ps0 (ji,jj,jl) = zps0  
    637             psx (ji,jj,jl) = zpsx  
     636            ps0 (ji,jj,jl) = zps0 
     637            psx (ji,jj,jl) = zpsx 
    638638            psxx(ji,jj,jl) = zpsxx 
    639             psy (ji,jj,jl) = zpsy  
     639            psy (ji,jj,jl) = zpsy 
    640640            psyy(ji,jj,jl) = zpsyy 
    641641            psxy(ji,jj,jl) = zpsxy 
     
    644644         DO_2D( 1, 0, ji0, ji0 ) 
    645645            !                                !  Flux from j+1 to j when v LT 0. 
    646             zalf          = MAX( 0._wp, -pvt(ji,jj) ) * pdt / psm(ji,jj+1,jl)  
     646            zalf          = MAX( 0._wp, -pvt(ji,jj) ) * pdt / psm(ji,jj+1,jl) 
    647647            zalg  (ji,jj) = zalf 
    648648            zalfq         = zalf * zalf 
     
    683683            zpsxy = zalg1q(ji,jj-1) * zpsxy 
    684684 
    685             !   Put the temporary moments into appropriate neighboring boxes.     
     685            !   Put the temporary moments into appropriate neighboring boxes. 
    686686            !                                !   Flux from j to j+1 IF v GT 0. 
    687687            zbt   =       zbet(ji,jj-1) 
    688688            zbt1  = 1.0 - zbet(ji,jj-1) 
    689             zpsm  = zbt * ( zpsm + zfm(ji,jj-1) ) + zbt1 * zpsm  
    690             zalf  = zbt * zfm(ji,jj-1) / zpsm  
     689            zpsm  = zbt * ( zpsm + zfm(ji,jj-1) ) + zbt1 * zpsm 
     690            zalf  = zbt * zfm(ji,jj-1) / zpsm 
    691691            zalf1 = 1.0 - zalf 
    692692            ztemp = zalf * zps0 - zalf1 * zf0(ji,jj-1) 
     
    694694            zps0  =   zbt  * ( zps0 + zf0(ji,jj-1) ) + zbt1 * zps0 
    695695            zpsy  =   zbt  * ( zalf * zfy(ji,jj-1) + zalf1 * zpsy + 3.0 * ztemp )  & 
    696                &             + zbt1 * zpsy   
     696               &             + zbt1 * zpsy 
    697697            zpsyy =   zbt  * ( zalf * zalf * zfyy(ji,jj-1) + zalf1 * zalf1 * zpsyy                           & 
    698                &             + 5.0 * ( zalf * zalf1 * ( zpsy - zfy(ji,jj-1) ) - ( zalf1 - zalf ) * ztemp ) ) &  
     698               &             + 5.0 * ( zalf * zalf1 * ( zpsy - zfy(ji,jj-1) ) - ( zalf1 - zalf ) * ztemp ) ) & 
    699699               &             + zbt1 * zpsyy 
    700700            zpsxy =   zbt  * ( zalf * zfxy(ji,jj-1) + zalf1 * zpsxy             & 
    701701               &             + 3.0 * (- zalf1 * zfx(ji,jj-1) + zalf * zpsx ) )  & 
    702702               &             + zbt1 * zpsxy 
    703             zpsx  =   zbt * ( zpsx  + zfx (ji,jj-1) ) + zbt1 * zpsx  
     703            zpsx  =   zbt * ( zpsx  + zfx (ji,jj-1) ) + zbt1 * zpsx 
    704704            zpsxx =   zbt * ( zpsxx + zfxx(ji,jj-1) ) + zbt1 * zpsxx 
    705705 
     
    723723            ! 
    724724            psm (ji,jj,jl) = zpsm ! optimization 
    725             ps0 (ji,jj,jl) = zps0  
    726             psx (ji,jj,jl) = zpsx  
     725            ps0 (ji,jj,jl) = zps0 
     726            psx (ji,jj,jl) = zpsx 
    727727            psxx(ji,jj,jl) = zpsxx 
    728             psy (ji,jj,jl) = zpsy  
     728            psy (ji,jj,jl) = zpsy 
    729729            psyy(ji,jj,jl) = zpsyy 
    730730            psxy(ji,jj,jl) = zpsxy 
     
    796796                  pe_s(ji,jj,1:nlay_s,jl) = pe_s(ji,jj,1:nlay_s,jl) * zfra 
    797797                  pv_s(ji,jj,jl)          = pa_i(ji,jj,jl) * phs_max(ji,jj,jl) 
    798                ENDIF            
    799                !                   
     798               ENDIF 
     799               ! 
    800800               !                               ! -- check s_i -- ! 
    801801               ! if s_i is larger than the surrounding 9 pts => put salt excess in the ocean 
     
    809809            ENDIF 
    810810         END_2D 
    811       END DO  
     811      END DO 
    812812      ! 
    813813      !                                           ! -- check e_i/v_i -- ! 
     
    899899      !!                  ***  ROUTINE adv_pra_init  *** 
    900900      !! 
    901       !! ** Purpose :   allocate and initialize arrays for Prather advection  
     901      !! ** Purpose :   allocate and initialize arrays for Prather advection 
    902902      !!------------------------------------------------------------------- 
    903903      INTEGER ::   ierr 
     
    932932      !!--------------------------------------------------------------------- 
    933933      !!                   ***  ROUTINE adv_pra_rst  *** 
    934       !!                      
     934      !! 
    935935      !! ** Purpose :   Read or write file in restart file 
    936936      !! 
     
    991991            DO jk = 1, nlay_s 
    992992               WRITE(zchar1,'(I2.2)') jk 
    993                znam = 'sxc0'//'_l'//zchar1   
     993               znam = 'sxc0'//'_l'//zchar1 
    994994               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp )   ;   sxc0 (:,:,jk,:) = z3d(:,:,:) 
    995                znam = 'syc0'//'_l'//zchar1   
     995               znam = 'syc0'//'_l'//zchar1 
    996996               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp )   ;   syc0 (:,:,jk,:) = z3d(:,:,:) 
    997                znam = 'sxxc0'//'_l'//zchar1  
     997               znam = 'sxxc0'//'_l'//zchar1 
    998998               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   sxxc0(:,:,jk,:) = z3d(:,:,:) 
    999                znam = 'syyc0'//'_l'//zchar1  
     999               znam = 'syyc0'//'_l'//zchar1 
    10001000               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   syyc0(:,:,jk,:) = z3d(:,:,:) 
    1001                znam = 'sxyc0'//'_l'//zchar1  
     1001               znam = 'sxyc0'//'_l'//zchar1 
    10021002               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   sxyc0(:,:,jk,:) = z3d(:,:,:) 
    10031003            END DO 
     
    10051005            DO jk = 1, nlay_i 
    10061006               WRITE(zchar1,'(I2.2)') jk 
    1007                znam = 'sxe'//'_l'//zchar1    
     1007               znam = 'sxe'//'_l'//zchar1 
    10081008               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp )   ;   sxe (:,:,jk,:) = z3d(:,:,:) 
    1009                znam = 'sye'//'_l'//zchar1    
     1009               znam = 'sye'//'_l'//zchar1 
    10101010               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp )   ;   sye (:,:,jk,:) = z3d(:,:,:) 
    1011                znam = 'sxxe'//'_l'//zchar1   
     1011               znam = 'sxxe'//'_l'//zchar1 
    10121012               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   sxxe(:,:,jk,:) = z3d(:,:,:) 
    1013                znam = 'syye'//'_l'//zchar1   
     1013               znam = 'syye'//'_l'//zchar1 
    10141014               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   syye(:,:,jk,:) = z3d(:,:,:) 
    1015                znam = 'sxye'//'_l'//zchar1   
     1015               znam = 'sxye'//'_l'//zchar1 
    10161016               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   sxye(:,:,jk,:) = z3d(:,:,:) 
    10171017            END DO 
     
    11651165   SUBROUTINE icemax3D( pice , pmax ) 
    11661166      !!--------------------------------------------------------------------- 
    1167       !!                   ***  ROUTINE icemax3D ***                      
     1167      !!                   ***  ROUTINE icemax3D *** 
    11681168      !! ** Purpose :  compute the max of the 9 points around 
    11691169      !!---------------------------------------------------------------------- 
     
    11741174      !!---------------------------------------------------------------------- 
    11751175      DO jl = 1, jpl 
    1176          DO jj = Njs0-1, Nje0+1     
     1176         DO jj = Njs0-1, Nje0+1 
    11771177            DO ji = Nis0, Nie0 
    11781178               zmax(ji,jj) = MAX( epsi20, pice(ji,jj,jl), pice(ji-1,jj,jl), pice(ji+1,jj,jl) ) 
    11791179            END DO 
    11801180         END DO 
    1181          DO jj = Njs0, Nje0     
     1181         DO jj = Njs0, Nje0 
    11821182            DO ji = Nis0, Nie0 
    11831183               pmax(ji,jj,jl) = MAX( epsi20, zmax(ji,jj), zmax(ji,jj-1), zmax(ji,jj+1) ) 
     
    11891189   SUBROUTINE icemax4D( pice , pmax ) 
    11901190      !!--------------------------------------------------------------------- 
    1191       !!                   ***  ROUTINE icemax4D ***                      
     1191      !!                   ***  ROUTINE icemax4D *** 
    11921192      !! ** Purpose :  compute the max of the 9 points around 
    11931193      !!---------------------------------------------------------------------- 
     
    12001200      DO jl = 1, jpl 
    12011201         DO jk = 1, jlay 
    1202             DO jj = Njs0-1, Nje0+1     
     1202            DO jj = Njs0-1, Nje0+1 
    12031203               DO ji = Nis0, Nie0 
    12041204                  zmax(ji,jj) = MAX( epsi20, pice(ji,jj,jk,jl), pice(ji-1,jj,jk,jl), pice(ji+1,jj,jk,jl) ) 
    12051205               END DO 
    12061206            END DO 
    1207             DO jj = Njs0, Nje0     
     1207            DO jj = Njs0, Nje0 
    12081208               DO ji = Nis0, Nie0 
    12091209                  pmax(ji,jj,jk,jl) = MAX( epsi20, zmax(ji,jj), zmax(ji,jj-1), zmax(ji,jj+1) ) 
Note: See TracChangeset for help on using the changeset viewer.