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 4833 for trunk/NEMOGCM – NEMO

Changeset 4833 for trunk/NEMOGCM


Ignore:
Timestamp:
2014-11-06T15:58:37+01:00 (9 years ago)
Author:
flavoni
Message:

fix LIM3 reproducibility problems, see ticket #1398

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r4688 r4833  
    2929   USE lib_mpp        ! MPP library 
    3030   USE wrk_nemo       ! work arrays 
     31   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    3132   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3233   USE limthd_ent 
     
    133134                  !Energy of melting q(S,T) [J.m-3] 
    134135                  zindb = 1._wp - MAX(  0._wp , SIGN( 1._wp , -v_i(ji,jj,jl) + epsi10 )  )   !0 if no ice and 1 if yes 
    135                   e_i(ji,jj,jk,jl) = zindb * e_i(ji,jj,jk,jl) / ( area(ji,jj) * MAX( v_i(ji,jj,jl) ,  epsi10 ) ) * REAL( nlay_i ) 
     136                  e_i(ji,jj,jk,jl) = zindb * e_i(ji,jj,jk,jl) / ( area(ji,jj) * MAX( v_i(ji,jj,jl) ,  epsi10 ) ) * REAL( nlay_i, wp ) 
    136137                  e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * unit_fac 
    137138               END DO 
     
    171172         zgamafr = 0.03 
    172173 
    173          DO jj = 1, jpj 
    174             DO ji = 1, jpi 
    175  
     174         DO jj = 2, jpj 
     175            DO ji = 2, jpi 
    176176               IF ( qlead(ji,jj) < 0._wp ) THEN 
    177177                  !------------- 
     
    243243            END DO ! loop on ji ends 
    244244         END DO ! loop on jj ends 
     245      !  
     246      CALL lbc_lnk( zvrel(:,:), 'T', 1. ) 
     247      CALL lbc_lnk( hicol(:,:), 'T', 1. ) 
    245248 
    246249      ENDIF ! End of computation of frazil ice collection thickness 
     
    255258      ! This occurs if open water energy budget is negative 
    256259      nbpac = 0 
     260      npac(:) = 0 
     261      ! 
    257262      DO jj = 1, jpj 
    258263         DO ji = 1, jpi 
     
    315320         ! Keep old ice areas and volume in memory 
    316321         !----------------------------------------- 
    317          zv_old(:,:) = zv_i_1d(:,:)  
    318          za_old(:,:) = za_i_1d(:,:) 
    319  
     322         zv_old(1:nbpac,:) = zv_i_1d(1:nbpac,:)  
     323         za_old(1:nbpac,:) = za_i_1d(1:nbpac,:) 
    320324         !---------------------- 
    321325         ! Thickness of new ice 
     
    324328            zh_newice(ji) = hiccrit 
    325329         END DO 
    326          IF( fraz_swi == 1 ) zh_newice(:) = hicol_b(:) 
     330         IF( fraz_swi == 1 ) zh_newice(1:nbpac) = hicol_b(1:nbpac) 
    327331 
    328332         !---------------------- 
     
    331335         SELECT CASE ( num_sal ) 
    332336         CASE ( 1 )                    ! Sice = constant  
    333             zs_newice(:) = bulk_sal 
     337            zs_newice(1:nbpac) = bulk_sal 
    334338         CASE ( 2 )                    ! Sice = F(z,t) [Vancoppenolle et al (2005)] 
    335339            DO ji = 1, nbpac 
     
    339343            END DO 
    340344         CASE ( 3 )                    ! Sice = F(z) [multiyear ice] 
    341             zs_newice(:) =   2.3 
     345            zs_newice(1:nbpac) =   2.3 
    342346         END SELECT 
    343347 
     
    472476               za_i_1d(ji,jl) = zinda * za_i_1d(ji,jl)                
    473477               zv_i_1d(ji,jl) = zv_i_1d(ji,jl) + zv_newfra 
    474  
    475478               ! for remapping 
    476479               h_i_old (ji,nlay_i+1) = zv_newfra 
     
    479482 
    480483            ! --- Ice enthalpy remapping --- ! 
    481             IF( zv_newfra > 0._wp ) THEN 
    482                CALL lim_thd_ent( 1, nbpac, ze_i_1d(1:nbpac,:,jl) )  
    483             ENDIF 
    484  
     484            CALL lim_thd_ent( 1, nbpac, ze_i_1d(1:nbpac,:,jl) )  
    485485         ENDDO 
    486486 
     
    534534               DO ji = 1, jpi 
    535535                  ! heat content in Joules 
    536                   e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * area(ji,jj) * v_i(ji,jj,jl) / ( REAL( nlay_i ) * unit_fac )  
     536                  e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * area(ji,jj) * v_i(ji,jj,jl) / ( REAL( nlay_i ,wp ) * unit_fac )  
    537537               END DO 
    538538            END DO 
Note: See TracChangeset for help on using the changeset viewer.