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 13540 for NEMO/branches/2020/r12377_ticket2386/src/ICE/iceupdate.F90 – NEMO

Ignore:
Timestamp:
2020-09-29T12:41:06+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2386: update to latest trunk

Location:
NEMO/branches/2020/r12377_ticket2386
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/r12377_ticket2386

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
        88 
        99# SETTE 
        10 ^/utils/CI/sette@HEAD         sette 
         10^/utils/CI/sette@13507        sette 
  • NEMO/branches/2020/r12377_ticket2386/src/ICE/iceupdate.F90

    r12511 r13540  
    2525   USE icectl         ! sea-ice: control prints 
    2626   USE bdy_oce , ONLY : ln_bdy 
     27   USE zdfdrg  , ONLY : ln_drgice_imp 
    2728   ! 
    2829   USE in_out_manager ! I/O manager 
     
    9394      REAL(wp) ::   zqmass           ! Heat flux associated with mass exchange ice->ocean (W.m-2) 
    9495      REAL(wp) ::   zqsr             ! New solar flux received by the ocean 
    95       REAL(wp), DIMENSION(jpi,jpj)     ::   z2d                  ! 2D workspace 
    96       REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zalb_cs, zalb_os     ! 3D workspace 
     96      REAL(wp), DIMENSION(jpi,jpj) ::   z2d                  ! 2D workspace 
    9797      !!--------------------------------------------------------------------- 
    9898      IF( ln_timing )   CALL timing_start('ice_update') 
     
    113113      ENDIF 
    114114       
    115       DO_2D_11_11 
     115      DO_2D( 1, 1, 1, 1 ) 
    116116 
    117117         ! Solar heat flux reaching the ocean = zqsr (W.m-2)  
     
    182182      ! Snow/ice albedo (only if sent to coupler, useless in forced mode) 
    183183      !------------------------------------------------------------------ 
    184       CALL ice_alb( t_su, h_i, h_s, ln_pnd_alb, a_ip_frac, h_ip, zalb_cs, zalb_os ) ! cloud-sky and overcast-sky ice albedos 
    185       ! 
    186       alb_ice(:,:,:) = ( 1._wp - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
     184      CALL ice_alb( t_su, h_i, h_s, ln_pnd_alb, a_ip_eff, h_ip, cloud_fra, alb_ice ) ! ice albedo 
     185 
    187186      ! 
    188187      IF( lrst_ice ) THEN                       !* write snwice_mass fields in the restart file 
     
    320319      REAL(wp) ::   zat_u, zutau_ice, zu_t, zmodt   ! local scalar 
    321320      REAL(wp) ::   zat_v, zvtau_ice, zv_t, zrhoco  !   -      - 
     321      REAL(wp) ::   zflagi                          !   -      - 
    322322      !!--------------------------------------------------------------------- 
    323323      IF( ln_timing )   CALL timing_start('ice_update_tau') 
     
    332332      ! 
    333333      IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN     !==  Ice time-step only  ==!   (i.e. surface module time-step) 
    334          DO_2D_00_00 
     334         DO_2D( 0, 0, 0, 0 )                          !* update the modulus of stress at ocean surface (T-point) 
    335335            !                                               ! 2*(U_ice-U_oce) at T-point 
    336336            zu_t = u_ice(ji,jj) + u_ice(ji-1,jj) - u_oce(ji,jj) - u_oce(ji-1,jj)    
     
    342342            tmod_io(ji,jj) = zrhoco * SQRT( zmodt )          ! rhoco * |U_ice-U_oce| at T-point 
    343343         END_2D 
    344          CALL lbc_lnk_multi( 'iceupdate', taum, 'T', 1., tmod_io, 'T', 1. ) 
     344         CALL lbc_lnk_multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 
    345345         ! 
    346346         utau_oce(:,:) = utau(:,:)                    !* save the air-ocean stresses at ice time-step 
     
    350350      ! 
    351351      !                                      !==  every ocean time-step  ==! 
    352       ! 
    353       DO_2D_00_00 
     352      IF ( ln_drgice_imp ) THEN 
     353         ! Save drag with right sign to update top drag in the ocean implicit friction  
     354         rCdU_ice(:,:) = -r1_rho0 * tmod_io(:,:) * at_i(:,:) * tmask(:,:,1)  
     355         zflagi = 0._wp 
     356      ELSE 
     357         zflagi = 1._wp 
     358      ENDIF 
     359      ! 
     360      DO_2D( 0, 0, 0, 0 )                             !* update the stress WITHOUT an ice-ocean rotation angle 
    354361         ! ice area at u and v-points  
    355362         zat_u  = ( at_i(ji,jj) * tmask(ji,jj,1) + at_i (ji+1,jj    ) * tmask(ji+1,jj  ,1) )  & 
     
    364371         vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 
    365372      END_2D 
    366       CALL lbc_lnk_multi( 'iceupdate', utau, 'U', -1., vtau, 'V', -1. )   ! lateral boundary condition 
     373      CALL lbc_lnk_multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp )   ! lateral boundary condition 
    367374      ! 
    368375      IF( ln_timing )   CALL timing_stop('ice_update_tau') 
     
    417424            ! 
    418425            IF( id1 > 0 ) THEN                       ! fields exist 
    419                CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass'  , snwice_mass   ) 
    420                CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass_b', snwice_mass_b ) 
     426               CALL iom_get( numrir, jpdom_auto, 'snwice_mass'  , snwice_mass   ) 
     427               CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b ) 
    421428            ELSE                                     ! start from rest 
    422429               IF(lwp) WRITE(numout,*) '   ==>>   previous run without snow-ice mass output then set it' 
Note: See TracChangeset for help on using the changeset viewer.