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 5059 for branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90 – NEMO

Ignore:
Timestamp:
2015-02-04T17:22:15+01:00 (9 years ago)
Author:
clem
Message:

LIM3: set ice diffusivity independant of the resolution in the namelist. The dependancy is done in the code itself

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r5055 r5059  
    6161      !! ** action : 
    6262      !!--------------------------------------------------------------------- 
    63       INTEGER, INTENT(in) ::   kt   ! number of iteration 
     63      INTEGER, INTENT(in) ::   kt           ! number of iteration 
    6464      ! 
    65       INTEGER  ::   ji, jj, jk, jl, jt   ! dummy loop indices 
     65      INTEGER  ::   ji, jj, jk, jl, jt      ! dummy loop indices 
    6666      INTEGER  ::   initad                  ! number of sub-timestep for the advection 
    6767      REAL(wp) ::   zcfl , zusnit           !   -      - 
    68       CHARACTER(len=80) :: cltmp 
     68      CHARACTER(len=80) ::   cltmp 
    6969      ! 
    7070      REAL(wp), POINTER, DIMENSION(:,:)      ::   zsm, zs0at 
     
    7575      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zhimax                   ! old ice thickness 
    7676      REAL(wp), POINTER, DIMENSION(:,:)      ::   zatold, zeiold, zesold   ! old concentration, enthalpies 
    77       REAL(wp) :: zdv, zvi, zvs, zsmv, zes, zei 
    78       ! 
    79       REAL(wp) :: zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b 
     77      REAL(wp) ::    zdv, zvi, zvs, zsmv, zes, zei 
     78      REAL(wp) ::    zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b 
    8079      !!--------------------------------------------------------------------- 
    8180      IF( nn_timing == 1 )  CALL timing_start('limtrp') 
     
    122121               DO ji = 2, jpim1 
    123122                  zhimax(ji,jj,jl) = MAXVAL( ht_i(ji-1:ji+1,jj-1:jj+1,jl) ) 
    124                   !zhimax(ji,jj,jl) = ( ht_i(ji  ,jj  ,jl) * tmask(ji,  jj  ,1) + ht_i(ji-1,jj-1,jl) * tmask(ji-1,jj-1,1) + ht_i(ji+1,jj+1,jl) * tmask(ji+1,jj+1,1) & 
    125                   !     &             + ht_i(ji-1,jj  ,jl) * tmask(ji-1,jj  ,1) + ht_i(ji  ,jj-1,jl) * tmask(ji  ,jj-1,1) & 
    126                   !     &             + ht_i(ji+1,jj  ,jl) * tmask(ji+1,jj  ,1) + ht_i(ji  ,jj+1,jl) * tmask(ji  ,jj+1,1) & 
    127                   !     &             + ht_i(ji-1,jj+1,jl) * tmask(ji-1,jj+1,1) + ht_i(ji+1,jj-1,jl) * tmask(ji+1,jj-1,1) ) 
    128123               END DO 
    129124            END DO 
     
    139134         zcfl  = MAX( zcfl, MAXVAL( ABS( v_ice(:,:) ) * rdt_ice / e2v(:,:) ) ) 
    140135         IF(lk_mpp )   CALL mpp_max( zcfl ) 
    141 !!gm more readability: 
    142 !         IF( zcfl > 0.5 ) THEN   ;   initad = 2   ;   zusnit = 0.5_wp 
    143 !         ELSE                    ;   initad = 1   ;   zusnit = 1.0_wp 
    144 !         ENDIF 
    145 !!gm end 
    146          initad = 1 + NINT( MAX( 0._wp, SIGN( 1._wp, zcfl-0.5 ) ) ) 
    147          zusnit = 1.0 / REAL( initad )  
     136 
     137         IF( zcfl > 0.5 ) THEN   ;   initad = 2   ;   zusnit = 0.5_wp 
     138         ELSE                    ;   initad = 1   ;   zusnit = 1.0_wp 
     139         ENDIF 
     140 
    148141         IF( zcfl > 0.5_wp .AND. lwp )   ncfl = ncfl + 1 
    149142         IF( numit == nlast .AND. lwp ) THEN 
    150143            IF( ncfl > 0 ) THEN    
    151              WRITE(cltmp,'(i6.1)') ncfl 
    152              CALL ctl_stop('STOP',TRIM(cltmp) ) 
     144               WRITE(cltmp,'(i6.1)') ncfl 
     145               CALL ctl_stop('STOP',TRIM(cltmp) ) 
    153146               CALL ctl_warn( 'lim_trp: ', TRIM(cltmp), 'advective ice time-step using a split in sub-time-step ') 
    154147            ELSE 
     
    160153         ! transported fields                                         
    161154         !------------------------- 
    162          zs0ow(:,:,1) = ato_i(:,:) * area(:,:)               ! Open water area  
     155         zs0ow(:,:,1) = ato_i(:,:) * area(:,:)              ! Open water area  
    163156         DO jl = 1, jpl 
    164157            zs0sn (:,:,jl)   = v_s  (:,:,jl) * area(:,:)    ! Snow volume 
     
    277270 
    278271         !------------------------------------------------------------------------------! 
    279          ! 4) Diffusion of Ice fields                   
     272         ! Diffusion of Ice fields                   
    280273         !------------------------------------------------------------------------------! 
    281274 
     
    322315 
    323316         !------------------------------------------------------------------------------! 
    324          ! 5) Update and limit ice properties after transport                            
     317         ! limit ice properties after transport                            
    325318         !------------------------------------------------------------------------------! 
    326  
    327319!!gm & cr   :  MAX should not be active if adv scheme is positive ! 
    328          !-------------------------------------------------- 
    329          ! 5.1) Recover mean values over the grid squares. 
    330          !-------------------------------------------------- 
    331320         DO jl = 1, jpl 
    332321            DO jj = 1, jpj 
     
    340329               END DO 
    341330            END DO 
    342          END DO 
    343          DO jl = 1, jpl 
     331 
    344332            DO jk = 1, nlay_i 
    345333               DO jj = 1, jpj 
     
    458446 
    459447      ! ------------------------------------------------- 
    460       IF( ln_nicep )   CALL lim_prt( kt, jiindx, jjindx,-1, ' - ice dyn & trp - ' )   ! control print 
     448      ! control prints 
    461449      ! ------------------------------------------------- 
    462       IF(ln_ctl) THEN   ! Control print 
    463          CALL prt_ctl_info(' ') 
    464          CALL prt_ctl_info(' - Cell values : ') 
    465          CALL prt_ctl_info('   ~~~~~~~~~~~~~ ') 
    466          CALL prt_ctl(tab2d_1=area , clinfo1=' lim_trp  : cell area :') 
    467          CALL prt_ctl(tab2d_1=at_i , clinfo1=' lim_trp  : at_i      :') 
    468          CALL prt_ctl(tab2d_1=vt_i , clinfo1=' lim_trp  : vt_i      :') 
    469          CALL prt_ctl(tab2d_1=vt_s , clinfo1=' lim_trp  : vt_s      :') 
    470          DO jl = 1, jpl 
    471             CALL prt_ctl_info(' ') 
    472             CALL prt_ctl_info(' - Category : ', ivar1=jl) 
    473             CALL prt_ctl_info('   ~~~~~~~~~~') 
    474             CALL prt_ctl(tab2d_1=a_i   (:,:,jl)   , clinfo1= ' lim_trp  : a_i      : ') 
    475             CALL prt_ctl(tab2d_1=ht_i  (:,:,jl)   , clinfo1= ' lim_trp  : ht_i     : ') 
    476             CALL prt_ctl(tab2d_1=ht_s  (:,:,jl)   , clinfo1= ' lim_trp  : ht_s     : ') 
    477             CALL prt_ctl(tab2d_1=v_i   (:,:,jl)   , clinfo1= ' lim_trp  : v_i      : ') 
    478             CALL prt_ctl(tab2d_1=v_s   (:,:,jl)   , clinfo1= ' lim_trp  : v_s      : ') 
    479             CALL prt_ctl(tab2d_1=e_s   (:,:,1,jl) , clinfo1= ' lim_trp  : e_s      : ') 
    480             CALL prt_ctl(tab2d_1=t_su  (:,:,jl)   , clinfo1= ' lim_trp  : t_su     : ') 
    481             CALL prt_ctl(tab2d_1=t_s   (:,:,1,jl) , clinfo1= ' lim_trp  : t_snow   : ') 
    482             CALL prt_ctl(tab2d_1=sm_i  (:,:,jl)   , clinfo1= ' lim_trp  : sm_i     : ') 
    483             CALL prt_ctl(tab2d_1=smv_i (:,:,jl)   , clinfo1= ' lim_trp  : smv_i    : ') 
    484             DO jk = 1, nlay_i 
    485                CALL prt_ctl_info(' ') 
    486                CALL prt_ctl_info(' - Layer : ', ivar1=jk) 
    487                CALL prt_ctl_info('   ~~~~~~~') 
    488                CALL prt_ctl(tab2d_1=t_i(:,:,jk,jl) , clinfo1= ' lim_trp  : t_i      : ') 
    489                CALL prt_ctl(tab2d_1=e_i(:,:,jk,jl) , clinfo1= ' lim_trp  : e_i      : ') 
    490             END DO 
    491          END DO 
    492       ENDIF 
     450      IF( ln_nicep )   CALL lim_prt( kt, jiindx, jjindx,-1, ' - ice dyn & trp - ' ) 
    493451      ! 
    494452      CALL wrk_dealloc( jpi,jpj,           zsm, zs0at, zatold, zeiold, zesold ) 
     
    499457      ! 
    500458      IF( nn_timing == 1 )  CALL timing_stop('limtrp') 
     459 
    501460   END SUBROUTINE lim_trp 
    502461 
     
    509468   END SUBROUTINE lim_trp 
    510469#endif 
    511  
    512470   !!====================================================================== 
    513471END MODULE limtrp 
Note: See TracChangeset for help on using the changeset viewer.