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 13442 for NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl_retain_melt/src/ICE/icedyn_adv_pra.F90 – NEMO

Ignore:
Timestamp:
2020-08-27T17:13:15+02:00 (4 years ago)
Author:
dancopsey
Message:

Put majority of code in to get melt pond freezing to feed back into ice thickness.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl_retain_melt/src/ICE/icedyn_adv_pra.F90

    r13080 r13442  
    4545   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxvp , syvp , sxxvp , syyvp , sxyvp    ! melt pond volume 
    4646   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxlhp, sylhp, sxxlhp, syylhp, sxylhp   ! melt pond lid thickness 
     47   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxsalp, sysalp, sxxsalp, syysalp, sxysalp   ! melt pond salinity 
    4748 
    4849   !! * Substitutions 
     
    5657 
    5758   SUBROUTINE ice_dyn_adv_pra( kt, pu_ice, pv_ice,  & 
    58       &                        pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, plh_ip, pe_s, pe_i ) 
     59      &                        pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, plh_ip, psv_ip, pe_s, pe_i ) 
    5960      !!---------------------------------------------------------------------- 
    6061      !!                **  routine ice_dyn_adv_pra  ** 
     
    8081      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   pv_ip      ! melt pond volume 
    8182      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   plh_ip     ! melt pond lid thickness 
     83      REAL(wp), DIMENSION(:,:,:)  , INTENT(inout) ::   psv_ip     ! melt pond salt content 
    8284      REAL(wp), DIMENSION(:,:,:,:), INTENT(inout) ::   pe_s       ! snw heat content 
    8385      REAL(wp), DIMENSION(:,:,:,:), INTENT(inout) ::   pe_i       ! ice heat content 
     
    132134            z0vp(:,:,jl)  = pv_ip(:,:,jl) * e1e2t(:,:)     ! Melt pond volume 
    133135            z0lhp(:,:,jl)  = plh_ip(:,:,jl) * e1e2t(:,:)   ! Melt pond lid thickness 
     136            z0smp(:,:,jl)  = psv_ip(:,:,jl) * e1e2t(:,:)   ! Melt pond salt content 
    134137         ENDIF 
    135138      END DO 
     
    172175               CALL adv_x( zdt , pu_ice , 1._wp , zarea , z0lhp, sxlhp, sxxlhp, sylhp, syylhp, sxylhp)    !--- melt pond lid thickness 
    173176               CALL adv_y( zdt , pv_ice , 0._wp , zarea , z0lhp, sxlhp, sxxlhp, sylhp, syylhp, sxylhp) 
     177               CALL adv_x( zdt , pu_ice , 1._wp , zarea , z0smp, sxsalp, sxxsalp, sysalp, syysalp, sxysalp)    !--- melt pond salinity 
     178               CALL adv_y( zdt , pv_ice , 0._wp , zarea , z0smp, sxsalp, sxxsalp, sysalp, syysalp, sxysalp) 
    174179            ENDIF 
    175180         END DO 
     
    209214               CALL adv_y( zdt , pv_ice , 1._wp , zarea , z0lhp, sxlhp, sxxlhp, sylhp, syylhp, sxylhp)    !--- melt pond lid thickness 
    210215               CALL adv_x( zdt , pu_ice , 0._wp , zarea , z0lhp, sxlhp, sxxlhp, sylhp, syylhp, sxylhp)  
     216               CALL adv_x( zdt , pu_ice , 1._wp , zarea , z0smp, sxsalp, sxxsalp, sysalp, syysalp, sxysalp)    !--- melt pond salinity 
     217               CALL adv_y( zdt , pv_ice , 0._wp , zarea , z0smp, sxsalp, sxxsalp, sysalp, syysalp, sxysalp) 
    211218            ENDIF 
    212219         END DO 
     
    233240            pv_ip(:,:,jl) = z0vp(:,:,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 
    234241            plh_ip(:,:,jl) = z0lhp (:,:,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 
     242            psv_ip(:,:,jl) = z0smp(:,:,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 
    235243         ENDIF 
    236244      END DO 
     
    239247      !     Remove negative values (conservation is ensured) 
    240248      !     (because advected fields are not perfectly bounded and tiny negative values can occur, e.g. -1.e-20) 
    241       CALL ice_var_zapneg( zdt, pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, plh_ip, pe_s, pe_i ) 
     249      CALL ice_var_zapneg( zdt, pato_i, pv_i, pv_s, psv_i, poa_i, pa_i, pa_ip, pv_ip, plh_ip, psv_ip, pe_s, pe_i ) 
    242250      ! 
    243251      ! --- Ensure snow load is not too big --- ! 
     
    662670         &      sxvp(jpi,jpj,jpl)  , syvp (jpi,jpj,jpl) , sxxvp (jpi,jpj,jpl) , syyvp (jpi,jpj,jpl) , sxyvp (jpi,jpj,jpl) ,   & 
    663671         &      sxlhp(jpi,jpj,jpl) , sylhp (jpi,jpj,jpl), sxxlhp (jpi,jpj,jpl), syylhp (jpi,jpj,jpl), sxylhp (jpi,jpj,jpl),   & 
     672         &      sxsalp(jpi,jpj,jpl) , sysalp (jpi,jpj,jpl), sxxsalp (jpi,jpj,jpl), syysalp (jpi,jpj,jpl), sxysalp (jpi,jpj,jpl),   & 
    664673         ! 
    665674         &      sxc0 (jpi,jpj,nlay_s,jpl) , syc0 (jpi,jpj,nlay_s,jpl) , sxxc0(jpi,jpj,nlay_s,jpl) , & 
     
    780789               CALL iom_get( numrir, jpdom_autoglo, 'syylhp', syylhp ) 
    781790               CALL iom_get( numrir, jpdom_autoglo, 'sxylhp', sxylhp ) 
     791               !                                                     ! melt pond salinity 
     792               CALL iom_get( numrir, jpdom_autoglo, 'sxsalp' , sxsalp  ) 
     793               CALL iom_get( numrir, jpdom_autoglo, 'sysalp' , sysalp  ) 
     794               CALL iom_get( numrir, jpdom_autoglo, 'sxxsalp', sxxsalp ) 
     795               CALL iom_get( numrir, jpdom_autoglo, 'syysalp', syysalp ) 
     796               CALL iom_get( numrir, jpdom_autoglo, 'sxysalp', sxysalp ) 
    782797            ENDIF 
    783798            ! 
     
    798813               sxvp  = 0._wp   ;   syvp  = 0._wp   ;   sxxvp  = 0._wp   ;   syyvp  = 0._wp   ;   sxyvp  = 0._wp   ! melt pond volume 
    799814               sxlhp  = 0._wp  ;   sylhp  = 0._wp  ;   sxxlhp  = 0._wp  ;   syylhp  = 0._wp  ;   sxylhp  = 0._wp  ! melt pond lid thickness 
     815               sxsalp  = 0._wp  ;   sysalp  = 0._wp  ;   sxxsalp  = 0._wp  ;   syysalp  = 0._wp  ;   sxysalp  = 0._wp  ! melt pond salinity 
    800816            ENDIF 
    801817         ENDIF 
     
    884900            CALL iom_rstput( iter, nitrst, numriw, 'syylhp', syylhp ) 
    885901            CALL iom_rstput( iter, nitrst, numriw, 'sxylhp', sxylhp ) 
     902            !                                                        ! melt pond salinity 
     903            CALL iom_rstput( iter, nitrst, numriw, 'sxsalp' , sxsalp  ) 
     904            CALL iom_rstput( iter, nitrst, numriw, 'sysalp' , sysalp  ) 
     905            CALL iom_rstput( iter, nitrst, numriw, 'sxxsalp', sxxsalp ) 
     906            CALL iom_rstput( iter, nitrst, numriw, 'syysalp', syysalp ) 
     907            CALL iom_rstput( iter, nitrst, numriw, 'sxysalp', sxysalp ) 
    886908         ENDIF 
    887909         ! 
Note: See TracChangeset for help on using the changeset viewer.