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 13466 for NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn_adv_pra.F90 – NEMO

Ignore:
Timestamp:
2020-09-15T09:27:47+02:00 (4 years ago)
Author:
smasson
Message:

r4_trunk: merge r4 13280:13310, see #2523

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/temporary_r4_trunk/src/ICE/icedyn_adv_pra.F90

    r12197 r13466  
    4444   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxap , syap , sxxap , syyap , sxyap    ! melt pond fraction 
    4545   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxvp , syvp , sxxvp , syyvp , sxyvp    ! melt pond volume 
     46   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxvl , syvl , sxxvl , syyvl , sxyvl    ! melt pond lid volume 
    4647 
    4748   !! * Substitutions 
     
    5556 
    5657   SUBROUTINE ice_dyn_adv_pra(         kt, pu_ice, pv_ice, ph_i, ph_s, ph_ip,  & 
    57       &                        pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, pe_s, pe_i ) 
     58      &                        pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, pv_il, pe_s, pe_i ) 
    5859      !!---------------------------------------------------------------------- 
    5960      !!                **  routine ice_dyn_adv_pra  ** 
     
    8182      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pa_ip      ! melt pond fraction 
    8283      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pv_ip      ! melt pond volume 
     84      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pv_il      ! melt pond lid thickness 
    8385      REAL(wp), DIMENSION(:,:,:,:), INTENT(inout) ::   pe_s       ! snw heat content 
    8486      REAL(wp), DIMENSION(:,:,:,:), INTENT(inout) ::   pe_i       ! ice heat content 
    8587      ! 
    86       INTEGER  ::   ji,jj, jk, jl, jt       ! dummy loop indices 
     88      INTEGER  ::   ji, jj, jk, jl, jt      ! dummy loop indices 
    8789      INTEGER  ::   icycle                  ! number of sub-timestep for the advection 
    8890      REAL(wp) ::   zdt                     !   -      - 
     
    9092      REAL(wp), DIMENSION(jpi,jpj)            ::   zati1, zati2 
    9193      REAL(wp), DIMENSION(jpi,jpj)            ::   zudy, zvdx 
    92       REAL(wp), DIMENSION(jpi,jpj,jpl)        ::   zhi_max, zhs_max, zhip_max 
     94      REAL(wp), DIMENSION(jpi,jpj,jpl)        ::   zhi_max, zhs_max, zhip_max, zs_i, zsi_max 
     95      REAL(wp), DIMENSION(jpi,jpj,nlay_i,jpl) ::   ze_i, zei_max 
     96      REAL(wp), DIMENSION(jpi,jpj,nlay_s,jpl) ::   ze_s, zes_max 
    9397      REAL(wp), DIMENSION(jpi,jpj,jpl)        ::   zarea 
    9498      REAL(wp), DIMENSION(jpi,jpj,jpl)        ::   z0ice, z0snw, z0ai, z0smi, z0oi 
    95       REAL(wp), DIMENSION(jpi,jpj,jpl)        ::   z0ap , z0vp 
     99      REAL(wp), DIMENSION(jpi,jpj,jpl)        ::   z0ap , z0vp, z0vl 
    96100      REAL(wp), DIMENSION(jpi,jpj,nlay_s,jpl) ::   z0es 
    97101      REAL(wp), DIMENSION(jpi,jpj,nlay_i,jpl) ::   z0ei 
     
    100104      IF( kt == nit000 .AND. lwp )   WRITE(numout,*) '-- ice_dyn_adv_pra: Prather advection scheme' 
    101105      ! 
    102       ! --- Record max of the surrounding 9-pts ice thick. (for call Hbig) --- ! 
     106      ! --- Record max of the surrounding 9-pts (for call Hbig) --- ! 
     107      ! thickness and salinity 
     108      WHERE( pv_i(:,:,:) >= epsi10 ) ; zs_i(:,:,:) = psv_i(:,:,:) / pv_i(:,:,:) 
     109      ELSEWHERE                      ; zs_i(:,:,:) = 0._wp 
     110      END WHERE 
    103111      DO jl = 1, jpl 
    104112         DO jj = 2, jpjm1 
     
    116124                  &                                               ph_s (ji+1,jj+1,jl), ph_s (ji-1,jj-1,jl), & 
    117125                  &                                               ph_s (ji+1,jj-1,jl), ph_s (ji-1,jj+1,jl) ) 
     126               zsi_max (ji,jj,jl) = MAX( epsi20, zs_i (ji,jj,jl), zs_i (ji+1,jj  ,jl), zs_i (ji  ,jj+1,jl), & 
     127                  &                                               zs_i (ji-1,jj  ,jl), zs_i (ji  ,jj-1,jl), & 
     128                  &                                               zs_i (ji+1,jj+1,jl), zs_i (ji-1,jj-1,jl), & 
     129                  &                                               zs_i (ji+1,jj-1,jl), zs_i (ji-1,jj+1,jl) ) 
    118130            END DO 
    119131         END DO 
    120132      END DO 
    121       CALL lbc_lnk_multi( 'icedyn_adv_pra', zhi_max, 'T', 1., zhs_max, 'T', 1., zhip_max, 'T', 1. ) 
     133      CALL lbc_lnk_multi( 'icedyn_adv_pra', zhi_max, 'T', 1., zhs_max, 'T', 1., zhip_max, 'T', 1., zsi_max, 'T', 1. ) 
     134      ! 
     135      ! enthalpies 
     136      DO jk = 1, nlay_i 
     137         WHERE( pv_i(:,:,:) >= epsi10 ) ; ze_i(:,:,jk,:) = pe_i(:,:,jk,:) / pv_i(:,:,:) 
     138         ELSEWHERE                      ; ze_i(:,:,jk,:) = 0._wp 
     139         END WHERE 
     140      END DO 
     141      DO jk = 1, nlay_s 
     142         WHERE( pv_s(:,:,:) >= epsi10 ) ; ze_s(:,:,jk,:) = pe_s(:,:,jk,:) / pv_s(:,:,:) 
     143         ELSEWHERE                      ; ze_s(:,:,jk,:) = 0._wp 
     144         END WHERE 
     145      END DO 
     146      DO jl = 1, jpl 
     147         DO jk = 1, nlay_i 
     148            DO jj = 2, jpjm1 
     149               DO ji = fs_2, fs_jpim1 
     150                  zei_max(ji,jj,jk,jl) = MAX( epsi20, ze_i(ji,jj,jk,jl), ze_i(ji+1,jj  ,jk,jl), ze_i(ji  ,jj+1,jk,jl), & 
     151                     &                                                   ze_i(ji-1,jj  ,jk,jl), ze_i(ji  ,jj-1,jk,jl), & 
     152                     &                                                   ze_i(ji+1,jj+1,jk,jl), ze_i(ji-1,jj-1,jk,jl), & 
     153                     &                                                   ze_i(ji+1,jj-1,jk,jl), ze_i(ji-1,jj+1,jk,jl) ) 
     154               END DO 
     155            END DO 
     156         END DO 
     157      END DO 
     158      DO jl = 1, jpl 
     159         DO jk = 1, nlay_s 
     160            DO jj = 2, jpjm1 
     161               DO ji = fs_2, fs_jpim1 
     162                  zes_max(ji,jj,jk,jl) = MAX( epsi20, ze_s(ji,jj,jk,jl), ze_s(ji+1,jj  ,jk,jl), ze_s(ji  ,jj+1,jk,jl), & 
     163                     &                                                   ze_s(ji-1,jj  ,jk,jl), ze_s(ji  ,jj-1,jk,jl), & 
     164                     &                                                   ze_s(ji+1,jj+1,jk,jl), ze_s(ji-1,jj-1,jk,jl), & 
     165                     &                                                   ze_s(ji+1,jj-1,jk,jl), ze_s(ji-1,jj+1,jk,jl) ) 
     166               END DO 
     167            END DO 
     168         END DO 
     169      END DO 
     170      CALL lbc_lnk( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
     171      CALL lbc_lnk( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     172      ! 
    122173      ! 
    123174      ! --- If ice drift is too fast, use  subtime steps for advection (CFL test for stability) --- ! 
     
    158209               z0ei(:,:,jk,jl) = pe_i(:,:,jk,jl) * e1e2t(:,:) ! Ice  heat content 
    159210            END DO 
    160             IF ( ln_pnd_H12 ) THEN 
    161                z0ap(:,:,jl)  = pa_ip(:,:,jl) * e1e2t(:,:)     ! Melt pond fraction 
    162                z0vp(:,:,jl)  = pv_ip(:,:,jl) * e1e2t(:,:)     ! Melt pond volume 
     211            IF ( ln_pnd_LEV ) THEN 
     212               z0ap(:,:,jl) = pa_ip(:,:,jl) * e1e2t(:,:)      ! Melt pond fraction 
     213               z0vp(:,:,jl) = pv_ip(:,:,jl) * e1e2t(:,:)      ! Melt pond volume 
     214               IF ( ln_pnd_lids ) THEN 
     215                  z0vl(:,:,jl) = pv_il(:,:,jl) * e1e2t(:,:)   ! Melt pond lid volume 
     216               ENDIF 
    163217            ENDIF 
    164218         END DO 
     
    191245            END DO 
    192246            ! 
    193             IF ( ln_pnd_H12 ) THEN 
     247            IF ( ln_pnd_LEV ) THEN 
    194248               CALL adv_x( zdt , zudy , 1._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap )    !--- melt pond fraction 
    195249               CALL adv_y( zdt , zvdx , 0._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap )  
    196250               CALL adv_x( zdt , zudy , 1._wp , zarea , z0vp , sxvp , sxxvp , syvp , syyvp , sxyvp )    !--- melt pond volume 
    197251               CALL adv_y( zdt , zvdx , 0._wp , zarea , z0vp , sxvp , sxxvp , syvp , syyvp , sxyvp )  
     252               IF ( ln_pnd_lids ) THEN 
     253                  CALL adv_x( zdt , zudy , 1._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl ) !--- melt pond lid volume 
     254                  CALL adv_y( zdt , zvdx , 0._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl )  
     255               ENDIF 
    198256            ENDIF 
    199257            !                                                               !--------------------------------------------! 
     
    222280                  &                                 sxxe(:,:,jk,:), sye(:,:,jk,:), syye(:,:,jk,:), sxye(:,:,jk,:) ) 
    223281            END DO 
    224             IF ( ln_pnd_H12 ) THEN 
     282            IF ( ln_pnd_LEV ) THEN 
    225283               CALL adv_y( zdt , zvdx , 1._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap )    !--- melt pond fraction 
    226284               CALL adv_x( zdt , zudy , 0._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap ) 
    227285               CALL adv_y( zdt , zvdx , 1._wp , zarea , z0vp , sxvp , sxxvp , syvp , syyvp , sxyvp )    !--- melt pond volume 
    228286               CALL adv_x( zdt , zudy , 0._wp , zarea , z0vp , sxvp , sxxvp , syvp , syyvp , sxyvp ) 
    229             ENDIF 
     287               IF ( ln_pnd_lids ) THEN 
     288                  CALL adv_y( zdt , zvdx , 1._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl ) !--- melt pond lid volume 
     289                  CALL adv_x( zdt , zudy , 0._wp , zarea , z0vl , sxvl , sxxvl , syvl , syyvl , sxyvl )  
     290               ENDIF 
     291           ENDIF 
    230292            ! 
    231293         ENDIF 
     
    244306               pe_i(:,:,jk,jl) = z0ei(:,:,jk,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 
    245307            END DO 
    246             IF ( ln_pnd_H12 ) THEN 
     308            IF ( ln_pnd_LEV ) THEN 
    247309               pa_ip(:,:,jl) = z0ap(:,:,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 
    248310               pv_ip(:,:,jl) = z0vp(:,:,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 
     311               IF ( ln_pnd_lids ) THEN 
     312                  pv_il(:,:,jl) = z0vl(:,:,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 
     313               ENDIF 
    249314            ENDIF 
    250315         END DO 
     
    263328         !     Remove negative values (conservation is ensured) 
    264329         !     (because advected fields are not perfectly bounded and tiny negative values can occur, e.g. -1.e-20) 
    265          CALL ice_var_zapneg( zdt, pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, pe_s, pe_i ) 
     330         CALL ice_var_zapneg( zdt, pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, pv_il, pe_s, pe_i ) 
    266331         ! 
    267332         ! --- Make sure ice thickness is not too big --- ! 
    268333         !     (because ice thickness can be too large where ice concentration is very small) 
    269          CALL Hbig( zdt, zhi_max, zhs_max, zhip_max, pv_i, pv_s, pa_i, pa_ip, pv_ip, pe_s ) 
     334         CALL Hbig( zdt, zhi_max, zhs_max, zhip_max, zsi_max, zes_max, zei_max, & 
     335            &            pv_i, pv_s, pa_i, pa_ip, pv_ip, psv_i, pe_s, pe_i ) 
    270336         ! 
    271337         ! --- Ensure snow load is not too big --- ! 
     
    619685 
    620686 
    621    SUBROUTINE Hbig( pdt, phi_max, phs_max, phip_max, pv_i, pv_s, pa_i, pa_ip, pv_ip, pe_s ) 
     687   SUBROUTINE Hbig( pdt, phi_max, phs_max, phip_max, psi_max, pes_max, pei_max, & 
     688      &                  pv_i, pv_s, pa_i, pa_ip, pv_ip, psv_i, pe_s, pe_i ) 
    622689      !!------------------------------------------------------------------- 
    623690      !!                  ***  ROUTINE Hbig  *** 
     
    633700      !! ** input   : Max thickness of the surrounding 9-points 
    634701      !!------------------------------------------------------------------- 
    635       REAL(wp)                    , INTENT(in   ) ::   pdt                          ! tracer time-step 
    636       REAL(wp), DIMENSION(:,:,:)  , INTENT(in   ) ::   phi_max, phs_max, phip_max   ! max ice thick from surrounding 9-pts 
    637       REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pv_i, pv_s, pa_i, pa_ip, pv_ip 
     702      REAL(wp)                    , INTENT(in   ) ::   pdt                                   ! tracer time-step 
     703      REAL(wp), DIMENSION(:,:,:)  , INTENT(in   ) ::   phi_max, phs_max, phip_max, psi_max   ! max ice thick from surrounding 9-pts 
     704      REAL(wp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pes_max 
     705      REAL(wp), DIMENSION(:,:,:,:), INTENT(in   ) ::   pei_max 
     706      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pv_i, pv_s, pa_i, pa_ip, pv_ip, psv_i 
    638707      REAL(wp), DIMENSION(:,:,:,:), INTENT(inout) ::   pe_s 
    639       ! 
    640       INTEGER  ::   ji, jj, jl         ! dummy loop indices 
    641       REAL(wp) ::   z1_dt, zhip, zhi, zhs, zfra 
     708      REAL(wp), DIMENSION(:,:,:,:), INTENT(inout) ::   pe_i 
     709      ! 
     710      INTEGER  ::   ji, jj, jk, jl         ! dummy loop indices 
     711      REAL(wp) ::   z1_dt, zhip, zhi, zhs, zsi, zes, zei, zfra 
    642712      !!------------------------------------------------------------------- 
    643713      ! 
     
    645715      ! 
    646716      DO jl = 1, jpl 
    647  
    648717         DO jj = 1, jpj 
    649718            DO ji = 1, jpi 
     
    652721                  !                               ! -- check h_ip -- ! 
    653722                  ! if h_ip is larger than the surrounding 9 pts => reduce h_ip and increase a_ip 
    654                   IF( ln_pnd_H12 .AND. pv_ip(ji,jj,jl) > 0._wp ) THEN 
     723                  IF( ln_pnd_LEV .AND. pv_ip(ji,jj,jl) > 0._wp ) THEN 
    655724                     zhip = pv_ip(ji,jj,jl) / MAX( epsi20, pa_ip(ji,jj,jl) ) 
    656725                     IF( zhip > phip_max(ji,jj,jl) .AND. pa_ip(ji,jj,jl) < 0.15 ) THEN 
     
    679748                  ENDIF            
    680749                  !                   
     750                  !                               ! -- check s_i -- ! 
     751                  ! if s_i is larger than the surrounding 9 pts => put salt excess in the ocean 
     752                  zsi = psv_i(ji,jj,jl) / pv_i(ji,jj,jl) 
     753                  IF( zsi > psi_max(ji,jj,jl) .AND. pa_i(ji,jj,jl) < 0.15 ) THEN 
     754                     zfra = psi_max(ji,jj,jl) / zsi 
     755                     sfx_res(ji,jj) = sfx_res(ji,jj) + psv_i(ji,jj,jl) * ( 1._wp - zfra ) * rhoi * z1_dt 
     756                     psv_i(ji,jj,jl) = psv_i(ji,jj,jl) * zfra 
     757                  ENDIF 
     758                  ! 
    681759               ENDIF 
    682760            END DO 
    683761         END DO 
    684762      END DO  
     763      ! 
     764      !                                           ! -- check e_i/v_i -- ! 
     765      DO jl = 1, jpl 
     766         DO jk = 1, nlay_i 
     767            DO jj = 1, jpj 
     768               DO ji = 1, jpi 
     769                  IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 
     770                     ! if e_i/v_i is larger than the surrounding 9 pts => put the heat excess in the ocean 
     771                     zei = pe_i(ji,jj,jk,jl) / pv_i(ji,jj,jl) 
     772                     IF( zei > pei_max(ji,jj,jk,jl) .AND. pa_i(ji,jj,jl) < 0.15 ) THEN 
     773                        zfra = pei_max(ji,jj,jk,jl) / zei 
     774                        hfx_res(ji,jj) = hfx_res(ji,jj) - pe_i(ji,jj,jk,jl) * ( 1._wp - zfra ) * z1_dt ! W.m-2 <0 
     775                        pe_i(ji,jj,jk,jl) = pe_i(ji,jj,jk,jl) * zfra 
     776                     ENDIF 
     777                  ENDIF 
     778               END DO 
     779            END DO 
     780         END DO 
     781      END DO 
     782      !                                           ! -- check e_s/v_s -- ! 
     783      DO jl = 1, jpl 
     784         DO jk = 1, nlay_s 
     785            DO jj = 1, jpj 
     786               DO ji = 1, jpi 
     787                  IF ( pv_s(ji,jj,jl) > 0._wp ) THEN 
     788                     ! if e_s/v_s is larger than the surrounding 9 pts => put the heat excess in the ocean 
     789                     zes = pe_s(ji,jj,jk,jl) / pv_s(ji,jj,jl) 
     790                     IF( zes > pes_max(ji,jj,jk,jl) .AND. pa_i(ji,jj,jl) < 0.15 ) THEN 
     791                        zfra = pes_max(ji,jj,jk,jl) / zes 
     792                        hfx_res(ji,jj) = hfx_res(ji,jj) - pe_s(ji,jj,jk,jl) * ( 1._wp - zfra ) * z1_dt ! W.m-2 <0 
     793                        pe_s(ji,jj,jk,jl) = pe_s(ji,jj,jk,jl) * zfra 
     794                     ENDIF 
     795                  ENDIF 
     796               END DO 
     797            END DO 
     798         END DO 
     799      END DO 
    685800      ! 
    686801   END SUBROUTINE Hbig 
     
    756871         &      sxsal(jpi,jpj,jpl) , sysal(jpi,jpj,jpl) , sxxsal(jpi,jpj,jpl) , syysal(jpi,jpj,jpl) , sxysal(jpi,jpj,jpl) ,   & 
    757872         &      sxage(jpi,jpj,jpl) , syage(jpi,jpj,jpl) , sxxage(jpi,jpj,jpl) , syyage(jpi,jpj,jpl) , sxyage(jpi,jpj,jpl) ,   & 
    758          &      sxap(jpi,jpj,jpl)  , syap (jpi,jpj,jpl) , sxxap (jpi,jpj,jpl) , syyap (jpi,jpj,jpl) , sxyap (jpi,jpj,jpl) ,   & 
    759          &      sxvp(jpi,jpj,jpl)  , syvp (jpi,jpj,jpl) , sxxvp (jpi,jpj,jpl) , syyvp (jpi,jpj,jpl) , sxyvp (jpi,jpj,jpl) ,   & 
     873         &      sxap (jpi,jpj,jpl) , syap (jpi,jpj,jpl) , sxxap (jpi,jpj,jpl) , syyap (jpi,jpj,jpl) , sxyap (jpi,jpj,jpl) ,   & 
     874         &      sxvp (jpi,jpj,jpl) , syvp (jpi,jpj,jpl) , sxxvp (jpi,jpj,jpl) , syyvp (jpi,jpj,jpl) , sxyvp (jpi,jpj,jpl) ,   & 
     875         &      sxvl (jpi,jpj,jpl) , syvl (jpi,jpj,jpl) , sxxvl (jpi,jpj,jpl) , syyvl (jpi,jpj,jpl) , sxyvl (jpi,jpj,jpl) ,   & 
    760876         ! 
    761877         &      sxc0 (jpi,jpj,nlay_s,jpl) , syc0 (jpi,jpj,nlay_s,jpl) , sxxc0(jpi,jpj,nlay_s,jpl) , & 
     
    852968            END DO 
    853969            ! 
    854             IF( ln_pnd_H12 ) THEN                                    ! melt pond fraction 
    855                CALL iom_get( numrir, jpdom_autoglo, 'sxap' , sxap  ) 
    856                CALL iom_get( numrir, jpdom_autoglo, 'syap' , syap  ) 
    857                CALL iom_get( numrir, jpdom_autoglo, 'sxxap', sxxap ) 
    858                CALL iom_get( numrir, jpdom_autoglo, 'syyap', syyap ) 
    859                CALL iom_get( numrir, jpdom_autoglo, 'sxyap', sxyap ) 
    860                !                                                     ! melt pond volume 
    861                CALL iom_get( numrir, jpdom_autoglo, 'sxvp' , sxvp  ) 
    862                CALL iom_get( numrir, jpdom_autoglo, 'syvp' , syvp  ) 
    863                CALL iom_get( numrir, jpdom_autoglo, 'sxxvp', sxxvp ) 
    864                CALL iom_get( numrir, jpdom_autoglo, 'syyvp', syyvp ) 
    865                CALL iom_get( numrir, jpdom_autoglo, 'sxyvp', sxyvp ) 
     970            IF( ln_pnd_LEV ) THEN                                    ! melt pond fraction 
     971               IF( iom_varid( numror, 'sxap', ldstop = .FALSE. ) > 0 ) THEN 
     972                  CALL iom_get( numrir, jpdom_autoglo, 'sxap' , sxap  ) 
     973                  CALL iom_get( numrir, jpdom_autoglo, 'syap' , syap  ) 
     974                  CALL iom_get( numrir, jpdom_autoglo, 'sxxap', sxxap ) 
     975                  CALL iom_get( numrir, jpdom_autoglo, 'syyap', syyap ) 
     976                  CALL iom_get( numrir, jpdom_autoglo, 'sxyap', sxyap ) 
     977                  !                                                     ! melt pond volume 
     978                  CALL iom_get( numrir, jpdom_autoglo, 'sxvp' , sxvp  ) 
     979                  CALL iom_get( numrir, jpdom_autoglo, 'syvp' , syvp  ) 
     980                  CALL iom_get( numrir, jpdom_autoglo, 'sxxvp', sxxvp ) 
     981                  CALL iom_get( numrir, jpdom_autoglo, 'syyvp', syyvp ) 
     982                  CALL iom_get( numrir, jpdom_autoglo, 'sxyvp', sxyvp ) 
     983               ELSE 
     984                  sxap = 0._wp ;   syap = 0._wp    ;   sxxap = 0._wp    ;   syyap = 0._wp    ;   sxyap = 0._wp   ! melt pond fraction 
     985                  sxvp = 0._wp ;   syvp = 0._wp    ;   sxxvp = 0._wp    ;   syyvp = 0._wp    ;   sxyvp = 0._wp   ! melt pond volume 
     986               ENDIF 
     987                  ! 
     988               IF ( ln_pnd_lids ) THEN                               ! melt pond lid volume 
     989                  IF( iom_varid( numror, 'sxvl', ldstop = .FALSE. ) > 0 ) THEN 
     990                     CALL iom_get( numrir, jpdom_autoglo, 'sxvl' , sxvl  ) 
     991                     CALL iom_get( numrir, jpdom_autoglo, 'syvl' , syvl  ) 
     992                     CALL iom_get( numrir, jpdom_autoglo, 'sxxvl', sxxvl ) 
     993                     CALL iom_get( numrir, jpdom_autoglo, 'syyvl', syyvl ) 
     994                     CALL iom_get( numrir, jpdom_autoglo, 'sxyvl', sxyvl ) 
     995                  ELSE 
     996                     sxvl = 0._wp; syvl = 0._wp    ;   sxxvl = 0._wp    ;   syyvl = 0._wp    ;   sxyvl = 0._wp   ! melt pond lid volume 
     997                  ENDIF 
     998               ENDIF 
    866999            ENDIF 
    8671000            ! 
     
    8771010            sxc0  = 0._wp   ;   syc0  = 0._wp   ;   sxxc0  = 0._wp   ;   syyc0  = 0._wp   ;   sxyc0  = 0._wp      ! snow layers heat content 
    8781011            sxe   = 0._wp   ;   sye   = 0._wp   ;   sxxe   = 0._wp   ;   syye   = 0._wp   ;   sxye   = 0._wp      ! ice layers heat content 
    879             IF( ln_pnd_H12 ) THEN 
    880                sxap  = 0._wp   ;   syap  = 0._wp   ;   sxxap  = 0._wp   ;   syyap  = 0._wp   ;   sxyap  = 0._wp   ! melt pond fraction 
    881                sxvp  = 0._wp   ;   syvp  = 0._wp   ;   sxxvp  = 0._wp   ;   syyvp  = 0._wp   ;   sxyvp  = 0._wp   ! melt pond volume 
     1012            IF( ln_pnd_LEV ) THEN 
     1013               sxap = 0._wp ;   syap = 0._wp    ;   sxxap = 0._wp    ;   syyap = 0._wp    ;   sxyap = 0._wp       ! melt pond fraction 
     1014               sxvp = 0._wp ;   syvp = 0._wp    ;   sxxvp = 0._wp    ;   syyvp = 0._wp    ;   sxyvp = 0._wp       ! melt pond volume 
     1015               IF ( ln_pnd_lids ) THEN 
     1016                  sxvl = 0._wp; syvl = 0._wp    ;   sxxvl = 0._wp    ;   syyvl = 0._wp    ;   sxyvl = 0._wp       ! melt pond lid volume 
     1017               ENDIF 
    8821018            ENDIF 
    8831019         ENDIF 
     
    9421078         END DO 
    9431079         ! 
    944          IF( ln_pnd_H12 ) THEN                                       ! melt pond fraction 
     1080         IF( ln_pnd_LEV ) THEN                                       ! melt pond fraction 
    9451081            CALL iom_rstput( iter, nitrst, numriw, 'sxap' , sxap  ) 
    9461082            CALL iom_rstput( iter, nitrst, numriw, 'syap' , syap  ) 
     
    9541090            CALL iom_rstput( iter, nitrst, numriw, 'syyvp', syyvp ) 
    9551091            CALL iom_rstput( iter, nitrst, numriw, 'sxyvp', sxyvp ) 
     1092            ! 
     1093            IF ( ln_pnd_lids ) THEN                                  ! melt pond lid volume 
     1094               CALL iom_rstput( iter, nitrst, numriw, 'sxvl' , sxvl  ) 
     1095               CALL iom_rstput( iter, nitrst, numriw, 'syvl' , syvl  ) 
     1096               CALL iom_rstput( iter, nitrst, numriw, 'sxxvl', sxxvl ) 
     1097               CALL iom_rstput( iter, nitrst, numriw, 'syyvl', syyvl ) 
     1098               CALL iom_rstput( iter, nitrst, numriw, 'sxyvl', sxyvl ) 
     1099            ENDIF 
    9561100         ENDIF 
    9571101         ! 
Note: See TracChangeset for help on using the changeset viewer.