Ignore:
Timestamp:
2018-11-21T11:25:53+01:00 (2 years ago)
Author:
smasson
Message:

dev_r10164_HPC09_ESIWACE_PREP_MERGE: merge with trunk@10344, see #2133

Location:
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE/icedyn_adv_umx.F90

    r10292 r10345  
    229229         ! 
    230230         DO jl = 1, ipl 
    231             DO jj = 1, jpjm1 
     231            DO jj = 2, jpjm1 
    232232               DO ji = 1, fs_jpim1   ! vector opt. 
    233233                  zfu_ho(ji,jj,jl) = puc(ji,jj) * zt_u(ji,jj,jl) 
     234               END DO 
     235            END DO 
     236         END DO 
     237         DO jl = 1, ipl 
     238            DO jj = 1, jpjm1 
     239               DO ji = fs_2, fs_jpim1   ! vector opt. 
    234240                  zfv_ho(ji,jj,jl) = pvc(ji,jj) * zt_v(ji,jj,jl) 
    235241               END DO 
     
    242248      ! -------------------------------------------------- 
    243249      DO jl = 1, ipl 
    244          DO jj = 1, jpjm1 
     250         DO jj = 2, jpjm1 
    245251            DO ji = 1, fs_jpim1   ! vector opt. 
    246252               zfu_ho(ji,jj,jl) = zfu_ho(ji,jj,jl) - zfu_ups(ji,jj,jl) 
     253            END DO 
     254         END DO 
     255      END DO 
     256      DO jl = 1, ipl 
     257         DO jj = 1, jpjm1 
     258            DO ji = fs_2, fs_jpim1   ! vector opt. 
    247259               zfv_ho(ji,jj,jl) = zfv_ho(ji,jj,jl) - zfv_ups(ji,jj,jl) 
    248260            END DO 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE/icedyn_rhg_evp.F90

    r10297 r10345  
    2626   USE sbc_ice , ONLY : utau_ice, vtau_ice, snwice_mass, snwice_mass_b 
    2727   USE ice            ! sea-ice: ice variables 
     28   USE icevar         ! ice_var_sshdyn 
    2829   USE icedyn_rdgrft  ! sea-ice: ice strength 
    2930   USE bdy_oce , ONLY : ln_bdy  
     
    143144      REAL(wp), DIMENSION(jpi,jpj) ::   zs1, zs2, zs12                  ! stress tensor components 
    144145      REAL(wp), DIMENSION(jpi,jpj) ::   zu_ice, zv_ice, zresr           ! check convergence 
    145       REAL(wp), DIMENSION(jpi,jpj) ::   zpice                           ! array used for the calculation of ice surface slope: 
     146      REAL(wp), DIMENSION(jpi,jpj) ::   zssh_lead_m                     ! array used for the calculation of ice surface slope: 
    146147      !                                                                 !    ocean surface (ssh_m) if ice is not embedded 
    147148      !                                                                 !    ice top surface if ice is embedded    
     
    261262      !------------------------------------------------------------------------------! 
    262263 
    263       IF( ln_ice_embd ) THEN             !== embedded sea ice: compute representative ice top surface ==! 
    264          !                                             
    265          ! average interpolation coeff as used in dynspg = (1/nn_fsbc)   * {SUM[n/nn_fsbc], n=0,nn_fsbc-1} 
    266          !                                               = (1/nn_fsbc)^2 * {SUM[n]        , n=0,nn_fsbc-1} 
    267          zintn = REAL( nn_fsbc - 1 ) / REAL( nn_fsbc ) * 0.5_wp      
    268          ! 
    269          ! average interpolation coeff as used in dynspg = (1/nn_fsbc)   *    {SUM[1-n/nn_fsbc], n=0,nn_fsbc-1} 
    270          !                                               = (1/nn_fsbc)^2 * (nn_fsbc^2 - {SUM[n], n=0,nn_fsbc-1}) 
    271          zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 
    272          ! 
    273          zpice(:,:) = ssh_m(:,:) + ( zintn * snwice_mass(:,:) + zintb * snwice_mass_b(:,:) ) * r1_rau0 
    274          ! 
    275       ELSE                                    !== non-embedded sea ice: use ocean surface for slope calculation ==! 
    276          zpice(:,:) = ssh_m(:,:) 
    277       ENDIF 
     264      !== embedded sea ice: compute representative ice top surface      ==! 
     265      !== non-embedded sea ice: use ocean surface for slope calculation ==! 
     266      zssh_lead_m(:,:) = ice_var_sshdyn( ssh_m, snwice_mass, snwice_mass_b) 
    278267 
    279268      DO jj = 2, jpjm1 
     
    313302 
    314303            ! Surface pressure gradient (- m*g*GRAD(ssh)) at U-V points 
    315             zspgU(ji,jj)    = - zmassU * grav * ( zpice(ji+1,jj) - zpice(ji,jj) ) * r1_e1u(ji,jj) 
    316             zspgV(ji,jj)    = - zmassV * grav * ( zpice(ji,jj+1) - zpice(ji,jj) ) * r1_e2v(ji,jj) 
     304            zspgU(ji,jj)    = - zmassU * grav * ( zssh_lead_m(ji+1,jj) - zssh_lead_m(ji,jj) ) * r1_e1u(ji,jj) 
     305            zspgV(ji,jj)    = - zmassV * grav * ( zssh_lead_m(ji,jj+1) - zssh_lead_m(ji,jj) ) * r1_e2v(ji,jj) 
    317306 
    318307            ! masks 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE/icevar.F90

    r10069 r10345  
    4949   !!   ice_var_bv        : brine volume 
    5050   !!   ice_var_enthalpy  : compute ice and snow enthalpies from temperature 
     51   !!   ice_var_sshdyn    : compute equivalent ssh in lead 
    5152   !!---------------------------------------------------------------------- 
    5253   USE dom_oce        ! ocean space and time domain 
    5354   USE phycst         ! physical constants (ocean directory)  
    54    USE sbc_oce , ONLY : sss_m 
     55   USE sbc_oce , ONLY : sss_m, ln_ice_embd, nn_fsbc 
    5556   USE ice            ! sea-ice: variables 
    5657   USE ice1D          ! sea-ice: thermodynamics variables 
     
    7475   PUBLIC   ice_var_bv            
    7576   PUBLIC   ice_var_enthalpy            
     77   PUBLIC   ice_var_sshdyn 
    7678 
    7779   !!---------------------------------------------------------------------- 
     
    949951   END SUBROUTINE ice_var_enthalpy 
    950952 
     953   FUNCTION ice_var_sshdyn(pssh, psnwice_mass, psnwice_mass_b) 
     954      !!--------------------------------------------------------------------- 
     955      !!                   ***  ROUTINE rhg_evp_rst  *** 
     956      !!                      
     957      !! ** Purpose :  compute the equivalent ssh in lead when sea ice is embedded 
     958      !! 
     959      !! ** Method  :  ssh_lead = ssh + (Mice + Msnow) / rau0 
     960      !! 
     961      !! ** Reference : Jean-Michel Campin, John Marshall, David Ferreira, 
     962      !!                Sea ice-ocean coupling using a rescaled vertical coordinate z*,  
     963      !!                Ocean Modelling, Volume 24, Issues 1-2, 2008 
     964      !! 
     965      !!---------------------------------------------------------------------- 
     966      ! 
     967      ! input 
     968      REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pssh            !: ssh [m] 
     969      REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: psnwice_mass    !: mass of snow and ice at current  ice time step [Kg/m2] 
     970      REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: psnwice_mass_b  !: mass of snow and ice at previous ice time step [Kg/m2] 
     971      ! 
     972      ! output 
     973      REAL(wp), DIMENSION(jpi,jpj) :: ice_var_sshdyn  ! equivalent ssh in lead [m] 
     974      ! 
     975      ! temporary 
     976      REAL(wp) :: zintn, zintb                     ! time interpolation weights [] 
     977      REAL(wp), DIMENSION(jpi,jpj) :: zsnwiceload  ! snow and ice load [m] 
     978      ! 
     979      ! compute ice load used to define the equivalent ssh in lead 
     980      IF( ln_ice_embd ) THEN 
     981         !                                             
     982         ! average interpolation coeff as used in dynspg = (1/nn_fsbc)   * {SUM[n/nn_fsbc], n=0,nn_fsbc-1} 
     983         !                                               = (1/nn_fsbc)^2 * {SUM[n]        , n=0,nn_fsbc-1} 
     984         zintn = REAL( nn_fsbc - 1 ) / REAL( nn_fsbc ) * 0.5_wp 
     985         ! 
     986         ! average interpolation coeff as used in dynspg = (1/nn_fsbc)   *    {SUM[1-n/nn_fsbc], n=0,nn_fsbc-1} 
     987         !                                               = (1/nn_fsbc)^2 * (nn_fsbc^2 - {SUM[n], n=0,nn_fsbc-1}) 
     988         zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 
     989         ! 
     990         zsnwiceload(:,:) = ( zintn * psnwice_mass(:,:) + zintb * psnwice_mass_b(:,:) ) * r1_rau0 
     991         ! 
     992      ELSE 
     993         zsnwiceload(:,:) = 0.0_wp 
     994      ENDIF 
     995      ! compute equivalent ssh in lead 
     996      ice_var_sshdyn(:,:) = pssh(:,:) + zsnwiceload(:,:) 
     997      ! 
     998   END FUNCTION ice_var_sshdyn 
     999 
     1000 
    9511001#else 
    9521002   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.