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 8637 for branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/LIM_SRC_3/icevar.F90 – NEMO

Ignore:
Timestamp:
2017-10-18T19:14:32+02:00 (7 years ago)
Author:
gm
Message:

#1911 (ENHANCE-09): PART I.3 - phasing with updated branch dev_r8183_ICEMODEL revision 8626

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/LIM_SRC_3/icevar.F90

    r8586 r8637  
    9797      et_i(:,:)  = SUM( SUM( e_i(:,:,:,:), dim=4 ), dim=3 ) 
    9898 
    99       ! MV MP 2016 
    100       IF ( ln_pnd ) THEN                     ! Melt pond 
    101          at_ip(:,:) = SUM( a_ip(:,:,:), dim=3 ) 
    102          vt_ip(:,:) = SUM( v_ip(:,:,:), dim=3 ) 
    103       ENDIF 
    104       ! END MP 2016 
     99      at_ip(:,:) = SUM( a_ip(:,:,:), dim=3 ) ! melt ponds 
     100      vt_ip(:,:) = SUM( v_ip(:,:,:), dim=3 ) 
    105101 
    106102      ato_i(:,:) = 1._wp - at_i(:,:)    ! open water fraction   
     
    134130         END DO 
    135131         ! 
     132         !                           ! put rt0 where there is no ice 
     133         WHERE( at_i(:,:)<=epsi20 ) 
     134            tm_su(:,:) = rt0 
     135            tm_si(:,:) = rt0 
     136            tm_i (:,:) = rt0 
     137         END WHERE 
     138 
    136139         DEALLOCATE( z1_at_i , z1_vt_i ) 
    137140      ENDIF 
     
    160163!!                a criteria for icy area (i.e. a_i > epsi20 and v_i > epsi20 ) 
    161164 
    162       !------------------------------------------------------- 
    163       ! Ice thickness, snow thickness, ice salinity, ice age 
    164       !------------------------------------------------------- 
     165      !--------------------------------------------------------------- 
     166      ! Ice thickness, snow thickness, ice salinity, ice age and ponds 
     167      !--------------------------------------------------------------- 
    165168      !                                            !--- inverse of the ice area 
    166169      WHERE( a_i(:,:,:) > epsi20 )   ;   z1_a_i(:,:,:) = 1._wp / a_i(:,:,:) 
     
    171174      ELSEWHERE                      ;   z1_v_i(:,:,:) = 0._wp 
    172175      END WHERE 
    173       ! 
    174       h_i(:,:,:) = v_i (:,:,:) * z1_a_i(:,:,:)    !--- ice thickness 
     176      !                                           !--- ice thickness 
     177      h_i(:,:,:) = v_i (:,:,:) * z1_a_i(:,:,:) 
    175178 
    176179      zhmax    =          hi_max(jpl) 
    177180      z1_zhmax =  1._wp / hi_max(jpl)                
    178       WHERE( h_i(:,:,jpl) > zhmax )               !--- bound h_i by hi_max (i.e. 99 m) with associated update of ice area 
     181      WHERE( h_i(:,:,jpl) > zhmax )   ! bound h_i by hi_max (i.e. 99 m) with associated update of ice area 
    179182         h_i  (:,:,jpl) = zhmax 
    180183         a_i   (:,:,jpl) = v_i(:,:,jpl) * z1_zhmax  
    181          z1_a_i(:,:,jpl) = zhmax * z1_v_i(:,:,jpl)          ! NB: v_i always /=0 as h_i > hi_max 
     184         z1_a_i(:,:,jpl) = zhmax * z1_v_i(:,:,jpl) 
    182185      END WHERE 
    183  
    184       h_s(:,:,:) = v_s (:,:,:) * z1_a_i(:,:,:)    !--- snow thickness 
    185        
    186       o_i(:,:,:)  = oa_i(:,:,:) * z1_a_i(:,:,:)    !--- ice age 
    187  
    188       IF( nn_icesal == 2 ) THEN                    !--- salinity (with a minimum value imposed everywhere) 
     186      !                                           !--- snow thickness 
     187      h_s(:,:,:) = v_s (:,:,:) * z1_a_i(:,:,:) 
     188      !                                           !--- ice age       
     189      o_i(:,:,:) = oa_i(:,:,:) * z1_a_i(:,:,:) 
     190      !                                           !--- pond fraction and thickness       
     191      a_ip_frac(:,:,:) = a_ip(:,:,:) * z1_a_i(:,:,:) 
     192      WHERE( a_ip_frac(:,:,:) > epsi20 )   ;   h_ip(:,:,:) = v_ip(:,:,:) * z1_a_i(:,:,:) / a_ip_frac(:,:,:) 
     193      ELSEWHERE                            ;   h_ip(:,:,:) = 0._wp 
     194      END WHERE 
     195      ! 
     196      !                                           !---  salinity (with a minimum value imposed everywhere)      
     197      IF( nn_icesal == 2 ) THEN 
    189198         WHERE( v_i(:,:,:) > epsi20 )   ;   s_i(:,:,:) = MAX( rn_simin , MIN( rn_simax, sv_i(:,:,:) * z1_v_i(:,:,:) ) ) 
    190199         ELSEWHERE                      ;   s_i(:,:,:) = rn_simin 
    191200         END WHERE 
    192201      ENDIF 
    193  
    194       CALL ice_var_salprof      ! salinity profile 
     202      CALL ice_var_salprof   ! salinity profile 
    195203 
    196204      !------------------- 
     
    235243      vt_s (:,:) = SUM( v_s, dim=3 ) 
    236244      at_i (:,:) = SUM( a_i, dim=3 ) 
    237  
    238 ! MV MP 2016 
    239 ! probably should resum for melt ponds ??? 
    240  
    241245      ! 
    242246   END SUBROUTINE ice_var_glo2eqv 
     
    251255      !!------------------------------------------------------------------- 
    252256      ! 
    253       v_i (:,:,:) = h_i(:,:,:) * a_i(:,:,:) 
    254       v_s (:,:,:) = h_s(:,:,:) * a_i(:,:,:) 
    255       sv_i(:,:,:) = s_i(:,:,:) * v_i(:,:,:) 
     257      v_i (:,:,:) = h_i (:,:,:) * a_i (:,:,:) 
     258      v_s (:,:,:) = h_s (:,:,:) * a_i (:,:,:) 
     259      sv_i(:,:,:) = s_i (:,:,:) * v_i (:,:,:) 
     260      v_ip(:,:,:) = h_ip(:,:,:) * a_ip(:,:,:) 
    256261      ! 
    257262   END SUBROUTINE ice_var_eqv2glo 
     
    471476               wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl)   * rhosn * r1_rdtice 
    472477               hfx_res(ji,jj)  = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_s (ji,jj,1,jl) * r1_rdtice ! W.m-2 <0 
     478               IF( ln_pnd_fwb ) THEN  
     479                  wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_ip(ji,jj,jl) * rhofw * r1_rdtice 
     480               ENDIF 
    473481               !----------------------------------------------------------------- 
    474482               ! Zap snow energy  
     
    491499               h_s (ji,jj,jl) = h_s (ji,jj,jl) * zswitch(ji,jj) 
    492500 
    493             END DO 
    494          END DO 
    495  
    496          IF( ln_pnd ) THEN  
    497             DO jj = 1 , jpj 
    498                DO ji = 1 , jpi 
    499                   IF( ln_pnd_fw )   & 
    500                      &   wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_ip(ji,jj,jl) * rhofw * r1_rdtice 
    501                   a_ip (ji,jj,jl) = a_ip (ji,jj,jl) * zswitch(ji,jj) 
    502                   v_ip (ji,jj,jl) = v_ip (ji,jj,jl) * zswitch(ji,jj) 
    503                END DO 
    504             END DO 
    505          ENDIF 
    506           
     501               a_ip (ji,jj,jl) = a_ip (ji,jj,jl) * zswitch(ji,jj) 
     502               v_ip (ji,jj,jl) = v_ip (ji,jj,jl) * zswitch(ji,jj) 
     503 
     504            END DO 
     505         END DO 
     506         
    507507      END DO  
    508508 
Note: See TracChangeset for help on using the changeset viewer.