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 13463 for NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/ICE/icedyn.F90 – NEMO

Ignore:
Timestamp:
2020-09-14T17:40:34+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2195:update to trunk 13461

Location:
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS

    • 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 
         8 
         9# SETTE 
         10^/utils/CI/sette@13382        sette 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/ICE/icedyn.F90

    r10994 r13463  
    5252    
    5353   !! * Substitutions 
    54 #  include "vectopt_loop_substitute.h90" 
     54#  include "do_loop_substitute.h90" 
    5555   !!---------------------------------------------------------------------- 
    5656   !! NEMO/ICE 4.0 , NEMO Consortium (2018) 
     
    6060CONTAINS 
    6161 
    62    SUBROUTINE ice_dyn( kt ) 
     62   SUBROUTINE ice_dyn( kt, Kmm ) 
    6363      !!------------------------------------------------------------------- 
    6464      !!               ***  ROUTINE ice_dyn  *** 
     
    7373      !!-------------------------------------------------------------------- 
    7474      INTEGER, INTENT(in) ::   kt     ! ice time step 
     75      INTEGER, INTENT(in) ::   Kmm    ! ocean time level index 
    7576      !! 
    7677      INTEGER  ::   ji, jj        ! dummy loop indices 
     
    108109      CASE ( np_dynALL )           !==  all dynamical processes  ==! 
    109110         ! 
    110          CALL ice_dyn_rhg   ( kt )                                          ! -- rheology   
     111         CALL ice_dyn_rhg   ( kt, Kmm )                                     ! -- rheology   
    111112         CALL ice_dyn_adv   ( kt )                                          ! -- advection of ice 
    112113         CALL ice_dyn_rdgrft( kt )                                          ! -- ridging/rafting  
     
    115116      CASE ( np_dynRHGADV  )       !==  no ridge/raft & no corrections ==! 
    116117         ! 
    117          CALL ice_dyn_rhg   ( kt )                                          ! -- rheology   
     118         CALL ice_dyn_rhg   ( kt, Kmm )                                     ! -- rheology   
    118119         CALL ice_dyn_adv   ( kt )                                          ! -- advection of ice 
    119120         CALL Hpiling                                                       ! -- simple pile-up (replaces ridging/rafting) 
     
    125126         ! CFL = 0.5 at a distance from the bound of 1/6 of the basin length 
    126127         ! Then for dx = 2m and dt = 1s => rn_uice = u (1/6th) = 1m/s  
    127          DO jj = 1, jpj 
    128             DO ji = 1, jpi 
    129                zcoefu = ( REAL(jpiglo+1)*0.5 - REAL(ji+nimpp-1) ) / ( REAL(jpiglo+1)*0.5 - 1. ) 
    130                zcoefv = ( REAL(jpjglo+1)*0.5 - REAL(jj+njmpp-1) ) / ( REAL(jpjglo+1)*0.5 - 1. ) 
    131                u_ice(ji,jj) = rn_uice * 1.5 * SIGN( 1., zcoefu ) * ABS( zcoefu ) * umask(ji,jj,1) 
    132                v_ice(ji,jj) = rn_vice * 1.5 * SIGN( 1., zcoefv ) * ABS( zcoefv ) * vmask(ji,jj,1) 
    133             END DO 
    134          END DO 
     128         DO_2D( 1, 1, 1, 1 ) 
     129            zcoefu = ( REAL(jpiglo+1)*0.5 - REAL(ji+nimpp-1) ) / ( REAL(jpiglo+1)*0.5 - 1. ) 
     130            zcoefv = ( REAL(jpjglo+1)*0.5 - REAL(jj+njmpp-1) ) / ( REAL(jpjglo+1)*0.5 - 1. ) 
     131            u_ice(ji,jj) = rn_uice * 1.5 * SIGN( 1.0_wp, zcoefu ) * ABS( zcoefu ) * umask(ji,jj,1) 
     132            v_ice(ji,jj) = rn_vice * 1.5 * SIGN( 1.0_wp, zcoefv ) * ABS( zcoefv ) * vmask(ji,jj,1) 
     133         END_2D 
    135134         ! --- 
    136135         CALL ice_dyn_adv   ( kt )                                          ! -- advection of ice 
     
    156155 
    157156            ALLOCATE( zdivu_i(jpi,jpj) ) 
    158             DO jj = 2, jpjm1 
    159                DO ji = 2, jpim1 
    160                   zdivu_i(ji,jj) = ( e2u(ji,jj) * u_ice(ji,jj) - e2u(ji-1,jj) * u_ice(ji-1,jj)   & 
    161                      &             + e1v(ji,jj) * v_ice(ji,jj) - e1v(ji,jj-1) * v_ice(ji,jj-1) ) * r1_e1e2t(ji,jj) 
    162                END DO 
    163             END DO 
    164             CALL lbc_lnk( 'icedyn', zdivu_i, 'T', 1. ) 
    165             CALL iom_put( "icediv" , zdivu_i(:,:) ) 
     157            DO_2D( 0, 0, 0, 0 ) 
     158               zdivu_i(ji,jj) = ( e2u(ji,jj) * u_ice(ji,jj) - e2u(ji-1,jj) * u_ice(ji-1,jj)   & 
     159                  &             + e1v(ji,jj) * v_ice(ji,jj) - e1v(ji,jj-1) * v_ice(ji,jj-1) ) * r1_e1e2t(ji,jj) 
     160            END_2D 
     161            CALL lbc_lnk( 'icedyn', zdivu_i, 'T', 1.0_wp ) 
     162            ! output 
     163            CALL iom_put( 'icediv' , zdivu_i ) 
     164 
    166165            DEALLOCATE( zdivu_i ) 
    167166 
     
    219218      NAMELIST/namdyn/ ln_dynALL, ln_dynRHGADV, ln_dynADV1D, ln_dynADV2D, rn_uice, rn_vice,  & 
    220219         &             rn_ishlat ,                                                           & 
    221          &             ln_landfast_L16, ln_landfast_home, rn_depfra, rn_icebfr, rn_lfrelax, rn_tensile 
    222       !!------------------------------------------------------------------- 
    223       ! 
    224       REWIND( numnam_ice_ref )         ! Namelist namdyn in reference namelist : Ice dynamics 
     220         &             ln_landfast_L16, rn_depfra, rn_icebfr, rn_lfrelax, rn_tensile 
     221      !!------------------------------------------------------------------- 
     222      ! 
    225223      READ  ( numnam_ice_ref, namdyn, IOSTAT = ios, ERR = 901) 
    226 901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdyn in reference namelist', lwp ) 
    227       REWIND( numnam_ice_cfg )         ! Namelist namdyn in configuration namelist : Ice dynamics 
     224901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdyn in reference namelist' ) 
    228225      READ  ( numnam_ice_cfg, namdyn, IOSTAT = ios, ERR = 902 ) 
    229 902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namdyn in configuration namelist', lwp ) 
     226902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namdyn in configuration namelist' ) 
    230227      IF(lwm) WRITE( numoni, namdyn ) 
    231228      ! 
     
    242239         WRITE(numout,*) '      lateral boundary condition for sea ice dynamics        rn_ishlat       = ', rn_ishlat 
    243240         WRITE(numout,*) '      Landfast: param from Lemieux 2016                      ln_landfast_L16 = ', ln_landfast_L16 
    244          WRITE(numout,*) '      Landfast: param from home made                         ln_landfast_home= ', ln_landfast_home 
    245241         WRITE(numout,*) '         fraction of ocean depth that ice must reach         rn_depfra       = ', rn_depfra 
    246242         WRITE(numout,*) '         maximum bottom stress per unit area of contact      rn_icebfr       = ', rn_icebfr 
     
    269265      ENDIF 
    270266      !                                      !--- Landfast ice 
    271       IF( .NOT.ln_landfast_L16 .AND. .NOT.ln_landfast_home )   tau_icebfr(:,:) = 0._wp 
    272       ! 
    273       IF ( ln_landfast_L16 .AND. ln_landfast_home ) THEN 
    274          CALL ctl_stop( 'ice_dyn_init: choose one and only one landfast parameterization (ln_landfast_L16 or ln_landfast_home)' ) 
    275       ENDIF 
     267      IF( .NOT.ln_landfast_L16 )   tau_icebfr(:,:) = 0._wp 
    276268      ! 
    277269      CALL ice_dyn_rdgrft_init          ! set ice ridging/rafting parameters 
Note: See TracChangeset for help on using the changeset viewer.