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 8504 for branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceadv_prather.F90 – NEMO

Ignore:
Timestamp:
2017-09-06T17:47:28+02:00 (7 years ago)
Author:
clem
Message:

changes in style - part4 - clarify ice advection routines

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceadv_prather.F90

    r8486 r8504  
    1212   !!   'key_lim3'                                       LIM3 sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!   ice_adv_x     : advection of sea ice on x axis 
    15    !!   ice_adv_y     : advection of sea ice on y axis 
     14   !!   ice_adv_prather     : advection of sea ice using Prather scheme 
    1615   !!---------------------------------------------------------------------- 
    1716   USE dom_oce        ! ocean domain 
    1817   USE ice            ! sea-ice variables 
     18   USE sbc_oce , ONLY : nn_fsbc   ! frequency of sea-ice call 
    1919   ! 
    2020   USE lbclnk         ! lateral boundary condition - MPP exchanges 
     
    2727   PRIVATE 
    2828 
    29    PUBLIC   ice_adv_x   ! called by iceadv 
    30    PUBLIC   ice_adv_y   ! called by iceadv 
     29   PUBLIC   ice_adv_prather   ! called by iceadv 
    3130 
    3231   !! * Substitutions 
     
    3938CONTAINS 
    4039 
    41    SUBROUTINE ice_adv_x( pdf, put , pcrh, psm , ps0 ,   & 
    42       &                  psx, psxx, psy , psyy, psxy ) 
     40   SUBROUTINE ice_adv_prather( kt, pu_ice, pv_ice,  & 
     41      &                        pato_i, pv_i, pv_s, psmv_i, poa_i, pa_i, pa_ip, pv_ip, pe_s, pe_i ) 
    4342      !!---------------------------------------------------------------------- 
    44       !!                **  routine ice_adv_x  ** 
     43      !!                **  routine ice_adv_prather  ** 
    4544      !!   
    4645      !! ** purpose :   Computes and adds the advection trend to sea-ice 
    47       !!              variable on i-axis 
    4846      !! 
    4947      !! ** method  :   Uses Prather second order scheme that advects tracers 
    50       !!              but also theirquadratic forms. The method preserves 
    51       !!              tracer structures by conserving second order moments. 
     48      !!                but also their quadratic forms. The method preserves 
     49      !!                tracer structures by conserving second order moments. 
    5250      !! 
    5351      !! Reference:  Prather, 1986, JGR, 91, D6. 6671-6681. 
    5452      !!---------------------------------------------------------------------- 
     53      INTEGER                     , INTENT(in   ) ::   kt         ! time step 
     54      REAL(wp), DIMENSION(:,:)    , INTENT(in   ) ::   pu_ice     ! ice i-velocity 
     55      REAL(wp), DIMENSION(:,:)    , INTENT(in   ) ::   pv_ice     ! ice j-velocity 
     56      REAL(wp), DIMENSION(:,:)    , INTENT(inout) ::   pato_i     ! open water area 
     57      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pv_i       ! ice volume 
     58      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pv_s       ! snw volume 
     59      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   psmv_i     ! salt content 
     60      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   poa_i      ! age content 
     61      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pa_i       ! ice concentration 
     62      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pa_ip      ! melt pond fraction 
     63      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pv_ip      ! melt pond volume 
     64      REAL(wp), DIMENSION(:,:,:,:), INTENT(inout) ::   pe_s       ! snw heat content 
     65      REAL(wp), DIMENSION(:,:,:,:), INTENT(inout) ::   pe_i       ! ice heat content 
     66      ! 
     67      INTEGER  ::   jk, jl, jt              ! dummy loop indices 
     68      INTEGER  ::   initad                  ! number of sub-timestep for the advection 
     69      REAL(wp) ::   zcfl , zusnit           !   -      - 
     70      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     ::   zarea 
     71      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   ::   z0opw 
     72      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   ::   z0ice, z0snw, z0ai, z0es , z0smi , z0oi 
     73      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   ::   z0ap , z0vp 
     74      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   z0ei 
     75      !!---------------------------------------------------------------------- 
     76      ! 
     77      IF( kt == nit000 .AND. lwp ) THEN 
     78         WRITE(numout,*) 
     79         WRITE(numout,*) 'ice_adv_prather: Prather advection scheme' 
     80         WRITE(numout,*) '~~~~~~~~~~~~~~~' 
     81      ENDIF 
     82      ! 
     83      ALLOCATE( zarea(jpi,jpj)     , z0opw(jpi,jpj, 1 ) ,                                           & 
     84         &      z0ice(jpi,jpj,jpl) , z0snw(jpi,jpj,jpl) , z0ai(jpi,jpj,jpl) , z0es(jpi,jpj,jpl) ,   & 
     85         &      z0smi(jpi,jpj,jpl) , z0oi (jpi,jpj,jpl) , z0ap(jpi,jpj,jpl) , z0vp(jpi,jpj,jpl) ,   & 
     86         &      z0ei (jpi,jpj,nlay_i,jpl)                                                           ) 
     87      ! 
     88      ! --- If ice drift field is too fast, use an appropriate time step for advection (CFL test for stability) --- !         
     89      zcfl  =            MAXVAL( ABS( pu_ice(:,:) ) * rdt_ice * r1_e1u(:,:) ) 
     90      zcfl  = MAX( zcfl, MAXVAL( ABS( pv_ice(:,:) ) * rdt_ice * r1_e2v(:,:) ) ) 
     91      IF( lk_mpp )   CALL mpp_max( zcfl ) 
     92       
     93      IF( zcfl > 0.5 ) THEN   ;   initad = 2   ;   zusnit = 0.5_wp 
     94      ELSE                    ;   initad = 1   ;   zusnit = 1.0_wp 
     95      ENDIF 
     96       
     97      zarea(:,:) = e1e2t(:,:) 
     98      !------------------------- 
     99      ! transported fields                                         
     100      !------------------------- 
     101      z0opw(:,:,1) = pato_i(:,:) * e1e2t(:,:)              ! Open water area  
     102      DO jl = 1, jpl 
     103         z0snw(:,:,jl) = pv_s  (:,:,  jl) * e1e2t(:,:)     ! Snow volume 
     104         z0ice(:,:,jl) = pv_i  (:,:,  jl) * e1e2t(:,:)     ! Ice  volume 
     105         z0ai (:,:,jl) = pa_i  (:,:,  jl) * e1e2t(:,:)     ! Ice area 
     106         z0smi(:,:,jl) = psmv_i(:,:,  jl) * e1e2t(:,:)     ! Salt content 
     107         z0oi (:,:,jl) = poa_i (:,:,  jl) * e1e2t(:,:)     ! Age content 
     108         z0es (:,:,jl) = pe_s  (:,:,1,jl) * e1e2t(:,:)     ! Snow heat content 
     109         DO jk = 1, nlay_i 
     110            z0ei(:,:,jk,jl) = pe_i(:,:,jk,jl) * e1e2t(:,:) ! Ice  heat content 
     111         END DO 
     112         IF ( nn_pnd_scheme > 0 ) THEN 
     113            z0ap(:,:,jl)  = pa_ip(:,:,jl) * e1e2t(:,:)     ! Melt pond fraction 
     114            z0vp(:,:,jl)  = pv_ip(:,:,jl) * e1e2t(:,:)     ! Melt pond volume 
     115         ENDIF 
     116      END DO 
     117 
     118      !                                                    !--------------------------------------------! 
     119      IF( MOD( ( kt - 1) / nn_fsbc , 2 ) == 0 ) THEN       !==  odd ice time step:  adv_x then adv_y  ==! 
     120         !                                                 !--------------------------------------------! 
     121         DO jt = 1, initad 
     122            CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0opw (:,:,1), sxopw(:,:),   &             !--- ice open water area 
     123               &                                      sxxopw(:,:)  , syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
     124            CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0opw (:,:,1), sxopw(:,:),   & 
     125               &                                      sxxopw(:,:)  , syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
     126            DO jl = 1, jpl 
     127               CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0ice (:,:,jl), sxice(:,:,jl),   &    !--- ice volume  --- 
     128                  &                                      sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     129               CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0ice (:,:,jl), sxice(:,:,jl),   & 
     130                  &                                      sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     131               CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0snw (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
     132                  &                                      sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     133               CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0snw (:,:,jl), sxsn (:,:,jl),   & 
     134                  &                                      sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     135               CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0smi (:,:,jl), sxsal(:,:,jl),   &    !--- ice salinity --- 
     136                  &                                      sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl)  ) 
     137               CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0smi (:,:,jl), sxsal(:,:,jl),   & 
     138                  &                                      sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl)  ) 
     139               CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0oi  (:,:,jl), sxage(:,:,jl),   &    !--- ice age      ---      
     140                  &                                      sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl)  ) 
     141               CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0oi  (:,:,jl), sxage(:,:,jl),   & 
     142                  &                                      sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl)  ) 
     143               CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0ai  (:,:,jl), sxa  (:,:,jl),   &    !--- ice concentrations --- 
     144                  &                                      sxxa  (:,:,jl), sya  (:,:,jl), syya  (:,:,jl), sxya  (:,:,jl)  ) 
     145               CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0ai  (:,:,jl), sxa  (:,:,jl),   &  
     146                  &                                      sxxa  (:,:,jl), sya  (:,:,jl), syya  (:,:,jl), sxya  (:,:,jl)  ) 
     147               CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0es  (:,:,jl), sxc0 (:,:,jl),   &    !--- snow heat contents --- 
     148                  &                                      sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl)  ) 
     149               CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0es  (:,:,jl), sxc0 (:,:,jl),   & 
     150                  &                                      sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl)  ) 
     151               DO jk = 1, nlay_i                                                               !--- ice heat contents --- 
     152                  CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0ei(:,:,jk,jl), sxe (:,:,jk,jl),   &  
     153                     &                                      sxxe(:,:,jk,jl), sye (:,:,jk,jl),   & 
     154                     &                                      syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 
     155                  CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0ei(:,:,jk,jl), sxe (:,:,jk,jl),   &  
     156                     &                                      sxxe(:,:,jk,jl), sye (:,:,jk,jl),   & 
     157                     &                                      syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 
     158               END DO 
     159               IF ( nn_pnd_scheme > 0 ) THEN 
     160                  CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0ap  (:,:,jl), sxap (:,:,jl),   &    !--- melt pond fraction -- 
     161                     &                                      sxxap (:,:,jl), syap (:,:,jl), syyap (:,:,jl), sxyap (:,:,jl)  ) 
     162                  CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0ap  (:,:,jl), sxap (:,:,jl),   &  
     163                     &                                      sxxap (:,:,jl), syap (:,:,jl), syyap (:,:,jl), sxyap (:,:,jl)  ) 
     164                  CALL adv_x( zusnit, pu_ice, 1._wp, zarea, z0vp  (:,:,jl), sxvp (:,:,jl),   &    !--- melt pond volume   -- 
     165                     &                                      sxxvp (:,:,jl), syvp (:,:,jl), syyvp (:,:,jl), sxyvp (:,:,jl)  ) 
     166                  CALL adv_y( zusnit, pv_ice, 0._wp, zarea, z0vp  (:,:,jl), sxvp (:,:,jl),   &  
     167                     &                                      sxxvp (:,:,jl), syvp (:,:,jl), syyvp (:,:,jl), sxyvp (:,:,jl)  ) 
     168               ENDIF 
     169            END DO 
     170         END DO 
     171      !                                                    !--------------------------------------------! 
     172      ELSE                                                 !== even ice time step:  adv_y then adv_x  ==! 
     173         !                                                 !--------------------------------------------! 
     174         DO jt = 1, initad 
     175            CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0opw (:,:,1), sxopw(:,:),   &             !--- ice open water area 
     176               &                                      sxxopw(:,:)  , syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
     177            CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0opw (:,:,1), sxopw(:,:),   & 
     178               &                                      sxxopw(:,:)  , syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
     179            DO jl = 1, jpl 
     180               CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0ice (:,:,jl), sxice(:,:,jl),   &    !--- ice volume  --- 
     181                  &                                      sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     182               CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0ice (:,:,jl), sxice(:,:,jl),   & 
     183                  &                                      sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
     184               CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0snw (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
     185                  &                                      sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     186               CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0snw (:,:,jl), sxsn (:,:,jl),   & 
     187                  &                                      sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
     188               CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0smi (:,:,jl), sxsal(:,:,jl),   &    !--- ice salinity --- 
     189                  &                                      sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl)  ) 
     190               CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0smi (:,:,jl), sxsal(:,:,jl),   & 
     191                  &                                      sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl)  ) 
     192               CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0oi  (:,:,jl), sxage(:,:,jl),   &   !--- ice age      --- 
     193                  &                                      sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl)  ) 
     194               CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0oi  (:,:,jl), sxage(:,:,jl),   & 
     195                  &                                      sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl)  ) 
     196               CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0ai  (:,:,jl), sxa  (:,:,jl),   &   !--- ice concentrations --- 
     197                  &                                      sxxa  (:,:,jl), sya  (:,:,jl), syya  (:,:,jl), sxya  (:,:,jl)  ) 
     198               CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0ai  (:,:,jl), sxa  (:,:,jl),   & 
     199                  &                                      sxxa  (:,:,jl), sya  (:,:,jl), syya  (:,:,jl), sxya  (:,:,jl)  ) 
     200               CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0es  (:,:,jl), sxc0 (:,:,jl),   &  !--- snow heat contents --- 
     201                  &                                      sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl)  ) 
     202               CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0es  (:,:,jl), sxc0 (:,:,jl),   & 
     203                  &                                      sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl)  ) 
     204               DO jk = 1, nlay_i                                                             !--- ice heat contents --- 
     205                  CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0ei(:,:,jk,jl), sxe (:,:,jk,jl),   &  
     206                     &                                      sxxe(:,:,jk,jl), sye (:,:,jk,jl),   & 
     207                     &                                      syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 
     208                  CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0ei(:,:,jk,jl), sxe (:,:,jk,jl),   &  
     209                     &                                      sxxe(:,:,jk,jl), sye (:,:,jk,jl),   & 
     210                     &                                      syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 
     211               END DO 
     212               IF ( nn_pnd_scheme > 0 ) THEN 
     213                  CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0ap  (:,:,jl), sxap (:,:,jl),   &   !--- melt pond fraction --- 
     214                     &                                      sxxap (:,:,jl), syap (:,:,jl), syyap (:,:,jl), sxyap (:,:,jl)  ) 
     215                  CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0ap  (:,:,jl), sxap (:,:,jl),   & 
     216                     &                                      sxxap (:,:,jl), syap (:,:,jl), syyap (:,:,jl), sxyap (:,:,jl)  ) 
     217                  CALL adv_y( zusnit, pv_ice, 1._wp, zarea, z0vp  (:,:,jl), sxvp (:,:,jl),   &   !--- melt pond volume   --- 
     218                     &                                      sxxvp (:,:,jl), syvp (:,:,jl), syyvp (:,:,jl), sxyvp (:,:,jl)  ) 
     219                  CALL adv_x( zusnit, pu_ice, 0._wp, zarea, z0vp  (:,:,jl), sxvp (:,:,jl),   & 
     220                     &                                      sxxvp (:,:,jl), syvp (:,:,jl), syyvp (:,:,jl), sxyvp (:,:,jl)  ) 
     221               ENDIF 
     222            END DO 
     223         END DO 
     224      ENDIF 
     225 
     226      !------------------------------------------- 
     227      ! Recover the properties from their contents 
     228      !------------------------------------------- 
     229      pato_i(:,:) = z0opw(:,:,1) * r1_e1e2t(:,:) 
     230      DO jl = 1, jpl 
     231         pv_i  (:,:,  jl) = z0ice(:,:,jl) * r1_e1e2t(:,:) 
     232         pv_s  (:,:,  jl) = z0snw(:,:,jl) * r1_e1e2t(:,:) 
     233         psmv_i(:,:,  jl) = z0smi(:,:,jl) * r1_e1e2t(:,:) 
     234         poa_i (:,:,  jl) = z0oi (:,:,jl) * r1_e1e2t(:,:) 
     235         pa_i  (:,:,  jl) = z0ai (:,:,jl) * r1_e1e2t(:,:) 
     236         pe_s  (:,:,1,jl) = z0es (:,:,jl) * r1_e1e2t(:,:) 
     237         DO jk = 1, nlay_i 
     238            pe_i(:,:,jk,jl) = z0ei(:,:,jk,jl) * r1_e1e2t(:,:) 
     239         END DO 
     240         ! MV MP 2016 
     241         IF ( nn_pnd_scheme > 0 ) THEN 
     242            pa_ip  (:,:,jl)   = z0ap (:,:,jl) * r1_e1e2t(:,:) 
     243            pv_ip  (:,:,jl)   = z0vp (:,:,jl) * r1_e1e2t(:,:) 
     244         ENDIF 
     245         ! END MV MP 2016 
     246      END DO 
     247      ! 
     248      DEALLOCATE( zarea , z0opw , z0ice, z0snw , z0ai , z0es , z0smi , z0oi , z0ap , z0vp , z0ei ) 
     249      ! 
     250   END SUBROUTINE ice_adv_prather 
     251    
     252   SUBROUTINE adv_x( pdf, put , pcrh, psm , ps0 ,   & 
     253      &              psx, psxx, psy , psyy, psxy ) 
     254      !!---------------------------------------------------------------------- 
     255      !!                **  routine adv_x  ** 
     256      !!   
     257      !! ** purpose :   Computes and adds the advection trend to sea-ice 
     258      !!                variable on x axis 
     259      !!---------------------------------------------------------------------- 
    55260      REAL(wp)                    , INTENT(in   ) ::   pdf                ! reduction factor for the time step 
    56       REAL(wp)                    , INTENT(in   ) ::   pcrh               ! call ice_adv_x then ice_adv_y (=1) or the opposite (=0) 
     261      REAL(wp)                    , INTENT(in   ) ::   pcrh               ! call adv_x then adv_y (=1) or the opposite (=0) 
    57262      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   put                ! i-direction ice velocity at U-point [m/s] 
    58263      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   psm                ! area 
     
    209414 
    210415      IF(ln_ctl) THEN 
    211          CALL prt_ctl(tab2d_1=psm  , clinfo1=' ice_adv_x: psm  :', tab2d_2=ps0 , clinfo2=' ps0  : ') 
    212          CALL prt_ctl(tab2d_1=psx  , clinfo1=' ice_adv_x: psx  :', tab2d_2=psxx, clinfo2=' psxx : ') 
    213          CALL prt_ctl(tab2d_1=psy  , clinfo1=' ice_adv_x: psy  :', tab2d_2=psyy, clinfo2=' psyy : ') 
    214          CALL prt_ctl(tab2d_1=psxy , clinfo1=' ice_adv_x: psxy :') 
     416         CALL prt_ctl(tab2d_1=psm  , clinfo1=' adv_x: psm  :', tab2d_2=ps0 , clinfo2=' ps0  : ') 
     417         CALL prt_ctl(tab2d_1=psx  , clinfo1=' adv_x: psx  :', tab2d_2=psxx, clinfo2=' psxx : ') 
     418         CALL prt_ctl(tab2d_1=psy  , clinfo1=' adv_x: psy  :', tab2d_2=psyy, clinfo2=' psyy : ') 
     419         CALL prt_ctl(tab2d_1=psxy , clinfo1=' adv_x: psxy :') 
    215420      ENDIF 
    216421      ! 
    217    END SUBROUTINE ice_adv_x 
    218  
    219  
    220    SUBROUTINE ice_adv_y( pdf, pvt , pcrh, psm , ps0 ,   & 
    221       &                  psx, psxx, psy , psyy, psxy ) 
     422   END SUBROUTINE adv_x 
     423 
     424 
     425   SUBROUTINE adv_y( pdf, pvt , pcrh, psm , ps0 ,   & 
     426      &              psx, psxx, psy , psyy, psxy ) 
    222427      !!--------------------------------------------------------------------- 
    223       !!                **  routine ice_adv_y  ** 
     428      !!                **  routine adv_y  ** 
    224429      !!             
    225430      !! ** purpose :   Computes and adds the advection trend to sea-ice  
    226       !!              variable on y axis 
    227       !! 
    228       !! ** method  :   Uses Prather second order scheme that advects tracers 
    229       !!              but also their quadratic forms. The method preserves  
    230       !!              tracer structures by conserving second order moments. 
    231       !!  
    232       !! Reference:  Prather, 1986, JGR, 91, D6. 6671-6681. 
     431      !!                variable on y axis 
    233432      !!--------------------------------------------------------------------- 
    234433      REAL(wp)                    , INTENT(in   ) ::   pdf                ! reduction factor for the time step 
    235       REAL(wp)                    , INTENT(in   ) ::   pcrh               ! call ice_adv_x then ice_adv_y (=1) or the opposite (=0) 
     434      REAL(wp)                    , INTENT(in   ) ::   pcrh               ! call adv_x then adv_y (=1) or the opposite (=0) 
    236435      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   pvt                ! j-direction ice velocity at V-point [m/s] 
    237436      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   psm                ! area 
     
    389588 
    390589      IF(ln_ctl) THEN 
    391          CALL prt_ctl(tab2d_1=psm  , clinfo1=' ice_adv_y: psm  :', tab2d_2=ps0 , clinfo2=' ps0  : ') 
    392          CALL prt_ctl(tab2d_1=psx  , clinfo1=' ice_adv_y: psx  :', tab2d_2=psxx, clinfo2=' psxx : ') 
    393          CALL prt_ctl(tab2d_1=psy  , clinfo1=' ice_adv_y: psy  :', tab2d_2=psyy, clinfo2=' psyy : ') 
    394          CALL prt_ctl(tab2d_1=psxy , clinfo1=' ice_adv_y: psxy :') 
     590         CALL prt_ctl(tab2d_1=psm  , clinfo1=' adv_y: psm  :', tab2d_2=ps0 , clinfo2=' ps0  : ') 
     591         CALL prt_ctl(tab2d_1=psx  , clinfo1=' adv_y: psx  :', tab2d_2=psxx, clinfo2=' psxx : ') 
     592         CALL prt_ctl(tab2d_1=psy  , clinfo1=' adv_y: psy  :', tab2d_2=psyy, clinfo2=' psyy : ') 
     593         CALL prt_ctl(tab2d_1=psxy , clinfo1=' adv_y: psxy :') 
    395594      ENDIF 
    396595      ! 
    397    END SUBROUTINE ice_adv_y 
     596   END SUBROUTINE adv_y 
    398597 
    399598#else 
Note: See TracChangeset for help on using the changeset viewer.