Ignore:
Timestamp:
2020-04-08T21:37:59+02:00 (8 months ago)
Author:
techene
Message:

branch KERNEL-06 : merge with trunk@12698 #2385 - in duplcated files : changes to comply to the new trunk variables and some loop bug fixes

Location:
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3
Files:
173 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@HEAD         sette 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ABL/abl.F90

    r11305 r12724  
    1111   USE dom_oce, ONLY: e1t, e1u, e1v, e1f         ! scale factors for horizontal grid 
    1212   USE dom_oce, ONLY: e2t, e2u, e2v, e2f         !  
    13    USE dom_oce, ONLY: rdt                        ! oceanic time-step 
     13   USE dom_oce, ONLY: rn_Dt                      ! oceanic time-step 
    1414   USE sbc_oce, ONLY: ght_abl, ghw_abl, e3t_abl, e3w_abl, jpka   ! scale factors and altitudes of ABL grid points in the vertical  
    1515   
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ABL/ablmod.F90

    r12353 r12724  
    152152         DO jk = 3, jpkam1 
    153153            DO ji = 1, jpi   ! vector opt. 
    154                z_elem_a( ji,     jk              ) = - rdt_abl * Avt_abl( ji, jj, jk-1 ) / e3w_abl( jk-1 )   ! lower-diagonal 
    155                z_elem_c( ji,     jk              ) = - rdt_abl * Avt_abl( ji, jj, jk   ) / e3w_abl( jk   )   ! upper-diagonal        
     154               z_elem_a( ji,     jk              ) = - rDt_abl * Avt_abl( ji, jj, jk-1 ) / e3w_abl( jk-1 )   ! lower-diagonal 
     155               z_elem_c( ji,     jk              ) = - rDt_abl * Avt_abl( ji, jj, jk   ) / e3w_abl( jk   )   ! upper-diagonal        
    156156               z_elem_b( ji,     jk              ) = e3t_abl(jk) - z_elem_a( ji, jk ) - z_elem_c( ji, jk )   !       diagonal            
    157157            END DO 
     
    161161            ! Neumann at the bottom           
    162162            z_elem_a( ji,     2              ) = 0._wp 
    163             z_elem_c( ji,     2              ) = - rdt_abl * Avt_abl( ji, jj, 2   ) / e3w_abl( 2   )                                          
     163            z_elem_c( ji,     2              ) = - rDt_abl * Avt_abl( ji, jj, 2   ) / e3w_abl( 2   )                                          
    164164            ! Homogeneous Neumann at the top 
    165             z_elem_a( ji,     jpka           ) = - rdt_abl * Avt_abl( ji, jj, jpka ) / e3w_abl( jpka )  
     165            z_elem_a( ji,     jpka           ) = - rDt_abl * Avt_abl( ji, jj, jpka ) / e3w_abl( jpka )  
    166166            z_elem_c( ji,     jpka           ) = 0._wp 
    167167            z_elem_b( ji,     jpka           ) = e3t_abl( jpka ) - z_elem_a( ji,     jpka ) 
     
    184184                  zztmp2 = zztmp2 * pfrac_oce(ji,jj) + (1._wp - pfrac_oce(ji,jj)) * psen_ice(ji,jj) * ptm_su(ji,jj) 
    185185#endif               
    186                   z_elem_b( ji,     2                ) = e3t_abl( 2 ) - z_elem_c( ji, 2 ) + rdt_abl * zztmp1               
    187                   tq_abl  ( ji, jj, 2   , nt_a, jtra ) = e3t_abl( 2    ) * tq_abl  ( ji, jj, 2   , nt_n, jtra ) + rdt_abl * zztmp2                
     186                  z_elem_b( ji,     2                ) = e3t_abl( 2 ) - z_elem_c( ji, 2 ) + rDt_abl * zztmp1               
     187                  tq_abl  ( ji, jj, 2   , nt_a, jtra ) = e3t_abl( 2    ) * tq_abl  ( ji, jj, 2   , nt_n, jtra ) + rDt_abl * zztmp2                
    188188                  tq_abl  ( ji, jj, jpka, nt_a, jtra ) = e3t_abl( jpka ) * tq_abl  ( ji, jj, jpka, nt_n, jtra ) 
    189189               END DO  
     
    196196                  zztmp2 = zztmp2 * pfrac_oce(ji,jj) + (1._wp - pfrac_oce(ji,jj)) * pevp_ice(ji, jj) * pssq_ice(ji, jj)     
    197197#endif    
    198                   z_elem_b( ji,     2                ) = e3t_abl( 2 ) - z_elem_c( ji, 2 ) + rdt_abl * zztmp1 
    199                   tq_abl  ( ji, jj, 2   , nt_a, jtra ) = e3t_abl( 2    ) * tq_abl  ( ji, jj, 2   , nt_n, jtra ) + rdt_abl * zztmp2                
     198                  z_elem_b( ji,     2                ) = e3t_abl( 2 ) - z_elem_c( ji, 2 ) + rDt_abl * zztmp1 
     199                  tq_abl  ( ji, jj, 2   , nt_a, jtra ) = e3t_abl( 2    ) * tq_abl  ( ji, jj, 2   , nt_n, jtra ) + rDt_abl * zztmp2                
    200200                  tq_abl  ( ji, jj, jpka, nt_a, jtra ) = e3t_abl( jpka ) * tq_abl  ( ji, jj, jpka, nt_n, jtra ) 
    201201               END DO                                      
     
    242242         ! Advance u_abl & v_abl to time n+1 
    243243         DO_2D_11_11 
    244             zcff = ( fft_abl(ji,jj) * rdt_abl )*( fft_abl(ji,jj) * rdt_abl )  ! (f dt)**2 
     244            zcff = ( fft_abl(ji,jj) * rDt_abl )*( fft_abl(ji,jj) * rDt_abl )  ! (f dt)**2 
    245245    
    246246            u_abl( ji, jj, jk, nt_a ) = e3t_abl(jk) *(  & 
    247247               &        (1._wp-gamma_Cor*(1._wp-gamma_Cor)*zcff)*u_abl( ji, jj, jk, nt_n )    & 
    248                &                 +  rdt_abl * fft_abl(ji, jj) * v_abl ( ji , jj  , jk, nt_n ) )  & 
     248               &                 +  rDt_abl * fft_abl(ji, jj) * v_abl ( ji , jj  , jk, nt_n ) )  & 
    249249               &                               / (1._wp + gamma_Cor*gamma_Cor*zcff) 
    250250                
    251251            v_abl( ji, jj, jk, nt_a ) =  e3t_abl(jk) *(  & 
    252252               &        (1._wp-gamma_Cor*(1._wp-gamma_Cor)*zcff)*v_abl( ji, jj, jk, nt_n )   & 
    253                &                 -  rdt_abl * fft_abl(ji, jj) * u_abl ( ji   , jj, jk, nt_n )  ) & 
     253               &                 -  rDt_abl * fft_abl(ji, jj) * u_abl ( ji   , jj, jk, nt_n )  ) & 
    254254               &                                / (1._wp + gamma_Cor*gamma_Cor*zcff)                 
    255255         END_2D 
     
    264264               DO ji = 1, jpi  
    265265                  u_abl( ji, jj, jk, nt_a ) = u_abl( ji, jj, jk, nt_a )   & 
    266                      &                      - rdt_abl * e3t_abl(jk) * fft_abl(ji  , jj) * pgv_dta(ji  ,jj  ,jk) 
     266                     &                      - rDt_abl * e3t_abl(jk) * fft_abl(ji  , jj) * pgv_dta(ji  ,jj  ,jk) 
    267267                  v_abl( ji, jj, jk, nt_a ) = v_abl( ji, jj, jk, nt_a )   & 
    268                      &                      + rdt_abl * e3t_abl(jk) * fft_abl(ji, jj  ) * pgu_dta(ji  ,jj  ,jk) 
     268                     &                      + rDt_abl * e3t_abl(jk) * fft_abl(ji, jj  ) * pgu_dta(ji  ,jj  ,jk) 
    269269               END DO 
    270270            END DO 
     
    277277            DO jk = 1, jpka 
    278278               DO ji = 1, jpi  
    279                   u_abl( ji, jj, jk, nt_a ) = u_abl( ji, jj, jk, nt_a ) - rdt_abl * e3t_abl(jk) * pgu_dta(ji,jj,jk) 
    280                   v_abl( ji, jj, jk, nt_a ) = v_abl( ji, jj, jk, nt_a ) - rdt_abl * e3t_abl(jk) * pgv_dta(ji,jj,jk)   
     279                  u_abl( ji, jj, jk, nt_a ) = u_abl( ji, jj, jk, nt_a ) - rDt_abl * e3t_abl(jk) * pgu_dta(ji,jj,jk) 
     280                  v_abl( ji, jj, jk, nt_a ) = v_abl( ji, jj, jk, nt_a ) - rDt_abl * e3t_abl(jk) * pgv_dta(ji,jj,jk)   
    281281               ENDDO 
    282282            ENDDO 
     
    295295         DO jk = 3, jpkam1 
    296296            DO ji = 1, jpi   
    297                z_elem_a( ji,     jk ) = - rdt_abl * Avm_abl( ji, jj, jk-1 ) / e3w_abl( jk-1 )  ! lower-diagonal 
    298                z_elem_c( ji,     jk ) = - rdt_abl * Avm_abl( ji, jj, jk   ) / e3w_abl( jk   )  ! upper-diagonal                 
     297               z_elem_a( ji,     jk ) = - rDt_abl * Avm_abl( ji, jj, jk-1 ) / e3w_abl( jk-1 )  ! lower-diagonal 
     298               z_elem_c( ji,     jk ) = - rDt_abl * Avm_abl( ji, jj, jk   ) / e3w_abl( jk   )  ! upper-diagonal                 
    299299               z_elem_b( ji,     jk ) = e3t_abl(jk) - z_elem_a( ji, jk ) - z_elem_c( ji, jk )                             !       diagonal 
    300300            END DO 
     
    304304            !++ Surface boundary condition 
    305305            z_elem_a( ji,     2    ) = 0._wp 
    306             z_elem_c( ji,     2    ) = - rdt_abl * Avm_abl( ji, jj, 2   ) / e3w_abl( 2   )                                        
     306            z_elem_c( ji,     2    ) = - rDt_abl * Avm_abl( ji, jj, 2   ) / e3w_abl( 2   )                                        
    307307            ! 
    308308         zztmp1  = pcd_du(ji, jj) 
     
    313313         zztmp2 = zztmp2 * pfrac_oce(ji,jj) + (1._wp - pfrac_oce(ji,jj)) * pcd_du_ice(ji, jj) * zzice 
    314314#endif            
    315          z_elem_b( ji,     2       ) = e3t_abl( 2 ) - z_elem_c( ji, 2 ) + rdt_abl * zztmp1          
    316             u_abl( ji, jj,    2, nt_a ) =      u_abl( ji, jj,    2, nt_a ) + rdt_abl * zztmp2 
     315         z_elem_b( ji,     2       ) = e3t_abl( 2 ) - z_elem_c( ji, 2 ) + rDt_abl * zztmp1          
     316            u_abl( ji, jj,    2, nt_a ) =      u_abl( ji, jj,    2, nt_a ) + rDt_abl * zztmp2 
    317317          
    318318            !++ Top Neumann B.C. 
    319             !z_elem_a( ji,     jpka ) = - 0.5_wp * rdt_abl * ( Avm_abl( ji, jj, jpka )+ Avm_abl( ji+1, jj, jpka ) ) / e3w_abl( jpka )  
     319            !z_elem_a( ji,     jpka ) = - 0.5_wp * rDt_abl * ( Avm_abl( ji, jj, jpka )+ Avm_abl( ji+1, jj, jpka ) ) / e3w_abl( jpka )  
    320320            !z_elem_c( ji,     jpka ) = 0._wp 
    321321            !z_elem_b( ji,     jpka ) = e3t_abl( jpka ) - z_elem_a( ji,     jpka )                                                
     
    362362         DO jk = 3, jpkam1 
    363363            DO ji = 1, jpi    
    364                z_elem_a( ji,     jk ) = -rdt_abl * Avm_abl( ji, jj, jk-1 ) / e3w_abl( jk-1 )   ! lower-diagonal 
    365                z_elem_c( ji,     jk ) = -rdt_abl * Avm_abl( ji, jj, jk   ) / e3w_abl( jk   )   ! upper-diagonal               
     364               z_elem_a( ji,     jk ) = -rDt_abl * Avm_abl( ji, jj, jk-1 ) / e3w_abl( jk-1 )   ! lower-diagonal 
     365               z_elem_c( ji,     jk ) = -rDt_abl * Avm_abl( ji, jj, jk   ) / e3w_abl( jk   )   ! upper-diagonal               
    366366               z_elem_b( ji,     jk ) = e3t_abl(jk) - z_elem_a( ji, jk ) - z_elem_c( ji, jk )                              !       diagonal 
    367367            END DO 
     
    371371            !++ Surface boundary condition 
    372372            z_elem_a( ji,     2    ) = 0._wp 
    373             z_elem_c( ji,     2    ) = - rdt_abl * Avm_abl( ji, jj, 2   ) / e3w_abl( 2   )         
     373            z_elem_c( ji,     2    ) = - rDt_abl * Avm_abl( ji, jj, 2   ) / e3w_abl( 2   )         
    374374            ! 
    375375         zztmp1 = pcd_du(ji, jj) 
     
    380380         zztmp2 = zztmp2 * pfrac_oce(ji,jj) + (1._wp - pfrac_oce(ji,jj)) * pcd_du_ice(ji, jj) * zzice 
    381381#endif          
    382             z_elem_b( ji,     2       ) = e3t_abl( 2 ) - z_elem_c( ji, 2 ) + rdt_abl * zztmp1  
    383             v_abl( ji, jj,    2, nt_a ) =         v_abl( ji, jj, 2, nt_a ) + rdt_abl * zztmp2 
     382            z_elem_b( ji,     2       ) = e3t_abl( 2 ) - z_elem_c( ji, 2 ) + rDt_abl * zztmp1  
     383            v_abl( ji, jj,    2, nt_a ) =         v_abl( ji, jj, 2, nt_a ) + rDt_abl * zztmp2 
    384384            !++ Top Neumann B.C.             
    385             !z_elem_a( ji,     jpka ) = -rdt_abl * Avm_abl( ji, jj, jpka ) / e3w_abl( jpka )  
     385            !z_elem_a( ji,     jpka ) = -rDt_abl * Avm_abl( ji, jj, jpka ) / e3w_abl( jpka )  
    386386            !z_elem_c( ji,     jpka ) = 0._wp 
    387387            !z_elem_b( ji,     jpka ) = e3t_abl( jpka ) - z_elem_a( ji,     jpka )                                                
     
    436436               zcff2 = jp_alp3_dyn * zsig**3 + jp_alp2_dyn * zsig**2   & 
    437437                  &  + jp_alp1_dyn * zsig    + jp_alp0_dyn 
    438                zcff  = (1._wp-zmsk) + zmsk * zcff2 * rdt   ! zcff = 1 for masked points 
    439                                                            ! rdt = rdt_abl / nn_fsbc                           
     438               zcff  = (1._wp-zmsk) + zmsk * zcff2 * rn_Dt   ! zcff = 1 for masked points 
     439                                                             ! rn_Dt = rDt_abl / nn_fsbc                           
    440440               zcff  = zcff * rest_eq(ji,jj) 
    441441               z_cft( ji, jj, jk ) = zcff 
     
    460460            zcff2 = jp_alp3_tra * zsig**3 + jp_alp2_tra * zsig**2   & 
    461461               &  + jp_alp1_tra * zsig    + jp_alp0_tra 
    462             zcff  = (1._wp-zmsk) + zmsk * zcff2 * rdt   ! zcff = 1 for masked points 
    463                                                         ! rdt = rdt_abl / nn_fsbc                           
     462            zcff  = (1._wp-zmsk) + zmsk * zcff2 * rn_Dt   ! zcff = 1 for masked points 
     463                                                          ! rn_Dt = rDt_abl / nn_fsbc                           
    464464            !z_cft( ji, jj, jk ) = zcff 
    465465            tq_abl( ji, jj, jk, nt_a, jp_ta ) = (1._wp - zcff ) * tq_abl( ji, jj, jk, nt_a, jp_ta )   & 
     
    688688               zbuoy        = - Avt_abl( ji, jj, jk ) * zbn2( ji, jj, jk )  
    689689                
    690                z_elem_a( ji,     jk )   = - 0.5_wp * rdt_abl * rn_Sch * ( Avm_abl( ji, jj, jk   )+Avm_abl( ji, jj, jk-1 ) ) / e3t_abl( jk   ) ! lower-diagonal 
    691                z_elem_c( ji,     jk )   = - 0.5_wp * rdt_abl * rn_Sch * ( Avm_abl( ji, jj, jk   )+Avm_abl( ji, jj, jk+1 ) ) / e3t_abl( jk+1 ) ! upper-diagonal           
     690               z_elem_a( ji,     jk )   = - 0.5_wp * rDt_abl * rn_Sch * ( Avm_abl( ji, jj, jk   )+Avm_abl( ji, jj, jk-1 ) ) / e3t_abl( jk   ) ! lower-diagonal 
     691               z_elem_c( ji,     jk )   = - 0.5_wp * rDt_abl * rn_Sch * ( Avm_abl( ji, jj, jk   )+Avm_abl( ji, jj, jk+1 ) ) / e3t_abl( jk+1 ) ! upper-diagonal           
    692692               IF( (zbuoy + zshear) .gt. 0.) THEN    ! Patankar trick to avoid negative values of TKE 
    693693                  z_elem_b( ji,     jk )   = e3w_abl(jk) - z_elem_a( ji, jk ) - z_elem_c( ji, jk )   & 
    694                      &                     + e3w_abl(jk) * rdt_abl * rn_Ceps * sqrt(tke_abl( ji, jj, jk, nt_n )) / mxl_abl(ji,jj,jk)     ! diagonal        
    695                   tke_abl( ji, jj, jk, nt_a )  = e3w_abl(jk) * ( tke_abl( ji, jj, jk, nt_n ) + rdt_abl * ( zbuoy + zshear ) )             ! right-hand-side 
     694                     &                     + e3w_abl(jk) * rDt_abl * rn_Ceps * sqrt(tke_abl( ji, jj, jk, nt_n )) / mxl_abl(ji,jj,jk)     ! diagonal        
     695                  tke_abl( ji, jj, jk, nt_a )  = e3w_abl(jk) * ( tke_abl( ji, jj, jk, nt_n ) + rDt_abl * ( zbuoy + zshear ) )             ! right-hand-side 
    696696               ELSE 
    697697                  z_elem_b( ji,     jk )   = e3w_abl(jk) - z_elem_a( ji, jk ) - z_elem_c( ji, jk )   & 
    698                      &                     + e3w_abl(jk) * rdt_abl * rn_Ceps * sqrt(tke_abl( ji, jj, jk, nt_n )) / mxl_abl(ji,jj,jk)   &  ! diagonal     
    699                      &                     - e3w_abl(jk) * rdt_abl * zbuoy    
    700                   tke_abl( ji, jj, jk, nt_a )  = e3w_abl(jk) * ( tke_abl( ji, jj, jk, nt_n ) + rdt_abl *  zshear )             ! right-hand-side                      
     698                     &                     + e3w_abl(jk) * rDt_abl * rn_Ceps * sqrt(tke_abl( ji, jj, jk, nt_n )) / mxl_abl(ji,jj,jk)   &  ! diagonal     
     699                     &                     - e3w_abl(jk) * rDt_abl * zbuoy    
     700                  tke_abl( ji, jj, jk, nt_a )  = e3w_abl(jk) * ( tke_abl( ji, jj, jk, nt_n ) + rDt_abl *  zshear )             ! right-hand-side                      
    701701               END IF 
    702702            END DO 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ABL/ablrst.F90

    r11945 r12724  
    7474            ENDIF 
    7575            ! 
    76             CALL iom_open( TRIM(clpath)//TRIM(clname), numraw, ldwrt = .TRUE., kdlev = jpka ) 
     76            CALL iom_open( TRIM(clpath)//TRIM(clname), numraw, ldwrt = .TRUE., kdlev = jpka, cdcomp = 'ABL' ) 
    7777            lrst_abl = .TRUE. 
    7878         ENDIF 
     
    146146      ENDIF 
    147147 
    148       CALL iom_open ( TRIM(cn_ablrst_indir)//'/'//cn_ablrst_in, numrar, kdlev = jpka ) 
     148      CALL iom_open ( TRIM(cn_ablrst_indir)//'/'//cn_ablrst_in, numrar ) 
    149149 
    150150      ! Time info 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ABL/par_abl.F90

    r11858 r12724  
    7676   REAL(wp), PUBLIC, PARAMETER ::   gamma_Cor  = 0.55_wp 
    7777   ! ABL timestep 
    78    REAL(wp), PUBLIC            :: rdt_abl 
     78   REAL(wp), PUBLIC            :: rDt_abl 
    7979 
    8080   !!--------------------------------------------------------------------- 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ABL/sbcabl.F90

    r12353 r12724  
    7575      !!--------------------------------------------------------------------- 
    7676 
    77       REWIND( numnam_ref )              ! Namelist namsbc_abl in reference namelist : ABL parameters 
     77      ! Namelist namsbc_abl in reference namelist : ABL parameters 
    7878      READ  ( numnam_ref, namsbc_abl, IOSTAT = ios, ERR = 901 ) 
    7979901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_abl in reference namelist' ) 
    80       ! 
    81       REWIND( numnam_cfg )              ! Namelist namsbc_abl in configuration namelist : ABL parameters 
     80      ! Namelist namsbc_abl in configuration namelist : ABL parameters 
    8281      READ  ( numnam_cfg, namsbc_abl, IOSTAT = ios, ERR = 902 ) 
    8382902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_abl in configuration namelist' ) 
     
    202201 
    203202      ! ABL timestep 
    204       rdt_abl = nn_fsbc * rdt 
     203      rDt_abl = nn_fsbc * rn_Dt 
    205204 
    206205      ! Check parameters for dynamics 
    207206      zcff  = ( jp_alp3_dyn * jp_bmin**3 + jp_alp2_dyn * jp_bmin**2   & 
    208          &    + jp_alp1_dyn * jp_bmin    + jp_alp0_dyn ) * rdt_abl 
     207         &    + jp_alp1_dyn * jp_bmin    + jp_alp0_dyn ) * rDt_abl 
    209208      zcff1 = ( jp_alp3_dyn * jp_bmax**3 + jp_alp2_dyn * jp_bmax**2   & 
    210          &    + jp_alp1_dyn * jp_bmax    + jp_alp0_dyn ) * rdt_abl 
     209         &    + jp_alp1_dyn * jp_bmax    + jp_alp0_dyn ) * rDt_abl 
    211210      IF(lwp) THEN 
    212211         IF(nn_dyn_restore > 0) THEN 
     
    225224      ! Check parameters for active tracers 
    226225      zcff  = ( jp_alp3_tra * jp_bmin**3 + jp_alp2_tra * jp_bmin**2   & 
    227          &    + jp_alp1_tra * jp_bmin    + jp_alp0_tra ) * rdt_abl 
     226         &    + jp_alp1_tra * jp_bmin    + jp_alp0_tra ) * rDt_abl 
    228227      zcff1 = ( jp_alp3_tra * jp_bmax**3 + jp_alp2_tra * jp_bmax**2   & 
    229          &    + jp_alp1_tra * jp_bmax    + jp_alp0_tra ) * rdt_abl 
     228         &    + jp_alp1_tra * jp_bmax    + jp_alp0_tra ) * rDt_abl 
    230229      IF(lwp) THEN 
    231230         WRITE(numout,*) ' ABL Minimum value for tracers restoring = ',zcff 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/ice.F90

    r11627 r12724  
    150150   REAL(wp), PUBLIC ::   rn_ecc           !: eccentricity of the elliptical yield curve 
    151151   INTEGER , PUBLIC ::   nn_nevp          !: number of iterations for subcycling 
    152    REAL(wp), PUBLIC ::   rn_relast        !: ratio => telast/rdt_ice (1/3 or 1/9 depending on nb of subcycling nevp)  
     152   REAL(wp), PUBLIC ::   rn_relast        !: ratio => telast/rDt_ice (1/3 or 1/9 depending on nb of subcycling nevp)  
    153153   ! 
    154154   !                                     !!** ice-advection namelist (namdyn_adv) ** 
     
    207207   !                                     !!** some other parameters  
    208208   INTEGER , PUBLIC ::   kt_ice           !: iteration number 
    209    REAL(wp), PUBLIC ::   rdt_ice          !: ice time step 
    210    REAL(wp), PUBLIC ::   r1_rdtice        !: = 1. / rdt_ice 
     209   REAL(wp), PUBLIC ::   rDt_ice          !: ice time step 
     210   REAL(wp), PUBLIC ::   r1_Dt_ice        !: = 1. / rDt_ice 
    211211   REAL(wp), PUBLIC ::   r1_nlay_i        !: 1 / nlay_i 
    212212   REAL(wp), PUBLIC ::   r1_nlay_s        !: 1 / nlay_s  
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icecor.F90

    r12377 r12724  
    8686      IF ( nn_icesal == 2 ) THEN    !  salinity must stay in bounds [Simin,Simax]        ! 
    8787         !                          !----------------------------------------------------- 
    88          zzc = rhoi * r1_rdtice 
     88         zzc = rhoi * r1_Dt_ice 
    8989         DO jl = 1, jpl 
    9090            DO_2D_11_11 
     
    123123         ! 
    124124         IF( ln_icediachk .OR. iom_use('hfxdhc') ) THEN 
    125             diag_heat(:,:) = - SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_rdtice &      ! W.m-2 
    126                &             - SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_rdtice 
    127             diag_sice(:,:) =   SUM(     sv_i(:,:,:)          - sv_i_b(:,:,:)                  , dim=3 ) * r1_rdtice * rhoi 
    128             diag_vice(:,:) =   SUM(     v_i (:,:,:)          - v_i_b (:,:,:)                  , dim=3 ) * r1_rdtice * rhoi 
    129             diag_vsnw(:,:) =   SUM(     v_s (:,:,:)          - v_s_b (:,:,:)                  , dim=3 ) * r1_rdtice * rhos 
     125            diag_heat(:,:) = - SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_Dt_ice &      ! W.m-2 
     126               &             - SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_Dt_ice 
     127            diag_sice(:,:) =   SUM(     sv_i(:,:,:)          - sv_i_b(:,:,:)                  , dim=3 ) * r1_Dt_ice * rhoi 
     128            diag_vice(:,:) =   SUM(     v_i (:,:,:)          - v_i_b (:,:,:)                  , dim=3 ) * r1_Dt_ice * rhoi 
     129            diag_vsnw(:,:) =   SUM(     v_s (:,:,:)          - v_s_b (:,:,:)                  , dim=3 ) * r1_Dt_ice * rhos 
    130130         ENDIF 
    131131         !                       ! concentration tendency (dynamics) 
    132132         IF( iom_use('afxdyn') .OR. iom_use('afxthd') .OR. iom_use('afxtot') ) THEN  
    133             zafx(:,:) = SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_rdtice  
     133            zafx(:,:) = SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_Dt_ice  
    134134            CALL iom_put( 'afxdyn' , zafx ) 
    135135         ENDIF 
     
    137137      CASE( 2 )                        !--- thermo trend diagnostics & ice aging 
    138138         ! 
    139          oa_i(:,:,:) = oa_i(:,:,:) + a_i(:,:,:) * rdt_ice   ! ice natural aging incrementation 
     139         oa_i(:,:,:) = oa_i(:,:,:) + a_i(:,:,:) * rDt_ice   ! ice natural aging incrementation 
    140140         ! 
    141141         IF( ln_icediachk .OR. iom_use('hfxdhc') ) THEN 
    142142            diag_heat(:,:) = diag_heat(:,:) & 
    143                &             - SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_rdtice & 
    144                &             - SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_rdtice 
     143               &             - SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_Dt_ice & 
     144               &             - SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_Dt_ice 
    145145            diag_sice(:,:) = diag_sice(:,:) & 
    146                &             + SUM(     sv_i(:,:,:)          - sv_i_b(:,:,:)                  , dim=3 ) * r1_rdtice * rhoi 
     146               &             + SUM(     sv_i(:,:,:)          - sv_i_b(:,:,:)                  , dim=3 ) * r1_Dt_ice * rhoi 
    147147            diag_vice(:,:) = diag_vice(:,:) & 
    148                &             + SUM(     v_i (:,:,:)          - v_i_b (:,:,:)                  , dim=3 ) * r1_rdtice * rhoi 
     148               &             + SUM(     v_i (:,:,:)          - v_i_b (:,:,:)                  , dim=3 ) * r1_Dt_ice * rhoi 
    149149            diag_vsnw(:,:) = diag_vsnw(:,:) & 
    150                &             + SUM(     v_s (:,:,:)          - v_s_b (:,:,:)                  , dim=3 ) * r1_rdtice * rhos 
     150               &             + SUM(     v_s (:,:,:)          - v_s_b (:,:,:)                  , dim=3 ) * r1_Dt_ice * rhos 
    151151            CALL iom_put ( 'hfxdhc' , diag_heat )  
    152152         ENDIF 
    153153         !                       ! concentration tendency (total + thermo) 
    154154         IF( iom_use('afxdyn') .OR. iom_use('afxthd') .OR. iom_use('afxtot') ) THEN  
    155             zafx(:,:) = zafx(:,:) + SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_rdtice 
    156             CALL iom_put( 'afxthd' , SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_rdtice ) 
     155            zafx(:,:) = zafx(:,:) + SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_Dt_ice 
     156            CALL iom_put( 'afxthd' , SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_Dt_ice ) 
    157157            CALL iom_put( 'afxtot' , zafx ) 
    158158         ENDIF 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icectl.F90

    r12377 r12724  
    104104 
    105105         ! -- mass diag -- ! 
    106          zdiag_mass = ( glob_sum( 'icectl', SUM( v_i * rhoi + v_s * rhos, dim=3 ) * e1e2t ) - pdiag_v ) * r1_rdtice       & 
     106         zdiag_mass = ( glob_sum( 'icectl', SUM( v_i * rhoi + v_s * rhos, dim=3 ) * e1e2t ) - pdiag_v ) * r1_Dt_ice       & 
    107107            &         + glob_sum( 'icectl', ( wfx_bog + wfx_bom + wfx_sum + wfx_sni + wfx_opw + wfx_res + wfx_dyn +       & 
    108108            &                                 wfx_lam + wfx_pnd + wfx_snw_sni + wfx_snw_sum + wfx_snw_dyn + wfx_snw_sub + & 
     
    111111         ! 
    112112         ! -- salt diag -- ! 
    113          zdiag_salt = ( glob_sum( 'icectl', SUM( sv_i * rhoi , dim=3 ) * e1e2t ) - pdiag_s ) * r1_rdtice  & 
     113         zdiag_salt = ( glob_sum( 'icectl', SUM( sv_i * rhoi , dim=3 ) * e1e2t ) - pdiag_s ) * r1_Dt_ice  & 
    114114            &         + glob_sum( 'icectl', ( sfx_bri + sfx_bog + sfx_bom + sfx_sum + sfx_sni +           & 
    115115            &                                 sfx_opw + sfx_res + sfx_dyn + sfx_sub + sfx_lam ) * e1e2t ) & 
     
    118118         ! -- heat diag -- ! 
    119119         zdiag_heat = ( glob_sum( 'icectl', ( SUM(SUM(e_i, dim=4), dim=3) + SUM(SUM(e_s, dim=4), dim=3) ) * e1e2t ) - pdiag_t & 
    120             &         ) * r1_rdtice                                                                                           & 
     120            &         ) * r1_Dt_ice                                                                                           & 
    121121            &         + glob_sum( 'icectl', (  hfx_sum + hfx_bom + hfx_bog + hfx_dif + hfx_opw + hfx_snw                      & 
    122122            &                                - hfx_thd - hfx_dyn - hfx_res - hfx_sub - hfx_spr ) * e1e2t )                    & 
     
    141141            ! check conservation issues 
    142142            IF( ABS(zdiag_mass) > zchk_m * rn_icechk_glo * zarea ) & 
    143                &                   WRITE(numout,*)   cd_routine,' : violation mass cons. [kg] = ',zdiag_mass * rdt_ice 
     143               &                   WRITE(numout,*)   cd_routine,' : violation mass cons. [kg] = ',zdiag_mass * rDt_ice 
    144144            IF( ABS(zdiag_salt) > zchk_s * rn_icechk_glo * zarea ) & 
    145                &                   WRITE(numout,*)   cd_routine,' : violation salt cons. [g]  = ',zdiag_salt * rdt_ice 
     145               &                   WRITE(numout,*)   cd_routine,' : violation salt cons. [g]  = ',zdiag_salt * rDt_ice 
    146146            IF( ABS(zdiag_heat) > zchk_t * rn_icechk_glo * zarea ) & 
    147                &                   WRITE(numout,*)   cd_routine,' : violation heat cons. [J]  = ',zdiag_heat * rdt_ice 
     147               &                   WRITE(numout,*)   cd_routine,' : violation heat cons. [J]  = ',zdiag_heat * rDt_ice 
    148148            ! check negative values 
    149149            IF( zdiag_vmin  < 0. ) WRITE(numout,*)   cd_routine,' : violation v_i < 0         = ',zdiag_vmin 
     
    160160            !    it does not mean UM is not conservative (it is checked with above prints) => update (09/2019): same for Prather now 
    161161            !IF( ln_adv_Pra .AND. ABS(zvtrp) > zchk_m * rn_icechk_glo * zarea .AND. cd_routine == 'icedyn_adv' ) & 
    162             !   &                   WRITE(numout,*)   cd_routine,' : violation adv scheme [kg] = ',zvtrp * rdt_ice 
     162            !   &                   WRITE(numout,*)   cd_routine,' : violation adv scheme [kg] = ',zvtrp * rDt_ice 
    163163         ENDIF 
    164164         ! 
     
    201201      IF( lwp ) THEN 
    202202         IF( ABS(zdiag_mass) > zchk_m * rn_icechk_glo * zarea ) & 
    203             &                   WRITE(numout,*) cd_routine,' : violation mass cons. [kg] = ',zdiag_mass * rdt_ice 
     203            &                   WRITE(numout,*) cd_routine,' : violation mass cons. [kg] = ',zdiag_mass * rDt_ice 
    204204         IF( ABS(zdiag_salt) > zchk_s * rn_icechk_glo * zarea ) & 
    205             &                   WRITE(numout,*) cd_routine,' : violation salt cons. [g]  = ',zdiag_salt * rdt_ice 
    206          !!IF( ABS(zdiag_heat) > zchk_t * rn_icechk_glo * zarea ) WRITE(numout,*) cd_routine,' : violation heat cons. [J]  = ',zdiag_heat * rdt_ice 
     205            &                   WRITE(numout,*) cd_routine,' : violation salt cons. [g]  = ',zdiag_salt * rDt_ice 
     206         !!IF( ABS(zdiag_heat) > zchk_t * rn_icechk_glo * zarea ) WRITE(numout,*) cd_routine,' : violation heat cons. [J]  = ',zdiag_heat * rDt_ice 
    207207      ENDIF 
    208208      ! 
     
    250250 
    251251         ! -- mass diag -- ! 
    252          zdiag_mass =   ( SUM( v_i * rhoi + v_s * rhos, dim=3 ) - pdiag_v ) * r1_rdtice                             & 
     252         zdiag_mass =   ( SUM( v_i * rhoi + v_s * rhos, dim=3 ) - pdiag_v ) * r1_Dt_ice                             & 
    253253            &         + ( wfx_bog + wfx_bom + wfx_sum + wfx_sni + wfx_opw + wfx_res + wfx_dyn + wfx_lam + wfx_pnd + & 
    254254            &             wfx_snw_sni + wfx_snw_sum + wfx_snw_dyn + wfx_snw_sub + wfx_ice_sub + wfx_spr )           & 
     
    257257         ! 
    258258         ! -- salt diag -- ! 
    259          zdiag_salt =   ( SUM( sv_i * rhoi , dim=3 ) - pdiag_s ) * r1_rdtice                                                  & 
     259         zdiag_salt =   ( SUM( sv_i * rhoi , dim=3 ) - pdiag_s ) * r1_Dt_ice                                                  & 
    260260            &         + ( sfx_bri + sfx_bog + sfx_bom + sfx_sum + sfx_sni + sfx_opw + sfx_res + sfx_dyn + sfx_sub + sfx_lam ) & 
    261261            &         - pdiag_fs 
     
    263263         ! 
    264264         ! -- heat diag -- ! 
    265          zdiag_heat =   ( SUM( SUM( e_i, dim=4 ), dim=3 ) + SUM( SUM( e_s, dim=4 ), dim=3 ) - pdiag_t ) * r1_rdtice & 
     265         zdiag_heat =   ( SUM( SUM( e_i, dim=4 ), dim=3 ) + SUM( SUM( e_s, dim=4 ), dim=3 ) - pdiag_t ) * r1_Dt_ice & 
    266266            &         + (  hfx_sum + hfx_bom + hfx_bog + hfx_dif + hfx_opw + hfx_snw                                &  
    267267            &            - hfx_thd - hfx_dyn - hfx_res - hfx_sub - hfx_spr )                                        & 
     
    331331      IF(lwp) WRITE(numout,*)                 
    332332 
    333       CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE., kdlev = jpl ) 
     333      CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE., kdlev = jpl, cdcomp = 'ICE' ) 
    334334       
    335335      CALL iom_rstput( 0, 0, inum, 'cons_mass', pdiag_mass(:,:) , ktype = jp_r8 )    ! ice mass spurious lost/gain 
     
    455455      DO jl = 1, jpl 
    456456         DO_2D_11_11 
    457             IF ( ( ( ABS( o_i(ji,jj,jl) ) > rdt_ice ) .OR. & 
     457            IF ( ( ( ABS( o_i(ji,jj,jl) ) > rDt_ice ) .OR. & 
    458458                   ( ABS( o_i(ji,jj,jl) ) < 0._wp) ) .AND. & 
    459459                          ( a_i(ji,jj,jl) > 0._wp ) ) THEN 
     
    651651               WRITE(numout,*) ' hfx_res      : ', hfx_res(ji,jj) 
    652652               WRITE(numout,*) ' qsb_ice_bot  : ', qsb_ice_bot(ji,jj)  
    653                WRITE(numout,*) ' qlead        : ', qlead(ji,jj) * r1_rdtice 
     653               WRITE(numout,*) ' qlead        : ', qlead(ji,jj) * r1_Dt_ice 
    654654               WRITE(numout,*) 
    655655               WRITE(numout,*) ' - Salt fluxes at bottom interface ***' 
     
    725725       
    726726      CALL prt_ctl_info(' ') 
    727       CALL prt_ctl_info(' - Heat / FW fluxes : ') 
    728       CALL prt_ctl_info('   ~~~~~~~~~~~~~~~~~~ ') 
    729       CALL prt_ctl(tab2d_1=sst_m  , clinfo1= ' sst   : ', tab2d_2=sss_m     , clinfo2= ' sss       : ') 
    730       CALL prt_ctl(tab2d_1=qsr    , clinfo1= ' qsr   : ', tab2d_2=qns       , clinfo2= ' qns       : ') 
    731       CALL prt_ctl(tab2d_1=emp    , clinfo1= ' emp   : ', tab2d_2=sfx       , clinfo2= ' sfx       : ') 
    732        
    733       CALL prt_ctl_info(' ') 
    734727      CALL prt_ctl_info(' - Stresses : ') 
    735728      CALL prt_ctl_info('   ~~~~~~~~~~ ') 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icedia.F90

    r12377 r12724  
    109109      ! ---------------------------! 
    110110      ! they must be kept outside an IF(iom_use) because of the call to dia_rst below 
    111       z_frc_volbot = r1_rau0 * glob_sum( 'icedia', -( wfx_ice(:,:) + wfx_snw(:,:) + wfx_err_sub(:,:) ) * e1e2t(:,:) ) * 1.e-9   ! freshwater flux ice/snow-ocean  
    112       z_frc_voltop = r1_rau0 * glob_sum( 'icedia', -( wfx_sub(:,:) + wfx_spr(:,:) )                    * e1e2t(:,:) ) * 1.e-9   ! freshwater flux ice/snow-atm 
    113       z_frc_sal    = r1_rau0 * glob_sum( 'icedia', -      sfx(:,:)                                     * e1e2t(:,:) ) * 1.e-9   ! salt fluxes ice/snow-ocean 
     111      z_frc_volbot = r1_rho0 * glob_sum( 'icedia', -( wfx_ice(:,:) + wfx_snw(:,:) + wfx_err_sub(:,:) ) * e1e2t(:,:) ) * 1.e-9   ! freshwater flux ice/snow-ocean  
     112      z_frc_voltop = r1_rho0 * glob_sum( 'icedia', -( wfx_sub(:,:) + wfx_spr(:,:) )                    * e1e2t(:,:) ) * 1.e-9   ! freshwater flux ice/snow-atm 
     113      z_frc_sal    = r1_rho0 * glob_sum( 'icedia', -      sfx(:,:)                                     * e1e2t(:,:) ) * 1.e-9   ! salt fluxes ice/snow-ocean 
    114114      z_frc_tembot =           glob_sum( 'icedia',  qt_oce_ai(:,:)                                     * e1e2t(:,:) ) * 1.e-20  ! heat on top of ocean (and below ice) 
    115115      z_frc_temtop =           glob_sum( 'icedia',  qt_atm_oi(:,:)                                     * e1e2t(:,:) ) * 1.e-20  ! heat on top of ice-coean 
    116116      ! 
    117       frc_voltop  = frc_voltop  + z_frc_voltop  * rdt_ice ! km3 
    118       frc_volbot  = frc_volbot  + z_frc_volbot  * rdt_ice ! km3 
    119       frc_sal     = frc_sal     + z_frc_sal     * rdt_ice ! km3*pss 
    120       frc_temtop  = frc_temtop  + z_frc_temtop  * rdt_ice ! 1.e20 J 
    121       frc_tembot  = frc_tembot  + z_frc_tembot  * rdt_ice ! 1.e20 J 
     117      frc_voltop  = frc_voltop  + z_frc_voltop  * rDt_ice ! km3 
     118      frc_volbot  = frc_volbot  + z_frc_volbot  * rDt_ice ! km3 
     119      frc_sal     = frc_sal     + z_frc_sal     * rDt_ice ! km3*pss 
     120      frc_temtop  = frc_temtop  + z_frc_temtop  * rDt_ice ! 1.e20 J 
     121      frc_tembot  = frc_tembot  + z_frc_tembot  * rDt_ice ! 1.e20 J 
    122122 
    123123      CALL iom_put( 'ibgfrcvoltop' , frc_voltop )   ! vol  forcing ice/snw-atm          (km3 equivalent ocean water)  
     
    128128 
    129129      IF(  iom_use('ibgfrchfxtop') .OR. iom_use('ibgfrchfxbot') ) THEN 
    130          CALL iom_put( 'ibgfrchfxtop' , frc_temtop * z1_e1e2 * 1.e-20 * kt*rdt ) ! heat on top of ice/snw/ocean      (W/m2) 
    131          CALL iom_put( 'ibgfrchfxbot' , frc_tembot * z1_e1e2 * 1.e-20 * kt*rdt ) ! heat on top of ocean(below ice)   (W/m2)  
     130         CALL iom_put( 'ibgfrchfxtop' , frc_temtop * z1_e1e2 * 1.e-20 * kt*rn_Dt ) ! heat on top of ice/snw/ocean      (W/m2) 
     131         CALL iom_put( 'ibgfrchfxbot' , frc_tembot * z1_e1e2 * 1.e-20 * kt*rn_Dt ) ! heat on top of ocean(below ice)   (W/m2)  
    132132      ENDIF 
    133133       
     
    137137      IF(  iom_use('ibgvolume') .OR. iom_use('ibgsaltco') .OR. iom_use('ibgheatco') .OR. iom_use('ibgheatfx') ) THEN 
    138138             
    139          zdiff_vol = r1_rau0 * glob_sum( 'icedia', ( rhoi*vt_i(:,:) + rhos*vt_s(:,:) - vol_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9   ! freshwater trend (km3)  
    140          zdiff_sal = r1_rau0 * glob_sum( 'icedia', ( rhoi*st_i(:,:)                  - sal_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9   ! salt content trend (km3*pss) 
     139         zdiff_vol = r1_rho0 * glob_sum( 'icedia', ( rhoi*vt_i(:,:) + rhos*vt_s(:,:) - vol_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9   ! freshwater trend (km3)  
     140         zdiff_sal = r1_rho0 * glob_sum( 'icedia', ( rhoi*st_i(:,:)                  - sal_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9   ! salt content trend (km3*pss) 
    141141         zdiff_tem =           glob_sum( 'icedia', ( et_i(:,:) + et_s(:,:)           - tem_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-20  ! heat content trend (1.e20 J) 
    142142         !                               + SUM( qevap_ice * a_i_b, dim=3 )       !! clem: I think this term should not be there (but needs a check) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icedyn_adv.F90

    r12377 r12724  
    9393      ! diagnostics 
    9494      !------------ 
    95       diag_trp_ei(:,:) = SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_rdtice 
    96       diag_trp_es(:,:) = SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_rdtice 
    97       diag_trp_sv(:,:) = SUM(     sv_i(:,:,:)          - sv_i_b(:,:,:)                  , dim=3 ) * r1_rdtice 
    98       diag_trp_vi(:,:) = SUM(     v_i (:,:,:)          - v_i_b (:,:,:)                  , dim=3 ) * r1_rdtice 
    99       diag_trp_vs(:,:) = SUM(     v_s (:,:,:)          - v_s_b (:,:,:)                  , dim=3 ) * r1_rdtice 
     95      diag_trp_ei(:,:) = SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_Dt_ice 
     96      diag_trp_es(:,:) = SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_Dt_ice 
     97      diag_trp_sv(:,:) = SUM(     sv_i(:,:,:)          - sv_i_b(:,:,:)                  , dim=3 ) * r1_Dt_ice 
     98      diag_trp_vi(:,:) = SUM(     v_i (:,:,:)          - v_i_b (:,:,:)                  , dim=3 ) * r1_Dt_ice 
     99      diag_trp_vs(:,:) = SUM(     v_s (:,:,:)          - v_s_b (:,:,:)                  , dim=3 ) * r1_Dt_ice 
    100100      IF( iom_use('icemtrp') )   CALL iom_put( 'icemtrp' ,  diag_trp_vi * rhoi          )   ! ice mass transport 
    101101      IF( iom_use('snwmtrp') )   CALL iom_put( 'snwmtrp' ,  diag_trp_vs * rhos          )   ! snw mass transport 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icedyn_adv_pra.F90

    r12377 r12724  
    122122      !        Note: the advection split is applied at the next time-step in order to avoid blocking global comm. 
    123123      !              this should not affect too much the stability 
    124       zcflnow(1) =                  MAXVAL( ABS( pu_ice(:,:) ) * rdt_ice * r1_e1u(:,:) ) 
    125       zcflnow(1) = MAX( zcflnow(1), MAXVAL( ABS( pv_ice(:,:) ) * rdt_ice * r1_e2v(:,:) ) ) 
     124      zcflnow(1) =                  MAXVAL( ABS( pu_ice(:,:) ) * rDt_ice * r1_e1u(:,:) ) 
     125      zcflnow(1) = MAX( zcflnow(1), MAXVAL( ABS( pv_ice(:,:) ) * rDt_ice * r1_e2v(:,:) ) ) 
    126126       
    127127      ! non-blocking global communication send zcflnow and receive zcflprv 
     
    131131      ELSE                         ;   icycle = 1 
    132132      ENDIF 
    133       zdt = rdt_ice / REAL(icycle) 
     133      zdt = rDt_ice / REAL(icycle) 
    134134       
    135135      ! --- transport --- ! 
     
    687687            IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 
    688688               ! 
    689                zvs_excess = MAX( 0._wp, pv_s(ji,jj,jl) - pv_i(ji,jj,jl) * (rau0-rhoi) * r1_rhos ) 
     689               zvs_excess = MAX( 0._wp, pv_s(ji,jj,jl) - pv_i(ji,jj,jl) * (rho0-rhoi) * r1_rhos ) 
    690690               ! 
    691691               IF( zvs_excess > 0._wp ) THEN   ! snow-ice interface deplets below the ocean surface 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icedyn_adv_umx.F90

    r12377 r12724  
    128128      !        Note: the advection split is applied at the next time-step in order to avoid blocking global comm. 
    129129      !              this should not affect too much the stability 
    130       zcflnow(1) =                  MAXVAL( ABS( pu_ice(:,:) ) * rdt_ice * r1_e1u(:,:) ) 
    131       zcflnow(1) = MAX( zcflnow(1), MAXVAL( ABS( pv_ice(:,:) ) * rdt_ice * r1_e2v(:,:) ) ) 
     130      zcflnow(1) =                  MAXVAL( ABS( pu_ice(:,:) ) * rDt_ice * r1_e1u(:,:) ) 
     131      zcflnow(1) = MAX( zcflnow(1), MAXVAL( ABS( pv_ice(:,:) ) * rDt_ice * r1_e2v(:,:) ) ) 
    132132       
    133133      ! non-blocking global communication send zcflnow and receive zcflprv 
     
    137137      ELSE                         ;   icycle = 1 
    138138      ENDIF 
    139       zdt = rdt_ice / REAL(icycle) 
     139      zdt = rDt_ice / REAL(icycle) 
    140140 
    141141      ! --- transport --- ! 
     
    15051505            IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 
    15061506               ! 
    1507                zvs_excess = MAX( 0._wp, pv_s(ji,jj,jl) - pv_i(ji,jj,jl) * (rau0-rhoi) * r1_rhos ) 
     1507               zvs_excess = MAX( 0._wp, pv_s(ji,jj,jl) - pv_i(ji,jj,jl) * (rho0-rhoi) * r1_rhos ) 
    15081508               ! 
    15091509               IF( zvs_excess > 0._wp ) THEN   ! snow-ice interface deplets below the ocean surface 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icedyn_rdgrft.F90

    r12377 r12724  
    250250               ELSE 
    251251                  iterate_ridging  = 1 
    252                   zdivu      (ji) = zfac * r1_rdtice 
     252                  zdivu      (ji) = zfac * r1_Dt_ice 
    253253                  closing_net(ji) = MAX( 0._wp, -zdivu(ji) ) 
    254254                  opning     (ji) = MAX( 0._wp,  zdivu(ji) ) 
     
    455455      DO jl = 1, jpl 
    456456         DO ji = 1, npti 
    457             zfac = apartf(ji,jl) * closing_gross(ji) * rdt_ice 
     457            zfac = apartf(ji,jl) * closing_gross(ji) * rDt_ice 
    458458            IF( zfac > pa_i(ji,jl) .AND. apartf(ji,jl) /= 0._wp ) THEN 
    459                closing_gross(ji) = pa_i(ji,jl) / apartf(ji,jl) * r1_rdtice 
     459               closing_gross(ji) = pa_i(ji,jl) / apartf(ji,jl) * r1_Dt_ice 
    460460            ENDIF 
    461461         END DO 
     
    467467      ! Reduce the opening rate in proportion 
    468468      DO ji = 1, npti   
    469          zfac = pato_i(ji) + ( opning(ji) - apartf(ji,0) * closing_gross(ji) ) * rdt_ice 
     469         zfac = pato_i(ji) + ( opning(ji) - apartf(ji,0) * closing_gross(ji) ) * rDt_ice 
    470470         IF( zfac < 0._wp ) THEN           ! would lead to negative ato_i 
    471             opning(ji) = apartf(ji,0) * closing_gross(ji) - pato_i(ji) * r1_rdtice  
     471            opning(ji) = apartf(ji,0) * closing_gross(ji) - pato_i(ji) * r1_Dt_ice  
    472472         ELSEIF( zfac > zasum(ji) ) THEN   ! would lead to ato_i > asum 
    473             opning(ji) = apartf(ji,0) * closing_gross(ji) + ( zasum(ji) - pato_i(ji) ) * r1_rdtice  
     473            opning(ji) = apartf(ji,0) * closing_gross(ji) + ( zasum(ji) - pato_i(ji) ) * r1_Dt_ice  
    474474         ENDIF 
    475475      END DO 
     
    515515      !-------------------------------------------------------- 
    516516      DO ji = 1, npti 
    517          ato_i_1d(ji) = MAX( 0._wp, ato_i_1d(ji) + ( opning(ji) - apartf(ji,0) * closing_gross(ji) ) * rdt_ice ) 
     517         ato_i_1d(ji) = MAX( 0._wp, ato_i_1d(ji) + ( opning(ji) - apartf(ji,0) * closing_gross(ji) ) * rDt_ice ) 
    518518      END DO 
    519519       
     
    533533                
    534534               ! area of ridging / rafting ice (airdg1) and of new ridge (airdg2) 
    535                airdg1 = aridge(ji,jl1) * closing_gross(ji) * rdt_ice 
    536                airft1 = araft (ji,jl1) * closing_gross(ji) * rdt_ice 
     535               airdg1 = aridge(ji,jl1) * closing_gross(ji) * rDt_ice 
     536               airft1 = araft (ji,jl1) * closing_gross(ji) * rDt_ice 
    537537 
    538538               airdg2(ji) = airdg1 * hi_hrdg(ji,jl1) 
     
    575575 
    576576               ! Ice-ocean exchanges associated with ice porosity 
    577                wfx_dyn_1d(ji) = wfx_dyn_1d(ji) - vsw * rhoi * r1_rdtice   ! increase in ice volume due to seawater frozen in voids 
    578                sfx_dyn_1d(ji) = sfx_dyn_1d(ji) - vsw * sss_1d(ji) * rhoi * r1_rdtice 
    579                hfx_dyn_1d(ji) = hfx_dyn_1d(ji) + ersw(ji) * r1_rdtice          ! > 0 [W.m-2]  
     577               wfx_dyn_1d(ji) = wfx_dyn_1d(ji) - vsw * rhoi * r1_Dt_ice   ! increase in ice volume due to seawater frozen in voids 
     578               sfx_dyn_1d(ji) = sfx_dyn_1d(ji) - vsw * sss_1d(ji) * rhoi * r1_Dt_ice 
     579               hfx_dyn_1d(ji) = hfx_dyn_1d(ji) + ersw(ji) * r1_Dt_ice          ! > 0 [W.m-2]  
    580580 
    581581               ! Put the snow lost by ridging into the ocean 
    582582               !  Note that esrdg > 0; the ocean must cool to melt snow. If the ocean temp = Tf already, new ice must grow. 
    583583               wfx_snw_dyn_1d(ji) = wfx_snw_dyn_1d(ji) + ( rhos * vsrdg(ji) * ( 1._wp - rn_fsnwrdg )   &   ! fresh water source for ocean 
    584                   &                                      + rhos * vsrft(ji) * ( 1._wp - rn_fsnwrft ) ) * r1_rdtice 
     584                  &                                      + rhos * vsrft(ji) * ( 1._wp - rn_fsnwrft ) ) * r1_Dt_ice 
    585585 
    586586               ! virtual salt flux to keep salinity constant 
    587587               IF( nn_icesal /= 2 )  THEN 
    588588                  sirdg2(ji)     = sirdg2(ji)     - vsw * ( sss_1d(ji) - s_i_1d(ji) )       ! ridge salinity = s_i 
    589                   sfx_bri_1d(ji) = sfx_bri_1d(ji) + sss_1d(ji) * vsw * rhoi * r1_rdtice  &  ! put back sss_m into the ocean 
    590                      &                            - s_i_1d(ji) * vsw * rhoi * r1_rdtice     ! and get  s_i  from the ocean  
     589                  sfx_bri_1d(ji) = sfx_bri_1d(ji) + sss_1d(ji) * vsw * rhoi * r1_Dt_ice  &  ! put back sss_m into the ocean 
     590                     &                            - s_i_1d(ji) * vsw * rhoi * r1_Dt_ice     ! and get  s_i  from the ocean  
    591591               ENDIF 
    592592 
     
    611611               IF( apartf(ji,jl1) > 0._wp .AND. closing_gross(ji) > 0._wp ) THEN 
    612612                  ! Compute ridging /rafting fractions 
    613                   afrdg = aridge(ji,jl1) * closing_gross(ji) * rdt_ice * z1_ai(ji) 
    614                   afrft = araft (ji,jl1) * closing_gross(ji) * rdt_ice * z1_ai(ji) 
     613                  afrdg = aridge(ji,jl1) * closing_gross(ji) * rDt_ice * z1_ai(ji) 
     614                  afrft = araft (ji,jl1) * closing_gross(ji) * rDt_ice * z1_ai(ji) 
    615615                  ! Compute ridging /rafting ice and new ridges for es 
    616616                  esrdg(ji,jk) = ze_s_2d (ji,jk,jl1) * afrdg 
     
    618618                  ! Put the snow lost by ridging into the ocean 
    619619                  hfx_dyn_1d(ji) = hfx_dyn_1d(ji) + ( - esrdg(ji,jk) * ( 1._wp - rn_fsnwrdg )   &                 ! heat sink for ocean (<0, W.m-2) 
    620                      &                                - esrft(ji,jk) * ( 1._wp - rn_fsnwrft ) ) * r1_rdtice 
     620                     &                                - esrft(ji,jk) * ( 1._wp - rn_fsnwrft ) ) * r1_Dt_ice 
    621621                  ! 
    622622                  ! Remove energy of new ridge to each category jl1 
     
    632632               IF( apartf(ji,jl1) > 0._wp .AND. closing_gross(ji) > 0._wp ) THEN 
    633633                  ! Compute ridging /rafting fractions 
    634                   afrdg = aridge(ji,jl1) * closing_gross(ji) * rdt_ice * z1_ai(ji) 
    635                   afrft = araft (ji,jl1) * closing_gross(ji) * rdt_ice * z1_ai(ji) 
     634                  afrdg = aridge(ji,jl1) * closing_gross(ji) * rDt_ice * z1_ai(ji) 
     635                  afrft = araft (ji,jl1) * closing_gross(ji) * rDt_ice * z1_ai(ji) 
    636636                  ! Compute ridging ice and new ridges for ei 
    637637                  eirdg(ji,jk) = ze_i_2d (ji,jk,jl1) * afrdg + ersw(ji) * r1_nlay_i 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icedyn_rhg_evp.F90

    r12377 r12724  
    116116      INTEGER ::   jter         ! local integers 
    117117      ! 
    118       REAL(wp) ::   zrhoco                                              ! rau0 * rn_cio 
     118      REAL(wp) ::   zrhoco                                              ! rho0 * rn_cio 
    119119      REAL(wp) ::   zdtevp, z1_dtevp                                    ! time step for subcycling 
    120120      REAL(wp) ::   ecc2, z1_ecc2                                       ! square of yield ellipse eccenticity 
     
    213213      ! 1) define some variables and initialize arrays 
    214214      !------------------------------------------------------------------------------! 
    215       zrhoco = rau0 * rn_cio  
     215      zrhoco = rho0 * rn_cio  
    216216 
    217217      ! ecc2: square of yield ellipse eccenticrity 
     
    220220 
    221221      ! Time step for subcycling 
    222       zdtevp   = rdt_ice / REAL( nn_nevp ) 
     222      zdtevp   = rDt_ice / REAL( nn_nevp ) 
    223223      z1_dtevp = 1._wp / zdtevp 
    224224 
    225225      ! alpha parameters (Bouillon 2009) 
    226226      IF( .NOT. ln_aEVP ) THEN 
    227          zalph1 = ( 2._wp * rn_relast * rdt_ice ) * z1_dtevp 
     227         zalph1 = ( 2._wp * rn_relast * rDt_ice ) * z1_dtevp 
    228228         zalph2 = zalph1 * z1_ecc2 
    229229 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/iceistate.F90

    r12680 r12724  
    189189            IF( TRIM(si(jp_smi)%clrootname) == 'NOT USED' ) & 
    190190               &     si(jp_smi)%fnow(:,:,1) = ( rn_smi_ini_n * zswitch + rn_smi_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 
    191             zsm_i_ini(:,:) = si(jp_smi)%fnow(:,:,1) 
    192             ! 
    193             ! ice temperature 
    194             IF( TRIM(si(jp_tmi)%clrootname) == 'NOT USED' ) & 
    195                &     si(jp_tmi)%fnow(:,:,1) = ( rn_tmi_ini_n * zswitch + rn_tmi_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 
    196             ztm_i_ini(:,:) = si(jp_tmi)%fnow(:,:,1) 
    197             ! 
    198             ! surface temperature => set to ice temperature if it exists 
    199             IF    ( TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) == 'NOT USED' ) THEN 
    200                      si(jp_tsu)%fnow(:,:,1) = ( rn_tsu_ini_n * zswitch + rn_tsu_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 
    201             ELSEIF( TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) /= 'NOT USED' ) THEN 
    202                      si(jp_tsu)%fnow(:,:,1) = si(jp_tmi)%fnow(:,:,1) 
     191            ! 
     192            ! temperatures 
     193            IF    ( TRIM(si(jp_tmi)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. & 
     194               &    TRIM(si(jp_tms)%clrootname) == 'NOT USED' ) THEN 
     195               si(jp_tmi)%fnow(:,:,1) = ( rn_tmi_ini_n * zswitch + rn_tmi_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 
     196               si(jp_tsu)%fnow(:,:,1) = ( rn_tsu_ini_n * zswitch + rn_tsu_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 
     197               si(jp_tms)%fnow(:,:,1) = ( rn_tms_ini_n * zswitch + rn_tms_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 
     198            ELSEIF( TRIM(si(jp_tmi)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tms)%clrootname) /= 'NOT USED' ) THEN ! if T_s is read and not T_i, set T_i = (T_s + T_freeze)/2 
     199               si(jp_tmi)%fnow(:,:,1) = 0.5_wp * ( si(jp_tms)%fnow(:,:,1) + 271.15 ) 
     200            ELSEIF( TRIM(si(jp_tmi)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tsu)%clrootname) /= 'NOT USED' ) THEN ! if T_su is read and not T_i, set T_i = (T_su + T_freeze)/2 
     201               si(jp_tmi)%fnow(:,:,1) = 0.5_wp * ( si(jp_tsu)%fnow(:,:,1) + 271.15 ) 
     202            ELSEIF( TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tms)%clrootname) /= 'NOT USED' ) THEN ! if T_s is read and not T_su, set T_su = T_s 
     203               si(jp_tsu)%fnow(:,:,1) = si(jp_tms)%fnow(:,:,1) 
     204            ELSEIF( TRIM(si(jp_tsu)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) /= 'NOT USED' ) THEN ! if T_i is read and not T_su, set T_su = T_i 
     205               si(jp_tsu)%fnow(:,:,1) = si(jp_tmi)%fnow(:,:,1) 
     206            ELSEIF( TRIM(si(jp_tms)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tsu)%clrootname) /= 'NOT USED' ) THEN ! if T_su is read and not T_s, set T_s = T_su 
     207               si(jp_tms)%fnow(:,:,1) = si(jp_tsu)%fnow(:,:,1) 
     208            ELSEIF( TRIM(si(jp_tms)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) /= 'NOT USED' ) THEN ! if T_i is read and not T_s, set T_s = T_i 
     209               si(jp_tms)%fnow(:,:,1) = si(jp_tmi)%fnow(:,:,1) 
    203210            ENDIF 
    204             zt_su_ini(:,:) = si(jp_tsu)%fnow(:,:,1) 
    205             ! 
    206             ! snow temperature => set to ice temperature if it exists 
    207             IF    ( TRIM(si(jp_tms)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) == 'NOT USED' ) THEN 
    208                      si(jp_tms)%fnow(:,:,1) = ( rn_tms_ini_n * zswitch + rn_tms_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 
    209             ELSEIF( TRIM(si(jp_tms)%clrootname) == 'NOT USED' .AND. TRIM(si(jp_tmi)%clrootname) /= 'NOT USED' ) THEN 
    210                      si(jp_tms)%fnow(:,:,1) = si(jp_tmi)%fnow(:,:,1) 
    211             ENDIF 
    212             ztm_s_ini(:,:) = si(jp_tms)%fnow(:,:,1) 
    213211            ! 
    214212            ! pond concentration 
     
    216214               &     si(jp_apd)%fnow(:,:,1) = ( rn_apd_ini_n * zswitch + rn_apd_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) & ! rn_apd = pond fraction => rn_apnd * a_i = pond conc. 
    217215               &                              * si(jp_ati)%fnow(:,:,1) 
    218             zapnd_ini(:,:) = si(jp_apd)%fnow(:,:,1) 
    219216            ! 
    220217            ! pond depth 
    221218            IF( TRIM(si(jp_hpd)%clrootname) == 'NOT USED' ) & 
    222219               &     si(jp_hpd)%fnow(:,:,1) = ( rn_hpd_ini_n * zswitch + rn_hpd_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 
     220            ! 
     221            zsm_i_ini(:,:) = si(jp_smi)%fnow(:,:,1) 
     222            ztm_i_ini(:,:) = si(jp_tmi)%fnow(:,:,1) 
     223            zt_su_ini(:,:) = si(jp_tsu)%fnow(:,:,1) 
     224            ztm_s_ini(:,:) = si(jp_tms)%fnow(:,:,1) 
     225            zapnd_ini(:,:) = si(jp_apd)%fnow(:,:,1) 
    223226            zhpnd_ini(:,:) = si(jp_hpd)%fnow(:,:,1) 
    224227            ! 
     
    371374      IF( ln_ice_embd ) THEN            ! embedded sea-ice: deplete the initial ssh below sea-ice area 
    372375         ! 
    373          ssh(:,:,Kmm) = ssh(:,:,Kmm) - snwice_mass(:,:) * r1_rau0 
    374          ssh(:,:,Kbb) = ssh(:,:,Kbb) - snwice_mass(:,:) * r1_rau0 
     376         ssh(:,:,Kmm) = ssh(:,:,Kmm) - snwice_mass(:,:) * r1_rho0 
     377         ssh(:,:,Kbb) = ssh(:,:,Kbb) - snwice_mass(:,:) * r1_rho0 
    375378         ! 
    376379         IF( .NOT.ln_linssh )   CALL dom_vvl_zgr( Kbb, Kmm, Kaa )   ! interpolation scale factor, depth and water column 
     
    435438!!clem: output of initial state should be written here but it is impossible because 
    436439!!      the ocean and ice are in the same file 
    437 !!      CALL dia_wri_state( 'output.init' ) 
     440!!      CALL dia_wri_state( Kmm, 'output.init' ) 
    438441      ! 
    439442   END SUBROUTINE ice_istate 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icerst.F90

    r12377 r12724  
    8080            ENDIF 
    8181            ! 
    82             CALL iom_open( TRIM(clpath)//TRIM(clname), numriw, ldwrt = .TRUE., kdlev = jpl ) 
     82            CALL iom_open( TRIM(clpath)//TRIM(clname), numriw, ldwrt = .TRUE., kdlev = jpl, cdcomp = 'ICE' ) 
    8383            lrst_ice = .TRUE. 
    8484         ENDIF 
     
    185185      ENDIF 
    186186 
    187       CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir, kdlev = jpl ) 
     187      CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir ) 
    188188 
    189189      ! test if v_i exists  
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icestp.F90

    r12377 r12724  
    338338      IF( ln_bdy .AND. ln_icediachk )   CALL ctl_warn('par_init: online conservation check does not work with BDY') 
    339339      ! 
    340       rdt_ice   = REAL(nn_fsbc) * rdt          !--- sea-ice timestep and its inverse 
    341       r1_rdtice = 1._wp / rdt_ice 
     340      rDt_ice   = REAL(nn_fsbc) * rn_Dt          !--- sea-ice timestep and its inverse 
     341      r1_Dt_ice = 1._wp / rDt_ice 
    342342      IF(lwp) WRITE(numout,*) 
    343       IF(lwp) WRITE(numout,*) '      ice timestep rdt_ice = nn_fsbc*rdt = ', rdt_ice 
     343      IF(lwp) WRITE(numout,*) '      ice timestep rDt_ice = nn_fsbc*rn_Dt = ', rDt_ice 
    344344      ! 
    345345      r1_nlay_i = 1._wp / REAL( nlay_i, wp )   !--- inverse of nlay_i and nlay_s 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icethd.F90

    r12377 r12724  
    116116      ELSE      !  if no ice dynamics => transmit directly the atmospheric stress to the ocean 
    117117         DO_2D_00_00 
    118             zfric(ji,jj) = r1_rau0 * SQRT( 0.5_wp *  & 
     118            zfric(ji,jj) = r1_rho0 * SQRT( 0.5_wp *  & 
    119119               &                         (  utau(ji,jj) * utau(ji,jj) + utau(ji-1,jj) * utau(ji-1,jj)   & 
    120120               &                          + vtau(ji,jj) * vtau(ji,jj) + vtau(ji,jj-1) * vtau(ji,jj-1) ) ) * tmask(ji,jj,1) 
     
    136136         ! 
    137137         ! --- Energy received in the lead from atm-oce exchanges, zqld is defined everywhere (J.m-2) --- ! 
    138          zqld =  tmask(ji,jj,1) * rdt_ice *  & 
     138         zqld =  tmask(ji,jj,1) * rDt_ice *  & 
    139139            &    ( ( 1._wp - at_i_b(ji,jj) ) * qsr_oce(ji,jj) * frq_m(ji,jj) +  & 
    140140            &      ( 1._wp - at_i_b(ji,jj) ) * qns_oce(ji,jj) + qemp_oce(ji,jj) ) 
    141141 
    142142         ! --- Energy needed to bring ocean surface layer until its freezing (mostly<0 but >0 if supercooling, J.m-2) --- ! 
    143          zqfr     = rau0 * rcp * e3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) * tmask(ji,jj,1)  ! both < 0 (t_bo < sst) and > 0 (t_bo > sst) 
     143         zqfr     = rho0 * rcp * e3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) * tmask(ji,jj,1)  ! both < 0 (t_bo < sst) and > 0 (t_bo > sst) 
    144144         zqfr_neg = MIN( zqfr , 0._wp )                                                                    ! only < 0 
    145145 
    146146         ! --- Sensible ocean-to-ice heat flux (mostly>0 but <0 if supercooling, W/m2) 
    147147         zfric_u            = MAX( SQRT( zfric(ji,jj) ), zfric_umin )  
    148          qsb_ice_bot(ji,jj) = rswitch * rau0 * rcp * zch * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2 
    149  
    150          qsb_ice_bot(ji,jj) = rswitch * MIN( qsb_ice_bot(ji,jj), - zqfr_neg * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) ) 
     148         qsb_ice_bot(ji,jj) = rswitch * rho0 * rcp * zch * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2 
     149 
     150         qsb_ice_bot(ji,jj) = rswitch * MIN( qsb_ice_bot(ji,jj), - zqfr_neg * r1_Dt_ice / MAX( at_i(ji,jj), epsi10 ) ) 
    151151         ! upper bound for qsb_ice_bot: the heat retrieved from the ocean must be smaller than the heat necessary to reach  
    152152         !                              the freezing point, so that we do not have SST < T_freeze 
     
    154154 
    155155         !-- Energy Budget of the leads (J.m-2), source of ice growth in open water. Must be < 0 to form ice 
    156          qlead(ji,jj) = MIN( 0._wp , zqld - ( qsb_ice_bot(ji,jj) * at_i(ji,jj) * rdt_ice ) - zqfr ) 
     156         qlead(ji,jj) = MIN( 0._wp , zqld - ( qsb_ice_bot(ji,jj) * at_i(ji,jj) * rDt_ice ) - zqfr ) 
    157157 
    158158         ! If there is ice and leads are warming => transfer energy from the lead budget and use it for bottom melting  
    159159         ! If the grid cell is fully covered by ice (no leads) => transfer energy from the lead budget to the ice bottom budget 
    160160         IF( ( zqld >= 0._wp .AND. at_i(ji,jj) > 0._wp ) .OR. at_i(ji,jj) >= (1._wp - epsi10) ) THEN 
    161             fhld (ji,jj) = rswitch * zqld * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) ! divided by at_i since this is (re)multiplied by a_i in icethd_dh.F90 
     161            fhld (ji,jj) = rswitch * zqld * r1_Dt_ice / MAX( at_i(ji,jj), epsi10 ) ! divided by at_i since this is (re)multiplied by a_i in icethd_dh.F90 
    162162            qlead(ji,jj) = 0._wp 
    163163         ELSE 
     
    185185      !     Third  step in iceupdate.F90  :  heat from ice-ocean mass exchange (zf_mass) + solar 
    186186      qt_oce_ai(:,:) = ( 1._wp - at_i_b(:,:) ) * qns_oce(:,:) + qemp_oce(:,:)  &  ! Non solar heat flux received by the ocean                
    187          &             - qlead(:,:) * r1_rdtice                                &  ! heat flux taken from the ocean where there is open water ice formation 
     187         &             - qlead(:,:) * r1_Dt_ice                                &  ! heat flux taken from the ocean where there is open water ice formation 
    188188         &             - at_i (:,:) * qsb_ice_bot(:,:)                         &  ! heat flux taken by sensible flux 
    189189         &             - at_i (:,:) * fhld       (:,:)                            ! heat flux taken during bottom growth/melt  
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icethd_da.F90

    r12377 r12724  
    128128         zwlat  = zm1 * ( MAX( 0._wp, sst_1d(ji) - ( t_bo_1d(ji) - rt0 ) ) )**zm2  ! Melt speed rate [m/s] 
    129129         ! 
    130          zda_tot(ji) = MIN( zwlat * zperi * rdt_ice, at_i_1d(ji) )                 ! sea ice concentration decrease (>0) 
     130         zda_tot(ji) = MIN( zwlat * zperi * rDt_ice, at_i_1d(ji) )                 ! sea ice concentration decrease (>0) 
    131131       
    132132         ! --- Distribute reduction among ice categories and calculate associated ice-ocean fluxes --- ! 
     
    137137             
    138138            ! Contribution to salt flux 
    139             sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoi *  h_i_1d(ji) * zda * s_i_1d(ji) * r1_rdtice 
     139            sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoi *  h_i_1d(ji) * zda * s_i_1d(ji) * r1_Dt_ice 
    140140             
    141141            ! Contribution to heat flux into the ocean [W.m-2], (<0)   
    142             hfx_thd_1d(ji) = hfx_thd_1d(ji) - zda * r1_rdtice * ( h_i_1d(ji) * r1_nlay_i * SUM( e_i_1d(ji,1:nlay_i) )  & 
     142            hfx_thd_1d(ji) = hfx_thd_1d(ji) - zda * r1_Dt_ice * ( h_i_1d(ji) * r1_nlay_i * SUM( e_i_1d(ji,1:nlay_i) )  & 
    143143                                                                + h_s_1d(ji) * r1_nlay_s * SUM( e_s_1d(ji,1:nlay_s) ) )  
    144144             
    145145            ! Contribution to mass flux 
    146             wfx_lam_1d(ji) =  wfx_lam_1d(ji) + zda * r1_rdtice * ( rhoi * h_i_1d(ji) + rhos * h_s_1d(ji) ) 
     146            wfx_lam_1d(ji) =  wfx_lam_1d(ji) + zda * r1_Dt_ice * ( rhoi * h_i_1d(ji) + rhos * h_s_1d(ji) ) 
    147147             
    148148            ! new concentration 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icethd_dh.F90

    r10786 r12724  
    7676      REAL(wp) ::   zgrr         ! bottom growth rate 
    7777      REAL(wp) ::   zt_i_new     ! bottom formation temperature 
    78       REAL(wp) ::   z1_rho       ! 1/(rhos+rau0-rhoi) 
     78      REAL(wp) ::   z1_rho       ! 1/(rhos+rho0-rhoi) 
    7979 
    8080      REAL(wp) ::   zQm          ! enthalpy exchanged with the ocean (J/m2), >0 towards the ocean 
     
    130130         ! 
    131131         DO ji = 1, npti 
    132             zq_top(ji)     = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) 
     132            zq_top(ji)     = MAX( 0._wp, qml_ice_1d(ji) * rDt_ice ) 
    133133         END DO 
    134134         ! 
     
    138138            zdum           = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - qcn_ice_top_1d(ji) 
    139139            qml_ice_1d(ji) = zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) ) 
    140             zq_top(ji)     = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) 
     140            zq_top(ji)     = MAX( 0._wp, qml_ice_1d(ji) * rDt_ice ) 
    141141         END DO 
    142142         ! 
     
    145145      DO ji = 1, npti 
    146146         zf_tt(ji)         = qcn_ice_bot_1d(ji) + qsb_ice_bot_1d(ji) + fhld_1d(ji)  
    147          zq_bot(ji)        = MAX( 0._wp, zf_tt(ji) * rdt_ice ) 
     147         zq_bot(ji)        = MAX( 0._wp, zf_tt(ji) * rDt_ice ) 
    148148      END DO 
    149149 
     
    172172         DO ji = 1, npti 
    173173            IF( t_s_1d(ji,jk) > rt0 ) THEN 
    174                hfx_res_1d    (ji) = hfx_res_1d    (ji) + e_s_1d(ji,jk) * zh_s(ji,jk) * a_i_1d(ji) * r1_rdtice   ! heat flux to the ocean [W.m-2], < 0 
    175                wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + rhos          * zh_s(ji,jk) * a_i_1d(ji) * r1_rdtice   ! mass flux 
     174               hfx_res_1d    (ji) = hfx_res_1d    (ji) + e_s_1d(ji,jk) * zh_s(ji,jk) * a_i_1d(ji) * r1_Dt_ice   ! heat flux to the ocean [W.m-2], < 0 
     175               wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + rhos          * zh_s(ji,jk) * a_i_1d(ji) * r1_Dt_ice   ! mass flux 
    176176               ! updates 
    177177               dh_s_mlt(ji)    = dh_s_mlt(ji) - zh_s(ji,jk) 
     
    193193            ! 
    194194            ! --- precipitation --- 
    195             zdh_s_pre (ji) = zsnw(ji) * sprecip_1d(ji) * rdt_ice * r1_rhos / at_i_1d(ji)   ! thickness change 
     195            zdh_s_pre (ji) = zsnw(ji) * sprecip_1d(ji) * rDt_ice * r1_rhos / at_i_1d(ji)   ! thickness change 
    196196            zqprec    (ji) = - qprec_ice_1d(ji)                                             ! enthalpy of the precip (>0, J.m-3) 
    197197            ! 
    198             hfx_spr_1d(ji) = hfx_spr_1d(ji) + zdh_s_pre(ji) * a_i_1d(ji) * zqprec(ji)    * r1_rdtice   ! heat flux from snow precip (>0, W.m-2) 
    199             wfx_spr_1d(ji) = wfx_spr_1d(ji) - rhos          * a_i_1d(ji) * zdh_s_pre(ji) * r1_rdtice   ! mass flux, <0 
     198            hfx_spr_1d(ji) = hfx_spr_1d(ji) + zdh_s_pre(ji) * a_i_1d(ji) * zqprec(ji)    * r1_Dt_ice   ! heat flux from snow precip (>0, W.m-2) 
     199            wfx_spr_1d(ji) = wfx_spr_1d(ji) - rhos          * a_i_1d(ji) * zdh_s_pre(ji) * r1_Dt_ice   ! mass flux, <0 
    200200             
    201201            ! --- melt of falling snow --- 
     
    203203            zdeltah       (ji,1) = - rswitch * zq_top(ji) / MAX( zqprec(ji) , epsi20 )   ! thickness change 
    204204            zdeltah       (ji,1) = MAX( - zdh_s_pre(ji), zdeltah(ji,1) )                 ! bound melting  
    205             hfx_snw_1d    (ji)   = hfx_snw_1d    (ji) - zdeltah(ji,1) * a_i_1d(ji) * zqprec(ji)    * r1_rdtice   ! heat used to melt snow (W.m-2, >0) 
    206             wfx_snw_sum_1d(ji)   = wfx_snw_sum_1d(ji) - rhos          * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice   ! snow melting only = water into the ocean (then without snow precip), >0 
     205            hfx_snw_1d    (ji)   = hfx_snw_1d    (ji) - zdeltah(ji,1) * a_i_1d(ji) * zqprec(ji)    * r1_Dt_ice   ! heat used to melt snow (W.m-2, >0) 
     206            wfx_snw_sum_1d(ji)   = wfx_snw_sum_1d(ji) - rhos          * a_i_1d(ji) * zdeltah(ji,1) * r1_Dt_ice   ! snow melting only = water into the ocean (then without snow precip), >0 
    207207             
    208208            ! updates available heat + precipitations after melting 
     
    243243               zdh_s_mel(ji)    = zdh_s_mel(ji) + zdeltah(ji,jk) 
    244244                
    245                hfx_snw_1d(ji)     = hfx_snw_1d(ji)     - zdeltah(ji,jk) * a_i_1d(ji) * e_s_1d (ji,jk) * r1_rdtice   ! heat used to melt snow(W.m-2, >0) 
    246                wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhos           * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice   ! snow melting only = water into the ocean (then without snow precip) 
     245               hfx_snw_1d(ji)     = hfx_snw_1d(ji)     - zdeltah(ji,jk) * a_i_1d(ji) * e_s_1d (ji,jk) * r1_Dt_ice   ! heat used to melt snow(W.m-2, >0) 
     246               wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhos           * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice   ! snow melting only = water into the ocean (then without snow precip) 
    247247                
    248248               ! updates available heat + thickness 
     
    264264         IF( evap_ice_1d(ji) > 0._wp ) THEN 
    265265            ! 
    266             zdh_s_sub (ji)   = MAX( - h_s_1d(ji) , - evap_ice_1d(ji) * r1_rhos * rdt_ice ) 
    267             zevap_rema(ji)   = evap_ice_1d(ji) * rdt_ice + zdh_s_sub(ji) * rhos   ! remaining evap in kg.m-2 (used for ice melting later on) 
     266            zdh_s_sub (ji)   = MAX( - h_s_1d(ji) , - evap_ice_1d(ji) * r1_rhos * rDt_ice ) 
     267            zevap_rema(ji)   = evap_ice_1d(ji) * rDt_ice + zdh_s_sub(ji) * rhos   ! remaining evap in kg.m-2 (used for ice melting later on) 
    268268            zdeltah   (ji,1) = MAX( zdh_s_sub(ji), - zdh_s_pre(ji) ) 
    269269             
    270270            hfx_sub_1d    (ji) = hfx_sub_1d(ji) + &   ! Heat flux by sublimation [W.m-2], < 0 (sublimate snow that had fallen, then pre-existing snow) 
    271271               &                 ( zdeltah(ji,1) * zqprec(ji) + ( zdh_s_sub(ji) - zdeltah(ji,1) ) * e_s_1d(ji,1) )  & 
    272                &                 * a_i_1d(ji) * r1_rdtice 
    273             wfx_snw_sub_1d(ji) = wfx_snw_sub_1d(ji) - rhos * a_i_1d(ji) * zdh_s_sub(ji) * r1_rdtice   ! Mass flux by sublimation 
     272               &                 * a_i_1d(ji) * r1_Dt_ice 
     273            wfx_snw_sub_1d(ji) = wfx_snw_sub_1d(ji) - rhos * a_i_1d(ji) * zdh_s_sub(ji) * r1_Dt_ice   ! Mass flux by sublimation 
    274274             
    275275            ! new snow thickness 
     
    328328               zfmdt          = - rhoi * zdeltah(ji,jk)               ! Recompute mass flux [kg/m2, >0] 
    329329 
    330                hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_1d(ji) * zEi * r1_rdtice                           ! Heat flux to the ocean [W.m-2], <0 
     330               hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_1d(ji) * zEi * r1_Dt_ice                           ! Heat flux to the ocean [W.m-2], <0 
    331331               !                                                                                                  ice enthalpy zEi is "sent" to the ocean 
    332                sfx_res_1d(ji) = sfx_res_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice    ! Salt flux 
     332               sfx_res_1d(ji) = sfx_res_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_Dt_ice    ! Salt flux 
    333333               !                                                                                                  using s_i_1d and not sz_i_1d(jk) is ok 
    334                wfx_res_1d(ji) = wfx_res_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice                 ! Mass flux 
     334               wfx_res_1d(ji) = wfx_res_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice                 ! Mass flux 
    335335 
    336336            ELSE                                        !-- Surface melting 
     
    354354               zQm            = zfmdt * zEw                           ! Energy of the melt water sent to the ocean [J/m2, <0] 
    355355                
    356                sfx_sum_1d(ji) = sfx_sum_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice    ! Salt flux >0 
     356               sfx_sum_1d(ji) = sfx_sum_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_Dt_ice    ! Salt flux >0 
    357357               !                                                                                                  using s_i_1d and not sz_i_1d(jk) is ok) 
    358                hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice                           ! Heat flux [W.m-2], < 0 
    359                hfx_sum_1d(ji) = hfx_sum_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice                           ! Heat flux used in this process [W.m-2], > 0   
     358               hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_Dt_ice                           ! Heat flux [W.m-2], < 0 
     359               hfx_sum_1d(ji) = hfx_sum_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_Dt_ice                           ! Heat flux used in this process [W.m-2], > 0   
    360360               !  
    361                wfx_sum_1d(ji) = wfx_sum_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice                 ! Mass flux 
     361               wfx_sum_1d(ji) = wfx_sum_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice                 ! Mass flux 
    362362                
    363363            END IF 
     
    369369            dh_i_sub(ji)    = dh_i_sub(ji)    + zdum 
    370370             
    371             sfx_sub_1d(ji)     = sfx_sub_1d(ji) - rhoi * a_i_1d(ji) * zdum * s_i_1d(ji) * r1_rdtice  ! Salt flux >0 
     371            sfx_sub_1d(ji)     = sfx_sub_1d(ji) - rhoi * a_i_1d(ji) * zdum * s_i_1d(ji) * r1_Dt_ice  ! Salt flux >0 
    372372            !                                                                                          clem: flux is sent to the ocean for simplicity 
    373373            !                                                                                                but salt should remain in the ice except 
    374374            !                                                                                                if all ice is melted. => must be corrected 
    375             hfx_sub_1d(ji)     = hfx_sub_1d(ji) + zdum * e_i_1d(ji,jk) * a_i_1d(ji) * r1_rdtice      ! Heat flux [W.m-2], < 0 
    376  
    377             wfx_ice_sub_1d(ji) = wfx_ice_sub_1d(ji) - rhoi * a_i_1d(ji) * zdum * r1_rdtice           ! Mass flux > 0 
     375            hfx_sub_1d(ji)     = hfx_sub_1d(ji) + zdum * e_i_1d(ji,jk) * a_i_1d(ji) * r1_Dt_ice      ! Heat flux [W.m-2], < 0 
     376 
     377            wfx_ice_sub_1d(ji) = wfx_ice_sub_1d(ji) - rhoi * a_i_1d(ji) * zdum * r1_Dt_ice           ! Mass flux > 0 
    378378 
    379379            ! update remaining mass flux 
     
    400400      ! remaining "potential" evap is sent to ocean 
    401401      DO ji = 1, npti 
    402          wfx_err_sub_1d(ji) = wfx_err_sub_1d(ji) - zevap_rema(ji) * a_i_1d(ji) * r1_rdtice  ! <=0 (net evap for the ocean in kg.m-2.s-1) 
     402         wfx_err_sub_1d(ji) = wfx_err_sub_1d(ji) - zevap_rema(ji) * a_i_1d(ji) * r1_Dt_ice  ! <=0 (net evap for the ocean in kg.m-2.s-1) 
    403403      END DO 
    404404 
     
    428428               !--- zswi12 if 2.0e-8 < dh/dt < 3.6e-7  
    429429               !--- zswi2  if dh/dt > 3.6e-7 
    430                zgrr     = MIN( 1.0e-3, MAX ( dh_i_bog(ji) * r1_rdtice , epsi10 ) ) 
     430               zgrr     = MIN( 1.0e-3, MAX ( dh_i_bog(ji) * r1_Dt_ice , epsi10 ) ) 
    431431               zswi2    = MAX( 0._wp , SIGN( 1._wp , zgrr - 3.6e-7 ) ) 
    432432               zswi12   = MAX( 0._wp , SIGN( 1._wp , zgrr - 2.0e-8 ) ) * ( 1.0 - zswi2 ) 
     
    448448               zdE           = zEi - zEw                                                              ! Specific enthalpy difference (J/kg, <0) 
    449449 
    450                dh_i_bog(ji)  = rdt_ice * MAX( 0._wp , zf_tt(ji) / ( zdE * rhoi ) ) 
     450               dh_i_bog(ji)  = rDt_ice * MAX( 0._wp , zf_tt(ji) / ( zdE * rhoi ) ) 
    451451                
    452452            END DO 
     
    454454            zfmdt          = - rhoi * dh_i_bog(ji)                                                   ! Mass flux x time step (kg/m2, < 0) 
    455455             
    456             hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice                           ! Heat flux to the ocean [W.m-2], >0 
    457             hfx_bog_1d(ji) = hfx_bog_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice                           ! Heat flux used in this process [W.m-2], <0 
    458              
    459             sfx_bog_1d(ji) = sfx_bog_1d(ji) - rhoi * a_i_1d(ji) * dh_i_bog(ji) * s_i_new(ji) * r1_rdtice     ! Salt flux, <0 
    460  
    461             wfx_bog_1d(ji) = wfx_bog_1d(ji) - rhoi * a_i_1d(ji) * dh_i_bog(ji) * r1_rdtice                   ! Mass flux, <0 
     456            hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_Dt_ice                           ! Heat flux to the ocean [W.m-2], >0 
     457            hfx_bog_1d(ji) = hfx_bog_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_Dt_ice                           ! Heat flux used in this process [W.m-2], <0 
     458             
     459            sfx_bog_1d(ji) = sfx_bog_1d(ji) - rhoi * a_i_1d(ji) * dh_i_bog(ji) * s_i_new(ji) * r1_Dt_ice     ! Salt flux, <0 
     460 
     461            wfx_bog_1d(ji) = wfx_bog_1d(ji) - rhoi * a_i_1d(ji) * dh_i_bog(ji) * r1_Dt_ice                   ! Mass flux, <0 
    462462 
    463463            ! update heat content (J.m-2) and layer thickness 
     
    490490                  zfmdt             = - zdeltah(ji,jk) * rhoi      ! Mass flux x time step > 0 
    491491 
    492                   hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_1d(ji) * zEi * r1_rdtice                           ! Heat flux to the ocean [W.m-2], <0 
     492                  hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_1d(ji) * zEi * r1_Dt_ice                           ! Heat flux to the ocean [W.m-2], <0 
    493493                  !                                                                                                  ice enthalpy zEi is "sent" to the ocean 
    494                   sfx_res_1d(ji) = sfx_res_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice    ! Salt flux 
     494                  sfx_res_1d(ji) = sfx_res_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_Dt_ice    ! Salt flux 
    495495                  !                                                                                                  using s_i_1d and not sz_i_1d(jk) is ok 
    496                   wfx_res_1d(ji) = wfx_res_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice                 ! Mass flux 
     496                  wfx_res_1d(ji) = wfx_res_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice                 ! Mass flux 
    497497 
    498498                  ! update heat content (J.m-2) and layer thickness 
     
    520520                  zQm             = zfmdt * zEw                                               ! Heat exchanged with ocean 
    521521 
    522                   hfx_thd_1d(ji)  = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice                           ! Heat flux to the ocean [W.m-2], <0   
    523                   hfx_bom_1d(ji)  = hfx_bom_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice                           ! Heat used in this process [W.m-2], >0   
    524  
    525                   sfx_bom_1d(ji)  = sfx_bom_1d(ji) - rhoi *  a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice   ! Salt flux 
     522                  hfx_thd_1d(ji)  = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_Dt_ice                           ! Heat flux to the ocean [W.m-2], <0   
     523                  hfx_bom_1d(ji)  = hfx_bom_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_Dt_ice                           ! Heat used in this process [W.m-2], >0   
     524 
     525                  sfx_bom_1d(ji)  = sfx_bom_1d(ji) - rhoi *  a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_Dt_ice   ! Salt flux 
    526526                  !                                                                                                   using s_i_1d and not sz_i_1d(jk) is ok 
    527527                   
    528                   wfx_bom_1d(ji)  = wfx_bom_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice                 ! Mass flux 
     528                  wfx_bom_1d(ji)  = wfx_bom_1d(ji) - rhoi * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice                 ! Mass flux 
    529529 
    530530                  ! update heat content (J.m-2) and layer thickness 
     
    556556         
    557557         zq_rema(ji)        = zq_rema(ji) + zdeltah(ji,1) * e_s_1d(ji,1)                               ! update available heat (J.m-2) 
    558          hfx_snw_1d(ji)     = hfx_snw_1d(ji) - zdeltah(ji,1) * a_i_1d(ji) * e_s_1d(ji,1) * r1_rdtice   ! Heat used to melt snow, W.m-2 (>0) 
    559          wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhos * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice       ! Mass flux 
     558         hfx_snw_1d(ji)     = hfx_snw_1d(ji) - zdeltah(ji,1) * a_i_1d(ji) * e_s_1d(ji,1) * r1_Dt_ice   ! Heat used to melt snow, W.m-2 (>0) 
     559         wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhos * a_i_1d(ji) * zdeltah(ji,1) * r1_Dt_ice       ! Mass flux 
    560560         dh_s_mlt(ji)       = dh_s_mlt(ji) + zdeltah(ji,1) 
    561561         !     
    562562         ! Remaining heat flux (W.m-2) is sent to the ocean heat budget 
    563          qt_oce_ai_1d(ji) = qt_oce_ai_1d(ji) + ( zq_rema(ji) * a_i_1d(ji) ) * r1_rdtice 
     563         qt_oce_ai_1d(ji) = qt_oce_ai_1d(ji) + ( zq_rema(ji) * a_i_1d(ji) ) * r1_Dt_ice 
    564564 
    565565         IF( ln_icectl .AND. zq_rema(ji) < 0. .AND. lwp ) WRITE(numout,*) 'ALERTE zq_rema <0 = ', zq_rema(ji) 
     
    571571      ! When snow load excesses Archimede's limit, snow-ice interface goes down under sea-level,  
    572572      ! flooding of seawater transforms snow into ice dh_snowice is positive for the ice 
    573       z1_rho = 1._wp / ( rhos+rau0-rhoi ) 
     573      z1_rho = 1._wp / ( rhos+rho0-rhoi ) 
    574574      DO ji = 1, npti 
    575575         ! 
    576          dh_snowice(ji) = MAX(  0._wp , ( rhos * h_s_1d(ji) + (rhoi-rau0) * h_i_1d(ji) ) * z1_rho ) 
     576         dh_snowice(ji) = MAX(  0._wp , ( rhos * h_s_1d(ji) + (rhoi-rho0) * h_i_1d(ji) ) * z1_rho ) 
    577577 
    578578         h_i_1d(ji)    = h_i_1d(ji) + dh_snowice(ji) 
     
    584584         zQm            = zfmdt * zEw  
    585585          
    586          hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice ! Heat flux 
    587  
    588          sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_1d(ji) * a_i_1d(ji) * zfmdt * r1_rdtice ! Salt flux 
     586         hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_Dt_ice ! Heat flux 
     587 
     588         sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_1d(ji) * a_i_1d(ji) * zfmdt * r1_Dt_ice ! Salt flux 
    589589 
    590590         ! Case constant salinity in time: virtual salt flux to keep salinity constant 
    591591         IF( nn_icesal /= 2 )  THEN 
    592             sfx_bri_1d(ji) = sfx_bri_1d(ji) - sss_1d (ji) * a_i_1d(ji) * zfmdt                  * r1_rdtice  & ! put back sss_m     into the ocean 
    593                &                            - s_i_1d(ji)  * a_i_1d(ji) * dh_snowice(ji) * rhoi * r1_rdtice     ! and get  rn_icesal from the ocean  
     592            sfx_bri_1d(ji) = sfx_bri_1d(ji) - sss_1d (ji) * a_i_1d(ji) * zfmdt                  * r1_Dt_ice  & ! put back sss_m     into the ocean 
     593               &                            - s_i_1d(ji)  * a_i_1d(ji) * dh_snowice(ji) * rhoi * r1_Dt_ice     ! and get  rn_icesal from the ocean  
    594594         ENDIF 
    595595 
    596596         ! Mass flux: All snow is thrown in the ocean, and seawater is taken to replace the volume 
    597          wfx_sni_1d(ji)     = wfx_sni_1d(ji)     - a_i_1d(ji) * dh_snowice(ji) * rhoi * r1_rdtice 
    598          wfx_snw_sni_1d(ji) = wfx_snw_sni_1d(ji) + a_i_1d(ji) * dh_snowice(ji) * rhos * r1_rdtice 
     597         wfx_sni_1d(ji)     = wfx_sni_1d(ji)     - a_i_1d(ji) * dh_snowice(ji) * rhoi * r1_Dt_ice 
     598         wfx_snw_sni_1d(ji) = wfx_snw_sni_1d(ji) + a_i_1d(ji) * dh_snowice(ji) * rhos * r1_Dt_ice 
    599599 
    600600         ! update heat content (J.m-2) and layer thickness 
     
    618618            ! mass & energy loss to the ocean 
    619619            hfx_res_1d(ji) = hfx_res_1d(ji) + ( 1._wp - rswitch ) * & 
    620                &                              ( e_s_1d(ji,jk) * h_s_1d(ji) * r1_nlay_s * a_i_1d(ji) * r1_rdtice )  ! heat flux to the ocean [W.m-2], < 0 
     620               &                              ( e_s_1d(ji,jk) * h_s_1d(ji) * r1_nlay_s * a_i_1d(ji) * r1_Dt_ice )  ! heat flux to the ocean [W.m-2], < 0 
    621621            wfx_res_1d(ji) = wfx_res_1d(ji) + ( 1._wp - rswitch ) * & 
    622                &                              ( rhos          * h_s_1d(ji) * r1_nlay_s * a_i_1d(ji) * r1_rdtice )  ! mass flux 
     622               &                              ( rhos          * h_s_1d(ji) * r1_nlay_s * a_i_1d(ji) * r1_Dt_ice )  ! mass flux 
    623623            ! update energy (mass is updated in the next loop) 
    624624            e_s_1d(ji,jk) = rswitch * e_s_1d(ji,jk) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icethd_do.F90

    r12377 r12724  
    141141         ! Physical constants 
    142142         zhicrit = 0.04                                          ! frazil ice thickness 
    143          ztwogp  = 2. * rau0 / ( grav * 0.3 * ( rau0 - rhoi ) )  ! reduced grav 
     143         ztwogp  = 2. * rho0 / ( grav * 0.3 * ( rho0 - rhoi ) )  ! reduced grav 
    144144         zsqcd   = 1.0 / SQRT( 1.3 * zcai )                      ! 1/SQRT(airdensity*drag) 
    145145         zgamafr = 0.03 
     
    289289 
    290290            ! Contribution to heat flux to the ocean [W.m-2], >0   
    291             hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * zEw * r1_rdtice 
     291            hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * zEw * r1_Dt_ice 
    292292            ! Total heat flux used in this process [W.m-2]   
    293             hfx_opw_1d(ji) = hfx_opw_1d(ji) - zfmdt * zdE * r1_rdtice 
     293            hfx_opw_1d(ji) = hfx_opw_1d(ji) - zfmdt * zdE * r1_Dt_ice 
    294294            ! mass flux 
    295             wfx_opw_1d(ji) = wfx_opw_1d(ji) - zv_newice(ji) * rhoi * r1_rdtice 
     295            wfx_opw_1d(ji) = wfx_opw_1d(ji) - zv_newice(ji) * rhoi * r1_Dt_ice 
    296296            ! salt flux 
    297             sfx_opw_1d(ji) = sfx_opw_1d(ji) - zv_newice(ji) * rhoi * zs_newice(ji) * r1_rdtice 
     297            sfx_opw_1d(ji) = sfx_opw_1d(ji) - zv_newice(ji) * rhoi * zs_newice(ji) * r1_Dt_ice 
    298298         END DO 
    299299          
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icethd_ent.F90

    r10069 r12724  
    129129      ! then we should not (* a_i) again but not important since this is just to check that remap error is ~0 
    130130      DO ji = 1, npti 
    131          hfx_err_rem_1d(ji) = hfx_err_rem_1d(ji) + a_i_1d(ji) * r1_rdtice *  & 
     131         hfx_err_rem_1d(ji) = hfx_err_rem_1d(ji) + a_i_1d(ji) * r1_Dt_ice *  & 
    132132            &               ( SUM( qnew(ji,1:nlay_i) ) * zhnew(ji) - SUM( eh_i_old(ji,0:nlay_i+1) ) )  
    133133      END DO 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icethd_pnd.F90

    r12377 r12724  
    165165            ! melt pond mass flux (<0) 
    166166            IF( zdv_mlt > 0._wp ) THEN 
    167                zfac = zfr_mlt * zdv_mlt * rhow * r1_rdtice 
     167               zfac = zfr_mlt * zdv_mlt * rhow * r1_Dt_ice 
    168168               wfx_pnd_1d(ji) = wfx_pnd_1d(ji) - zfac 
    169169               ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icethd_sal.F90

    r12377 r12724  
    6868      CASE( 2 )       !  time varying salinity with linear profile  ! 
    6969         !            !---------------------------------------------! 
    70          z1_time_gd = 1._wp / rn_time_gd * rdt_ice 
    71          z1_time_fl = 1._wp / rn_time_fl * rdt_ice 
     70         z1_time_gd = 1._wp / rn_time_gd * rDt_ice 
     71         z1_time_fl = 1._wp / rn_time_fl * rDt_ice 
    7272         ! 
    7373         DO ji = 1, npti 
     
    9898                
    9999               ! Salt flux 
    100                sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoi * a_i_1d(ji) * h_i_1d(ji) * ( zs_i_fl + zs_i_gd ) * r1_rdtice 
     100               sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoi * a_i_1d(ji) * h_i_1d(ji) * ( zs_i_fl + zs_i_gd ) * r1_Dt_ice 
    101101            ENDIF 
    102102         END DO 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icethd_zdf_bl99.F90

    r10926 r12724  
    320320            DO ji = 1, npti 
    321321               zcpi = rcpi + zgamma * sz_i_1d(ji,jk) / MAX( ( t_i_1d(ji,jk) - rt0 ) * ( ztiold(ji,jk) - rt0 ), epsi10 ) 
    322                zeta_i(ji,jk) = rdt_ice * r1_rhoi * z1_h_i(ji) / MAX( epsi10, zcpi )  
     322               zeta_i(ji,jk) = rDt_ice * r1_rhoi * z1_h_i(ji) / MAX( epsi10, zcpi )  
    323323            END DO 
    324324         END DO 
     
    326326         DO jk = 1, nlay_s 
    327327            DO ji = 1, npti 
    328                zeta_s(ji,jk) = rdt_ice * r1_rhos * r1_rcpi * z1_h_s(ji) 
     328               zeta_s(ji,jk) = rDt_ice * r1_rhos * r1_rcpi * z1_h_s(ji) 
    329329            END DO 
    330330         END DO 
     
    769769      ! 
    770770      ! --- calculate conduction fluxes (positive downward) 
    771  
     771      !     bottom ice conduction flux 
    772772      DO ji = 1, npti 
    773          !                                ! surface ice conduction flux 
    774          qcn_ice_top_1d(ji) =  -           isnow(ji)   * zkappa_s(ji,0)      * zg1s * ( t_s_1d(ji,1) - t_su_1d(ji) )  & 
    775             &                  - ( 1._wp - isnow(ji) ) * zkappa_i(ji,0)      * zg1  * ( t_i_1d(ji,1) - t_su_1d(ji) ) 
    776          !                                ! bottom ice conduction flux 
    777          qcn_ice_bot_1d(ji) =                          - zkappa_i(ji,nlay_i) * zg1  * ( t_bo_1d(ji ) - t_i_1d (ji,nlay_i) ) 
     773         qcn_ice_bot_1d(ji) = - zkappa_i(ji,nlay_i) * zg1  * ( t_bo_1d(ji ) - t_i_1d (ji,nlay_i) ) 
    778774      END DO 
    779        
     775      !     surface ice conduction flux 
     776      IF( k_cnd == np_cnd_OFF .OR. k_cnd == np_cnd_EMU ) THEN 
     777         ! 
     778         DO ji = 1, npti 
     779            qcn_ice_top_1d(ji) =  -           isnow(ji)   * zkappa_s(ji,0) * zg1s * ( t_s_1d(ji,1) - t_su_1d(ji) )  & 
     780               &                  - ( 1._wp - isnow(ji) ) * zkappa_i(ji,0) * zg1  * ( t_i_1d(ji,1) - t_su_1d(ji) ) 
     781         END DO 
     782         ! 
     783      ELSEIF( k_cnd == np_cnd_ON ) THEN 
     784         ! 
     785         DO ji = 1, npti 
     786            qcn_ice_top_1d(ji) = qcn_ice_1d(ji) 
     787         END DO 
     788         ! 
     789      ENDIF 
     790      !     surface ice temperature 
     791      IF( k_cnd == np_cnd_ON .AND. ln_cndemulate ) THEN 
     792         ! 
     793         DO ji = 1, npti 
     794            t_su_1d(ji) = (  qcn_ice_top_1d(ji) &            ! calculate surface temperature 
     795               &           +           isnow(ji)   * zkappa_s(ji,0) * zg1s * t_s_1d(ji,1) & 
     796               &           + ( 1._wp - isnow(ji) ) * zkappa_i(ji,0) * zg1  * t_i_1d(ji,1) & 
     797               &          ) / MAX( epsi10, isnow(ji) * zkappa_s(ji,0) * zg1s + ( 1._wp - isnow(ji) ) * zkappa_i(ji,0) * zg1 ) 
     798            t_su_1d(ji) = MAX( MIN( t_su_1d(ji), rt0 ), rt0 - 100._wp )  ! cap t_su 
     799         END DO 
     800         ! 
     801      ENDIF 
    780802      ! 
    781803      ! --- Diagnose the heat loss due to changing non-solar / conduction flux --- ! 
     
    787809         END DO 
    788810         ! 
    789       ELSEIF( k_cnd == np_cnd_ON ) THEN 
    790          ! 
    791          DO ji = 1, npti 
    792             hfx_err_dif_1d(ji) = hfx_err_dif_1d(ji) - ( qcn_ice_top_1d(ji) - qcn_ice_1d(ji) ) * a_i_1d(ji)  
    793          END DO 
    794          ! 
    795811      ENDIF 
    796        
    797812      ! 
    798813      ! --- Diagnose the heat loss due to non-fully converged temperature solution (should not be above 10-4 W-m2) --- ! 
     
    811826               IF( t_su_1d(ji) < rt0 ) THEN  ! case T_su < 0degC 
    812827                  zhfx_err = ( qns_ice_1d(ji)     + qsr_ice_1d(ji)     - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji)  & 
    813                      &       + zdq * r1_rdtice ) * a_i_1d(ji) 
     828                     &       + zdq * r1_Dt_ice ) * a_i_1d(ji) 
    814829               ELSE                          ! case T_su = 0degC 
    815830                  zhfx_err = ( qcn_ice_top_1d(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji)  & 
    816                      &       + zdq * r1_rdtice ) * a_i_1d(ji) 
     831                     &       + zdq * r1_Dt_ice ) * a_i_1d(ji) 
    817832               ENDIF 
    818833                
     
    820835             
    821836               zhfx_err    = ( qcn_ice_top_1d(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji)  & 
    822                   &          + zdq * r1_rdtice ) * a_i_1d(ji) 
     837                  &          + zdq * r1_Dt_ice ) * a_i_1d(ji) 
    823838             
    824839            ENDIF 
     
    828843            ! 
    829844            ! hfx_dif = Heat flux diagnostic of sensible heat used to warm/cool ice in W.m-2    
    830             hfx_dif_1d(ji) = hfx_dif_1d(ji) - zdq * r1_rdtice * a_i_1d(ji) 
     845            hfx_dif_1d(ji) = hfx_dif_1d(ji) - zdq * r1_Dt_ice * a_i_1d(ji) 
    831846            ! 
    832847         END DO 
     
    856871         t_i_1d    (1:npti,:) = ztiold        (1:npti,:) 
    857872         qcn_ice_1d(1:npti)   = qcn_ice_top_1d(1:npti) 
    858  
    859          !!clem 
    860          ! remettre t_su_1d, qns_ice_1d et dqns_ice_1d comme avant puisqu'on devrait faire comme si on avant conduction = input 
    861          !clem 
    862873      ENDIF 
    863874      ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/iceupdate.F90

    r12377 r12724  
    171171         snwice_mass  (ji,jj) = tmask(ji,jj,1) * ( rhos * vt_s(ji,jj) + rhoi * vt_i(ji,jj)  )  
    172172         !                                               ! time evolution of snow+ice mass 
    173          snwice_fmass (ji,jj) = ( snwice_mass(ji,jj) - snwice_mass_b(ji,jj) ) * r1_rdtice 
     173         snwice_fmass (ji,jj) = ( snwice_mass(ji,jj) - snwice_mass_b(ji,jj) ) * r1_Dt_ice 
    174174          
    175175      END_2D 
     
    329329      ENDIF 
    330330 
    331       zrhoco = rau0 * rn_cio 
     331      zrhoco = rho0 * rn_cio 
    332332      ! 
    333333      IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN     !==  Ice time-step only  ==!   (i.e. surface module time-step) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icevar.F90

    r12377 r12724  
    488488         DO_3D_11_11( 1, nlay_i ) 
    489489            ! update exchanges with ocean 
    490             hfx_res(ji,jj)   = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_i(ji,jj,jk,jl) * r1_rdtice ! W.m-2 <0 
     490            hfx_res(ji,jj)   = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_i(ji,jj,jk,jl) * r1_Dt_ice ! W.m-2 <0 
    491491            e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * zswitch(ji,jj) 
    492492            t_i(ji,jj,jk,jl) = t_i(ji,jj,jk,jl) * zswitch(ji,jj) + rt0 * ( 1._wp - zswitch(ji,jj) ) 
     
    495495         DO_3D_11_11( 1, nlay_s ) 
    496496            ! update exchanges with ocean 
    497             hfx_res(ji,jj)   = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_s(ji,jj,jk,jl) * r1_rdtice ! W.m-2 <0 
     497            hfx_res(ji,jj)   = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_s(ji,jj,jk,jl) * r1_Dt_ice ! W.m-2 <0 
    498498            e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * zswitch(ji,jj) 
    499499            t_s(ji,jj,jk,jl) = t_s(ji,jj,jk,jl) * zswitch(ji,jj) + rt0 * ( 1._wp - zswitch(ji,jj) ) 
     
    505505         DO_2D_11_11 
    506506            ! update exchanges with ocean 
    507             sfx_res(ji,jj)  = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl)   * rhoi * r1_rdtice 
    508             wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i (ji,jj,jl)   * rhoi * r1_rdtice 
    509             wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl)   * rhos * r1_rdtice 
     507            sfx_res(ji,jj)  = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl)   * rhoi * r1_Dt_ice 
     508            wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i (ji,jj,jl)   * rhoi * r1_Dt_ice 
     509            wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl)   * rhos * r1_Dt_ice 
    510510            ! 
    511511            a_i  (ji,jj,jl) = a_i (ji,jj,jl) * zswitch(ji,jj) 
     
    717717      !! ** Purpose :  compute the equivalent ssh in lead when sea ice is embedded 
    718718      !! 
    719       !! ** Method  :  ssh_lead = ssh + (Mice + Msnow) / rau0 
     719      !! ** Method  :  ssh_lead = ssh + (Mice + Msnow) / rho0 
    720720      !! 
    721721      !! ** Reference : Jean-Michel Campin, John Marshall, David Ferreira, 
     
    747747         zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 
    748748         ! 
    749          zsnwiceload(:,:) = ( zintn * psnwice_mass(:,:) + zintb * psnwice_mass_b(:,:) ) * r1_rau0 
     749         zsnwiceload(:,:) = ( zintn * psnwice_mass(:,:) + zintb * psnwice_mass_b(:,:) ) * r1_rho0 
    750750         ! 
    751751      ELSE 
     
    937937               ! In case snow load is in excess that would lead to transformation from snow to ice 
    938938               ! Then, transfer the snow excess into the ice (different from icethd_dh) 
    939                zdh = MAX( 0._wp, ( rhos * ph_s(ji,jl) + ( rhoi - rau0 ) * ph_i(ji,jl) ) * r1_rau0 )  
     939               zdh = MAX( 0._wp, ( rhos * ph_s(ji,jl) + ( rhoi - rho0 ) * ph_i(ji,jl) ) * r1_rho0 )  
    940940               ! recompute h_i, h_s avoiding out of bounds values 
    941941               ph_i(ji,jl) = MIN( hi_max(jl), ph_i(ji,jl) + zdh ) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/ICE/icewri.F90

    r12377 r12724  
    8787      ! Standard outputs 
    8888      !----------------- 
    89       zrho1 = ( rau0 - rhoi ) * r1_rau0 ; zrho2 = rhos * r1_rau0 
     89      zrho1 = ( rho0 - rhoi ) * r1_rho0 ; zrho2 = rhos * r1_rho0 
    9090      ! masks 
    9191      CALL iom_put( 'icemask'  , zmsk00 )   ! ice mask 0% 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/NST/agrif_oce_sponge.F90

    r12377 r12724  
    439439 
    440440         !* set relaxation time scale 
    441          IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt ) 
    442          ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rdt ) 
     441         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rn_Dt ) 
     442         ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rn_Dt ) 
    443443         ENDIF 
    444444 
     
    596596#endif 
    597597         !* set relaxation time scale 
    598          IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt ) 
    599          ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rdt ) 
     598         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rn_Dt ) 
     599         ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rn_Dt ) 
    600600         ENDIF 
    601601         ! 
     
    772772# endif 
    773773         !* set relaxation time scale 
    774          IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt ) 
    775          ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rdt ) 
     774         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rn_Dt ) 
     775         ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rn_Dt ) 
    776776         ENDIF 
    777777         ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/NST/agrif_oce_update.F90

    r12377 r12724  
    256256      ! 2) BEFORE fields: 
    257257      !------------------ 
    258       IF (.NOT.(lk_agrif_fstep.AND.(neuler==0) )) THEN 
     258      IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler) )) THEN 
    259259         ! 
    260260         ! Vertical scale factor interpolations 
     
    351351         ENDDO 
    352352 
    353          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     353         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    354354            ! Add asselin part 
    355355            DO jn = 1,jpts 
     
    361361                           ztnu = tabres_child(ji,jj,jk,jn) * e3t(ji,jj,jk,Kmm_a) 
    362362                           ztno = ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 
    363                            ts(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) )  &  
     363                           ts(ji,jj,jk,jn,Kbb_a) = ( ztb + rn_atfp * ( ztnu - ztno) )  &  
    364364                                     &        * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 
    365365                        ENDIF 
     
    381381         END DO 
    382382         ! 
    383          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     383         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    384384            ts(i1:i2,j1:j2,1:jpkm1,1:jpts,Kbb_a)  = ts(i1:i2,j1:j2,1:jpkm1,1:jpts,Kmm_a) 
    385385         ENDIF 
     
    422422         ENDDO 
    423423!< jc tmp 
    424          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     424         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    425425            ! Add asselin part 
    426426            DO jn = 1,jpts 
     
    432432                           ztnu = tabres(ji,jj,jk,jn) 
    433433                           ztno = ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 
    434                            ts(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) )  &  
     434                           ts(ji,jj,jk,jn,Kbb_a) = ( ztb + rn_atfp * ( ztnu - ztno) )  &  
    435435                                     &        * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 
    436436                        ENDIF 
     
    452452         END DO 
    453453         ! 
    454          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     454         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    455455            ts(i1:i2,j1:j2,k1:k2,1:jpts,Kbb_a)  = ts(i1:i2,j1:j2,k1:k2,1:jpts,Kmm_a) 
    456456         ENDIF 
     
    551551            DO jj=j1,j2 
    552552               DO ji=i1,i2 
    553                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     553                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    554554                     zub  = uu(ji,jj,jk,Kbb_a) * e3u(ji,jj,jk,Kbb_a)  ! fse3t_b prior update should be used 
    555555                     zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a) 
    556556                     zunu = tabres_child(ji,jj,jk) * e3u(ji,jj,jk,Kmm_a) 
    557                      uu(ji,jj,jk,Kbb_a) = ( zub + atfp * ( zunu - zuno) ) &       
     557                     uu(ji,jj,jk,Kbb_a) = ( zub + rn_atfp * ( zunu - zuno) ) &       
    558558                                    & * umask(ji,jj,jk) / e3u(ji,jj,jk,Kbb_a) 
    559559                  ENDIF 
     
    564564         END DO 
    565565         ! 
    566          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     566         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    567567            uu(i1:i2,j1:j2,1:jpkm1,Kbb_a)  = uu(i1:i2,j1:j2,1:jpkm1,Kmm_a) 
    568568         ENDIF 
     
    597597                  tabres(ji,jj,jk,1) = tabres(ji,jj,jk,1) * r1_e2u(ji,jj)  
    598598                  ! 
    599                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     599                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    600600                     zub  = uu(ji,jj,jk,Kbb_a) * e3u(ji,jj,jk,Kbb_a)  ! fse3t_b prior update should be used 
    601601                     zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a) 
    602602                     zunu = tabres(ji,jj,jk,1) 
    603                      uu(ji,jj,jk,Kbb_a) = ( zub + atfp * ( zunu - zuno) ) &       
     603                     uu(ji,jj,jk,Kbb_a) = ( zub + rn_atfp * ( zunu - zuno) ) &       
    604604                                    & * umask(ji,jj,jk) / e3u(ji,jj,jk,Kbb_a) 
    605605                  ENDIF 
     
    610610         END DO 
    611611         ! 
    612          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     612         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    613613            uu(i1:i2,j1:j2,k1:k2,Kbb_a)  = uu(i1:i2,j1:j2,k1:k2,Kmm_a) 
    614614         ENDIF 
     
    751751            DO jj=j1,j2 
    752752               DO ji=i1,i2 
    753                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     753                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    754754                     zvb  = vv(ji,jj,jk,Kbb_a) * e3v(ji,jj,jk,Kbb_a) ! fse3t_b prior update should be used 
    755755                     zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a) 
    756756                     zvnu = tabres_child(ji,jj,jk) * e3v(ji,jj,jk,Kmm_a) 
    757                      vv(ji,jj,jk,Kbb_a) = ( zvb + atfp * ( zvnu - zvno) ) &       
     757                     vv(ji,jj,jk,Kbb_a) = ( zvb + rn_atfp * ( zvnu - zvno) ) &       
    758758                                    & * vmask(ji,jj,jk) / e3v(ji,jj,jk,Kbb_a) 
    759759                  ENDIF 
     
    764764         END DO 
    765765         ! 
    766          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     766         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    767767            vv(i1:i2,j1:j2,1:jpkm1,Kbb_a)  = vv(i1:i2,j1:j2,1:jpkm1,Kmm_a) 
    768768         ENDIF 
     
    801801                  tabres(ji,jj,jk,1) = tabres(ji,jj,jk,1) * r1_e1v(ji,jj) 
    802802                  ! 
    803                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     803                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    804804                     zvb  = vv(ji,jj,jk,Kbb_a) * e3v(ji,jj,jk,Kbb_a) ! fse3t_b prior update should be used 
    805805                     zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a) 
    806806                     zvnu = tabres(ji,jj,jk,1) 
    807                      vv(ji,jj,jk,Kbb_a) = ( zvb + atfp * ( zvnu - zvno) ) &       
     807                     vv(ji,jj,jk,Kbb_a) = ( zvb + rn_atfp * ( zvnu - zvno) ) &       
    808808                                    & * vmask(ji,jj,jk) / e3v(ji,jj,jk,Kbb_a) 
    809809                  ENDIF 
     
    814814         END DO 
    815815         ! 
    816          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     816         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    817817            vv(i1:i2,j1:j2,k1:k2,Kbb_a)  = vv(i1:i2,j1:j2,k1:k2,Kmm_a) 
    818818         ENDIF 
     
    907907               ! Update barotropic velocities: 
    908908               IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 
    909                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     909                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    910910                     zcorr = (tabres(ji,jj) - uu_b(ji,jj,Kmm_a) * hu(ji,jj,Krhs_a)) * r1_hu(ji,jj,Kbb_a) 
    911                      uu_b(ji,jj,Kbb_a) = uu_b(ji,jj,Kbb_a) + atfp * zcorr * umask(ji,jj,1) 
     911                     uu_b(ji,jj,Kbb_a) = uu_b(ji,jj,Kbb_a) + rn_atfp * zcorr * umask(ji,jj,1) 
    912912                  END IF 
    913913               ENDIF     
     
    928928         END DO 
    929929         ! 
    930          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     930         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    931931            uu_b(i1:i2,j1:j2,Kbb_a)  = uu_b(i1:i2,j1:j2,Kmm_a) 
    932932         ENDIF 
     
    973973               ! Update barotropic velocities: 
    974974               IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 
    975                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     975                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    976976                     zcorr = (tabres(ji,jj) - vv_b(ji,jj,Kmm_a) * hv(ji,jj,Krhs_a)) * r1_hv(ji,jj,Kbb_a) 
    977                      vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + atfp * zcorr * vmask(ji,jj,1) 
     977                     vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + rn_atfp * zcorr * vmask(ji,jj,1) 
    978978                  END IF 
    979979               ENDIF               
     
    994994         END DO 
    995995         ! 
    996          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     996         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    997997            vv_b(i1:i2,j1:j2,Kbb_a)  = vv_b(i1:i2,j1:j2,Kmm_a) 
    998998         ENDIF 
     
    10211021         END DO 
    10221022      ELSE 
    1023          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     1023         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    10241024            DO jj=j1,j2 
    10251025               DO ji=i1,i2 
    10261026                  ssh(ji,jj,Kbb_a) =   ssh(ji,jj,Kbb_a) & 
    1027                         & + atfp * ( tabres(ji,jj) - ssh(ji,jj,Kmm_a) ) * tmask(ji,jj,1) 
     1027                        & + rn_atfp * ( tabres(ji,jj) - ssh(ji,jj,Kmm_a) ) * tmask(ji,jj,1) 
    10281028               END DO 
    10291029            END DO 
     
    10361036         END DO 
    10371037         ! 
    1038          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     1038         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    10391039            ssh(i1:i2,j1:j2,Kbb_a)  = ssh(i1:i2,j1:j2,Kmm_a) 
    10401040         ENDIF 
     
    11171117         IF (western_side) THEN 
    11181118            DO jj=j1,j2 
    1119                zcor = rdt * r1_e1e2t(i1  ,jj) * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj))  
     1119               zcor = rn_Dt * r1_e1e2t(i1  ,jj) * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj))  
    11201120               ssh(i1  ,jj,Kmm_a) = ssh(i1  ,jj,Kmm_a) + zcor 
    1121                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(i1  ,jj,Kbb_a) = ssh(i1  ,jj,Kbb_a) + atfp * zcor 
     1121               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i1  ,jj,Kbb_a) = ssh(i1  ,jj,Kbb_a) + rn_atfp * zcor 
    11221122            END DO 
    11231123         ENDIF 
    11241124         IF (eastern_side) THEN 
    11251125            DO jj=j1,j2 
    1126                zcor = - rdt * r1_e1e2t(i2+1,jj) * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj)) 
     1126               zcor = - rn_Dt * r1_e1e2t(i2+1,jj) * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj)) 
    11271127               ssh(i2+1,jj,Kmm_a) = ssh(i2+1,jj,Kmm_a) + zcor 
    1128                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + atfp * zcor 
     1128               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + rn_atfp * zcor 
    11291129            END DO 
    11301130         ENDIF 
     
    12051205         IF (southern_side) THEN 
    12061206            DO ji=i1,i2 
    1207                zcor = rdt * r1_e1e2t(ji,j1  ) * e1v(ji,j1  ) * (vb2_b(ji,j1)-tabres(ji,j1)) 
     1207               zcor = rn_Dt * r1_e1e2t(ji,j1  ) * e1v(ji,j1  ) * (vb2_b(ji,j1)-tabres(ji,j1)) 
    12081208               ssh(ji,j1  ,Kmm_a) = ssh(ji,j1  ,Kmm_a) + zcor 
    1209                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(ji,j1  ,Kbb_a) = ssh(ji,j1,Kbb_a) + atfp * zcor 
     1209               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j1  ,Kbb_a) = ssh(ji,j1,Kbb_a) + rn_atfp * zcor 
    12101210            END DO 
    12111211         ENDIF 
    12121212         IF (northern_side) THEN                
    12131213            DO ji=i1,i2 
    1214                zcor = - rdt * r1_e1e2t(ji,j2+1) * e1v(ji,j2  ) * (vb2_b(ji,j2)-tabres(ji,j2)) 
     1214               zcor = - rn_Dt * r1_e1e2t(ji,j2+1) * e1v(ji,j2  ) * (vb2_b(ji,j2)-tabres(ji,j2)) 
    12151215               ssh(ji,j2+1,Kmm_a) = ssh(ji,j2+1,Kmm_a) + zcor 
    1216                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + atfp * zcor 
     1216               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + rn_atfp * zcor 
    12171217            END DO 
    12181218         ENDIF 
     
    13591359!         hdiv(i1:i2,j1:j2,1:jpkm1)   = e3t(i1:i2,j1:j2,1:jpkm1,Kbb_a) 
    13601360 
    1361          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0) )) THEN 
     1361         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler) )) THEN 
    13621362            DO jk = 1, jpkm1 
    13631363               DO jj=j1,j2 
    13641364                  DO ji=i1,i2 
    13651365                     e3t(ji,jj,jk,Kbb_a) =  e3t(ji,jj,jk,Kbb_a) & 
    1366                            & + atfp * ( ptab(ji,jj,jk) - e3t(ji,jj,jk,Kmm_a) ) 
     1366                           & + rn_atfp * ( ptab(ji,jj,jk) - e3t(ji,jj,jk,Kmm_a) ) 
    13671367                  END DO 
    13681368               END DO 
     
    14221422         END DO 
    14231423         ! 
    1424          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     1424         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    14251425            e3t (i1:i2,j1:j2,1:jpk,Kbb_a)  = e3t (i1:i2,j1:j2,1:jpk,Kmm_a) 
    14261426            e3w (i1:i2,j1:j2,1:jpk,Kbb_a)  = e3w (i1:i2,j1:j2,1:jpk,Kmm_a) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/NST/agrif_top_sponge.F90

    r12377 r12724  
    137137 
    138138         !* set relaxation time scale 
    139          IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt ) 
    140          ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rdt ) 
     139         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rn_Dt ) 
     140         ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rn_Dt ) 
    141141         ENDIF 
    142142 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/NST/agrif_top_update.F90

    r12377 r12724  
    125125         ENDDO 
    126126         ! 
    127          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     127         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    128128            ! Add asselin part 
    129129            DO jn = 1,jptra 
     
    135135                           ztnu = tabres_child(ji,jj,jk,jn) * e3t(ji,jj,jk,Kmm_a) 
    136136                           ztno = tr(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 
    137                            tr(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) )  &  
     137                           tr(ji,jj,jk,jn,Kbb_a) = ( ztb + rn_atfp * ( ztnu - ztno) )  &  
    138138                                     &        * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 
    139139                        ENDIF 
     
    155155         END DO 
    156156         ! 
    157          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     157         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    158158            tr(i1:i2,j1:j2,1:jpkm1,1:jptra,Kbb_a)  = tr(i1:i2,j1:j2,1:jpkm1,1:jptra,Kmm_a) 
    159159         ENDIF 
     
    199199         ENDDO 
    200200!< jc tmp 
    201          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     201         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    202202            ! Add asselin part 
    203203            DO jn = n1,n2 
     
    209209                           ztnu = tabres(ji,jj,jk,jn) 
    210210                           ztno = tr(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 
    211                            tr(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) )  &  
     211                           tr(ji,jj,jk,jn,Kbb_a) = ( ztb + rn_atfp * ( ztnu - ztno) )  &  
    212212                                     &        * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 
    213213                        ENDIF 
     
    229229         END DO 
    230230         ! 
    231          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     231         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    232232            tr(i1:i2,j1:j2,k1:k2,n1:n2,Kbb_a)  = tr(i1:i2,j1:j2,k1:k2,n1:n2,Kmm_a) 
    233233         ENDIF 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/NST/agrif_user.F90

    r12377 r12724  
    202202 
    203203         ! Check time steps            
    204          IF( NINT(Agrif_Rhot()) * NINT(rdt) .NE. Agrif_Parent(rdt) ) THEN 
    205             WRITE(cl_check1,*)  NINT(Agrif_Parent(rdt)) 
    206             WRITE(cl_check2,*)  NINT(rdt) 
    207             WRITE(cl_check3,*)  NINT(Agrif_Parent(rdt)/Agrif_Rhot()) 
     204         IF( NINT(Agrif_Rhot()) * NINT(rn_Dt) .NE. Agrif_Parent(rn_Dt) ) THEN 
     205            WRITE(cl_check1,*)  NINT(Agrif_Parent(rn_Dt)) 
     206            WRITE(cl_check2,*)  NINT(rn_Dt) 
     207            WRITE(cl_check3,*)  NINT(Agrif_Parent(rn_Dt)/Agrif_Rhot()) 
    208208            CALL ctl_stop( 'Incompatible time step between ocean grids',   & 
    209209                  &               'parent grid value : '//cl_check1    ,   &  
     
    613613      IF( check_namelist ) THEN 
    614614         ! Check time steps 
    615       IF( NINT(Agrif_Rhot()) * NINT(rdt) .NE. Agrif_Parent(rdt) ) THEN 
    616          WRITE(cl_check1,*)  Agrif_Parent(rdt) 
    617          WRITE(cl_check2,*)  rdt 
    618          WRITE(cl_check3,*)  rdt*Agrif_Rhot() 
     615      IF( NINT(Agrif_Rhot()) * NINT(rn_Dt) .NE. Agrif_Parent(rn_Dt) ) THEN 
     616         WRITE(cl_check1,*)  Agrif_Parent(rn_Dt) 
     617         WRITE(cl_check2,*)  rn_Dt 
     618         WRITE(cl_check3,*)  rn_Dt*Agrif_Rhot() 
    619619         CALL ctl_stop( 'incompatible time step between grids',   & 
    620620               &               'parent grid value : '//cl_check1    ,   &  
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ASM/asminc.F90

    r12680 r12724  
    489489      ENDIF 
    490490      ! 
    491       IF(lwp) WRITE(numout,*) '   ==>>>   Euler time step switch is ', neuler 
     491      IF(lwp) WRITE(numout,*) '   ==>>>   Euler time step switch is ', l_1st_euler 
    492492      ! 
    493493      IF( lk_asminc ) THEN                            !==  data assimilation  ==! 
     
    536536            ! 
    537537            it = kt - nit000 + 1 
    538             zincwgt = wgtiau(it) / rdt   ! IAU weight for the current time step 
     538            zincwgt = wgtiau(it) / rn_Dt   ! IAU weight for the current time step 
    539539            ! 
    540540            IF(lwp) THEN 
     
    579579         IF ( kt == nitdin_r ) THEN 
    580580            ! 
    581             neuler = 0  ! Force Euler forward step 
     581            l_1st_euler = .TRUE.  ! Force Euler forward step 
    582582            ! 
    583583            ! Initialize the now fields with the background + increment 
     
    653653            ! 
    654654            it = kt - nit000 + 1 
    655             zincwgt = wgtiau(it) / rdt   ! IAU weight for the current time step 
     655            zincwgt = wgtiau(it) / rn_Dt   ! IAU weight for the current time step 
    656656            ! 
    657657            IF(lwp) THEN 
     
    679679         IF ( kt == nitdin_r ) THEN 
    680680            ! 
    681             neuler = 0                    ! Force Euler forward step 
     681            l_1st_euler = .TRUE.                    ! Force Euler forward step 
    682682            ! 
    683683            ! Initialize the now fields with the background + increment 
     
    724724            ! 
    725725            it = kt - nit000 + 1 
    726             zincwgt = wgtiau(it) / rdt   ! IAU weight for the current time step 
     726            zincwgt = wgtiau(it) / rn_Dt   ! IAU weight for the current time step 
    727727            ! 
    728728            IF(lwp) THEN 
     
    755755         IF ( kt == nitdin_r ) THEN 
    756756            ! 
    757             neuler = 0                                   ! Force Euler forward step 
     757            l_1st_euler = .TRUE.                            ! Force Euler forward step 
    758758            ! 
    759759            ssh(:,:,Kmm) = ssh_bkg(:,:) + ssh_bkginc(:,:)   ! Initialize the now fields the background + increment 
     
    845845            it = kt - nit000 + 1 
    846846            zincwgt = wgtiau(it)      ! IAU weight for the current time step 
    847             ! note this is not a tendency so should not be divided by rdt (as with the tracer and other increments) 
     847            ! note this is not a tendency so should not be divided by rn_Dt (as with the tracer and other increments) 
    848848            ! 
    849849            IF(lwp) THEN 
     
    880880#if defined key_cice && defined key_asminc 
    881881            ! Sea-ice : CICE case. Pass ice increment tendency into CICE 
    882             ndaice_da(:,:) = seaice_bkginc(:,:) * zincwgt / rdt 
     882            ndaice_da(:,:) = seaice_bkginc(:,:) * zincwgt / rn_Dt 
    883883#endif 
    884884            ! 
     
    900900         IF ( kt == nitdin_r ) THEN 
    901901            ! 
    902             neuler = 0                    ! Force Euler forward step 
     902            l_1st_euler = 0              ! Force Euler forward step 
    903903            ! 
    904904            ! Sea-ice : SI3 case 
     
    930930#if defined key_cice && defined key_asminc 
    931931            ! Sea-ice : CICE case. Pass ice increment tendency into CICE 
    932            ndaice_da(:,:) = seaice_bkginc(:,:) / rdt 
     932           ndaice_da(:,:) = seaice_bkginc(:,:) / rn_Dt 
    933933#endif 
    934934            IF ( .NOT. PRESENT(kindic) ) THEN 
     
    963963!           ! fwf : ice formation and melting 
    964964! 
    965 !                 zfons = ( -nfresh_da(ji,jj)*soce + nfsalt_da(ji,jj) )*rdt 
     965!                 zfons = ( -nfresh_da(ji,jj)*soce + nfsalt_da(ji,jj) )*rn_Dt 
    966966! 
    967967!           ! change salinity down to mixed layer depth 
     
    10041004! 
    10051005!      !            !  salt exchanges at the ice/ocean interface 
    1006 !      !            zpmess         = zfons / rdt_ice    ! rdt_ice is ice timestep 
     1006!      !            zpmess         = zfons / rDt_ice    ! rDt_ice is ice timestep 
    10071007!      ! 
    10081008!      !! Adjust fsalt. A +ve fsalt means adding salt to ocean 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/BDY/bdydta.F90

    r12680 r12724  
    9393      INTEGER ::  ii, ij, ik, igrd, ipl               ! local integers 
    9494      INTEGER,   DIMENSION(jpbgrd)     ::   ilen1  
    95       INTEGER,   DIMENSION(:), POINTER ::   nblen, nblenrim  ! short cuts 
    9695      TYPE(OBC_DATA)         , POINTER ::   dta_alias        ! short cut 
    9796      TYPE(FLD), DIMENSION(:), POINTER ::   bf_alias 
     
    109108         DO jbdy = 1, nb_bdy 
    110109            ! 
    111             nblen    => idx_bdy(jbdy)%nblen 
    112             nblenrim => idx_bdy(jbdy)%nblenrim 
    113             ! 
    114110            IF( nn_dyn2d_dta(jbdy) == 0 ) THEN  
    115                ilen1(:) = nblen(:) 
    116111               IF( dta_bdy(jbdy)%lneed_ssh ) THEN  
    117112                  igrd = 1 
    118                   DO ib = 1, ilen1(igrd) 
     113                  DO ib = 1, idx_bdy(jbdy)%nblenrim(igrd)   ! ssh is allocated and used only on the rim 
    119114                     ii = idx_bdy(jbdy)%nbi(ib,igrd) 
    120115                     ij = idx_bdy(jbdy)%nbj(ib,igrd) 
     
    122117                  END DO 
    123118               ENDIF 
    124                IF( dta_bdy(jbdy)%lneed_dyn2d) THEN  
     119               IF( dta_bdy(jbdy)%lneed_dyn2d .AND. ASSOCIATED(dta_bdy(jbdy)%u2d) ) THEN   ! no SIZE with a unassociated pointer 
    125120                  igrd = 2 
    126                   DO ib = 1, ilen1(igrd) 
     121                  DO ib = 1, SIZE(dta_bdy(jbdy)%u2d)   ! u2d is used only on the rim except if ln_full_vel = T, see bdy_dta_init 
    127122                     ii = idx_bdy(jbdy)%nbi(ib,igrd) 
    128123                     ij = idx_bdy(jbdy)%nbj(ib,igrd) 
     
    130125                  END DO 
    131126                  igrd = 3 
    132                   DO ib = 1, ilen1(igrd) 
     127                  DO ib = 1, SIZE(dta_bdy(jbdy)%v2d)   ! v2d is used only on the rim except if ln_full_vel = T, see bdy_dta_init 
    133128                     ii = idx_bdy(jbdy)%nbi(ib,igrd) 
    134129                     ij = idx_bdy(jbdy)%nbj(ib,igrd) 
     
    139134            ! 
    140135            IF( nn_dyn3d_dta(jbdy) == 0 ) THEN  
    141                ilen1(:) = nblen(:) 
    142136               IF( dta_bdy(jbdy)%lneed_dyn3d ) THEN  
    143137                  igrd = 2  
    144                   DO ib = 1, ilen1(igrd) 
     138                  DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 
    145139                     DO ik = 1, jpkm1 
    146140                        ii = idx_bdy(jbdy)%nbi(ib,igrd) 
     
    150144                  END DO 
    151145                  igrd = 3  
    152                   DO ib = 1, ilen1(igrd) 
     146                  DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 
    153147                     DO ik = 1, jpkm1 
    154148                        ii = idx_bdy(jbdy)%nbi(ib,igrd) 
     
    161155 
    162156            IF( nn_tra_dta(jbdy) == 0 ) THEN  
    163                ilen1(:) = nblen(:) 
    164157               IF( dta_bdy(jbdy)%lneed_tra ) THEN 
    165158                  igrd = 1  
    166                   DO ib = 1, ilen1(igrd) 
     159                  DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 
    167160                     DO ik = 1, jpkm1 
    168161                        ii = idx_bdy(jbdy)%nbi(ib,igrd) 
     
    177170#if defined key_si3 
    178171            IF( nn_ice_dta(jbdy) == 0 ) THEN    ! set ice to initial values 
    179                ilen1(:) = nblen(:) 
    180172               IF( dta_bdy(jbdy)%lneed_ice ) THEN 
    181173                  igrd = 1    
    182174                  DO jl = 1, jpl 
    183                      DO ib = 1, ilen1(igrd) 
     175                     DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 
    184176                        ii = idx_bdy(jbdy)%nbi(ib,igrd) 
    185177                        ij = idx_bdy(jbdy)%nbj(ib,igrd) 
     
    237229         ! tidal harmonic forcing ONLY: initialise arrays 
    238230         IF( nn_dyn2d_dta(jbdy) == 2 ) THEN   ! we did not read ssh, u/v2d  
    239             IF( dta_alias%lneed_ssh   ) dta_alias%ssh(:) = 0._wp 
    240             IF( dta_alias%lneed_dyn2d ) dta_alias%u2d(:) = 0._wp 
    241             IF( dta_alias%lneed_dyn2d ) dta_alias%v2d(:) = 0._wp 
     231            IF( dta_alias%lneed_ssh   .AND. ASSOCIATED(dta_alias%ssh) ) dta_alias%ssh(:) = 0._wp 
     232            IF( dta_alias%lneed_dyn2d .AND. ASSOCIATED(dta_alias%u2d) ) dta_alias%u2d(:) = 0._wp 
     233            IF( dta_alias%lneed_dyn2d .AND. ASSOCIATED(dta_alias%v2d) ) dta_alias%v2d(:) = 0._wp 
    242234         ENDIF 
    243235 
     
    246238            ! 
    247239            igrd = 2                       ! zonal velocity 
    248             dta_alias%u2d(:) = 0._wp       ! compute barotrope zonal velocity and put it in u2d 
    249240            DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 
    250241               ii   = idx_bdy(jbdy)%nbi(ib,igrd) 
    251242               ij   = idx_bdy(jbdy)%nbj(ib,igrd) 
     243               dta_alias%u2d(ib) = 0._wp   ! compute barotrope zonal velocity and put it in u2d 
    252244               DO ik = 1, jpkm1 
    253245                  dta_alias%u2d(ib) = dta_alias%u2d(ib)   & 
     
    260252            END DO 
    261253            igrd = 3                       ! meridional velocity 
    262             dta_alias%v2d(:) = 0._wp       ! compute barotrope meridional velocity and put it in v2d 
    263254            DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 
    264255               ii   = idx_bdy(jbdy)%nbi(ib,igrd) 
    265256               ij   = idx_bdy(jbdy)%nbj(ib,igrd) 
     257               dta_alias%v2d(ib) = 0._wp   ! compute barotrope meridional velocity and put it in v2d 
    266258               DO ik = 1, jpkm1 
    267259                  dta_alias%v2d(ib) = dta_alias%v2d(ib)   & 
     
    286278 
    287279#if defined key_si3 
    288          IF( dta_alias%lneed_ice ) THEN 
     280         IF( dta_alias%lneed_ice .AND. idx_bdy(jbdy)%nblen(1) > 0 ) THEN 
    289281            ! fill temperature and salinity arrays 
    290282            IF( TRIM(bf_alias(jp_bdyt_i)%clrootname) == 'NOT USED' )   bf_alias(jp_bdyt_i)%fnow(:,1,:) = rice_tem (jbdy) 
     
    295287               &                                                                         bf_alias(jp_bdya_i)%fnow(:,1,:)     !   ( a_ip = rice_apnd * a_i ) 
    296288            IF( TRIM(bf_alias(jp_bdyhip)%clrootname) == 'NOT USED' )   bf_alias(jp_bdyhip)%fnow(:,1,:) = rice_hpnd(jbdy) 
     289             
     290            ! if T_i is read and not T_su, set T_su = T_i 
     291            IF( TRIM(bf_alias(jp_bdyt_i)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdytsu)%clrootname) == 'NOT USED' ) & 
     292               &   bf_alias(jp_bdytsu)%fnow(:,1,:) = bf_alias(jp_bdyt_i)%fnow(:,1,:) 
     293            ! if T_s is read and not T_su, set T_su = T_s 
     294            IF( TRIM(bf_alias(jp_bdyt_s)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdytsu)%clrootname) == 'NOT USED' ) & 
     295               &   bf_alias(jp_bdytsu)%fnow(:,1,:) = bf_alias(jp_bdyt_s)%fnow(:,1,:) 
     296            ! if T_i is read and not T_s, set T_s = T_i 
     297            IF( TRIM(bf_alias(jp_bdyt_i)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdyt_s)%clrootname) == 'NOT USED' ) & 
     298               &   bf_alias(jp_bdyt_s)%fnow(:,1,:) = bf_alias(jp_bdyt_i)%fnow(:,1,:) 
     299            ! if T_su is read and not T_s, set T_s = T_su 
     300            IF( TRIM(bf_alias(jp_bdytsu)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdyt_s)%clrootname) == 'NOT USED' ) & 
     301               &   bf_alias(jp_bdyt_s)%fnow(:,1,:) = bf_alias(jp_bdytsu)%fnow(:,1,:) 
    297302            ! if T_su is read and not T_i, set T_i = (T_su + T_freeze)/2 
    298303            IF( TRIM(bf_alias(jp_bdytsu)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdyt_i)%clrootname) == 'NOT USED' ) & 
    299304               &   bf_alias(jp_bdyt_i)%fnow(:,1,:) = 0.5_wp * ( bf_alias(jp_bdytsu)%fnow(:,1,:) + 271.15 ) 
    300             ! if T_su is read and not T_s, set T_s = T_su 
    301             IF( TRIM(bf_alias(jp_bdytsu)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdyt_s)%clrootname) == 'NOT USED' ) & 
    302                &   bf_alias(jp_bdyt_s)%fnow(:,1,:) = bf_alias(jp_bdytsu)%fnow(:,1,:) 
    303             ! if T_s is read and not T_su, set T_su = T_s 
    304             IF( TRIM(bf_alias(jp_bdyt_s)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdytsu)%clrootname) == 'NOT USED' ) & 
    305                &   bf_alias(jp_bdytsu)%fnow(:,1,:) = bf_alias(jp_bdyt_s)%fnow(:,1,:) 
    306305            ! if T_s is read and not T_i, set T_i = (T_s + T_freeze)/2 
    307306            IF( TRIM(bf_alias(jp_bdyt_s)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdyt_i)%clrootname) == 'NOT USED' ) & 
     
    334333            DO jbdy = 1, nb_bdy      ! Tidal component added in ts loop 
    335334               IF ( nn_dyn2d_dta(jbdy) .GE. 2 ) THEN 
    336                   nblen => idx_bdy(jbdy)%nblen 
    337                   nblenrim => idx_bdy(jbdy)%nblenrim 
    338                   IF( cn_dyn2d(jbdy) == 'frs' ) THEN   ;   ilen1(:)=nblen(:) 
    339                   ELSE                                 ;   ilen1(:)=nblenrim(:) 
     335                  IF( cn_dyn2d(jbdy) == 'frs' ) THEN   ;   ilen1(:)=idx_bdy(jbdy)%nblen(:) 
     336                  ELSE                                 ;   ilen1(:)=idx_bdy(jbdy)%nblenrim(:) 
    340337                  ENDIF 
    341338                  IF ( dta_bdy(jbdy)%lneed_ssh   ) dta_bdy_s(jbdy)%ssh(1:ilen1(1)) = dta_bdy(jbdy)%ssh(1:ilen1(1)) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/BDY/bdyice.F90

    r11536 r12724  
    179179 
    180180            ! Then, a) transfer the snow excess into the ice (different from icethd_dh) 
    181             zdh = MAX( 0._wp, ( rhos * h_s(ji,jj,jl) + ( rhoi - rau0 ) * h_i(ji,jj,jl) ) * r1_rau0 ) 
     181            zdh = MAX( 0._wp, ( rhos * h_s(ji,jj,jl) + ( rhoi - rho0 ) * h_i(ji,jj,jl) ) * r1_rho0 ) 
    182182            ! Or, b) transfer all the snow into ice (if incoming ice is likely to melt as it comes into a warmer environment) 
    183183            !zdh = MAX( 0._wp, h_s(ji,jj,jl) * rhos / rhoi ) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/BDY/bdylib.F90

    r12377 r12724  
    240240         ! Centred derivative is calculated as average of "left" and "right" derivatives for  
    241241         ! this reason.  
    242          ! Note no rdt factor in expression for zdt because it cancels in the expressions for  
     242         ! Note no rn_Dt factor in expression for zdt because it cancels in the expressions for  
    243243         ! zrx and zry. 
    244244         zdt   =     phia(iibm1   ,ijbm1   ) - phib(iibm1   ,ijbm1   ) 
     
    259259         zout = sign( 1., zrx ) 
    260260         zout = 0.5*( zout + abs(zout) ) 
    261          zwgt = 2.*rdt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
     261         zwgt = 2.*rn_Dt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
    262262         ! only apply radiation on outflow points  
    263263         if( ll_npo ) then     !! NPO version !! 
     
    425425            zout = sign( 1., zrx ) 
    426426            zout = 0.5*( zout + abs(zout) ) 
    427             zwgt = 2.*rdt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
     427            zwgt = 2.*rn_Dt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
    428428            ! only apply radiation on outflow points  
    429429            if( ll_npo ) then     !! NPO version !! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/BDY/bdytides.F90

    r12377 r12724  
    297297      ! Absolute time from model initialization:    
    298298      IF( PRESENT(kit) ) THEN   
    299          z_arg = ( REAL(kt, wp) + ( REAL(kit, wp) + zt_offset - 1. ) / REAL(nn_baro, wp) ) * rdt 
     299         z_arg = ( REAL(kt, wp) + ( REAL(kit, wp) + zt_offset - 1. ) / REAL(nn_e, wp) ) * rn_Dt 
    300300      ELSE                               
    301          z_arg = ( REAL(kt, wp) + zt_offset ) * rdt 
     301         z_arg = ( REAL(kt, wp) + zt_offset ) * rn_Dt 
    302302      ENDIF 
    303303 
    304304      ! Linear ramp on tidal component at open boundaries  
    305305      zramp = 1. 
    306       IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - REAL(nit000,wp)*rdt)/(rn_tide_ramp_dt*rday),0.),1.) 
     306      IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - REAL(nit000,wp)*rn_Dt)/(rn_tide_ramp_dt*rday),0.),1.) 
    307307 
    308308      DO ib_bdy = 1,nb_bdy 
     
    319319            ! We refresh nodal factors every day below 
    320320            ! This should be done somewhere else 
    321             IF ( ( nsec_day == NINT(0.5_wp * rdt) .OR. kt==nit000 ) .AND. lk_first_btstp ) THEN 
    322                ! 
    323                kt_tide = kt - NINT((REAL(nsec_day,wp) - 0.5_wp * rdt)/rdt) 
     321            IF ( ( nsec_day == NINT(0.5_wp * rn_Dt) .OR. kt==nit000 ) .AND. lk_first_btstp ) THEN 
     322               ! 
     323               kt_tide = kt - NINT((REAL(nsec_day,wp) - 0.5_wp * rn_Dt)/rn_Dt) 
    324324               ! 
    325325               IF(lwp) THEN 
     
    333333               ! 
    334334            ENDIF 
    335             zoff = REAL(-kt_tide,wp) * rdt ! time offset relative to nodal factor computation time 
     335            zoff = REAL(-kt_tide,wp) * rn_Dt ! time offset relative to nodal factor computation time 
    336336            ! 
    337337            ! If time splitting, initialize arrays from slow varying open boundary data: 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/BDY/bdyvol.F90

    r12377 r12724  
    7777      ! Calculate the cumulate surface Flux z_cflxemp (m3/s) over all the domain 
    7878      ! ----------------------------------------------------------------------- 
    79       IF ( kc == 1 ) z_cflxemp = glob_sum( 'bdyvol', ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * bdytmask(:,:) * e1e2t(:,:)  ) / rau0 
     79      IF ( kc == 1 ) z_cflxemp = glob_sum( 'bdyvol', ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * bdytmask(:,:) * e1e2t(:,:)  ) / rho0 
    8080 
    8181      ! Compute bdy surface each cycle if non linear free surface 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/dia25h.F90

    r12377 r12724  
    140140      ! ----------------- 
    141141      ! Define frequency of summing to create 25 h mean 
    142       IF( MOD( 3600,NINT(rdt) ) == 0 ) THEN 
    143          i_steps = 3600/NINT(rdt) 
     142      IF( MOD( 3600,NINT(rn_Dt) ) == 0 ) THEN 
     143         i_steps = 3600/NINT(rn_Dt) 
    144144      ELSE 
    145          CALL ctl_stop('STOP', 'dia_wri_tide: timestep must give MOD(3600,rdt) = 0 otherwise no hourly values are possible') 
     145         CALL ctl_stop('STOP', 'dia_wri_tide: timestep must give MOD(3600,rn_Dt) = 0 otherwise no hourly values are possible') 
    146146      ENDIF 
    147147 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diaar5.F90

    r12680 r12724  
    3232   REAL(wp)                         ::   vol0         ! ocean volume (interior domain) 
    3333   REAL(wp)                         ::   area_tot     ! total ocean surface (interior domain) 
    34    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:  ) ::   area         ! cell surface (interior domain) 
    3534   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:  ) ::   thick0       ! ocean thickness (interior domain) 
    3635   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sn0          ! initial salinity 
     
    5554      !!---------------------------------------------------------------------- 
    5655      ! 
    57       ALLOCATE( area(jpi,jpj), thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc ) 
     56      ALLOCATE( thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc ) 
    5857      ! 
    5958      CALL mpp_sum ( 'diaar5', dia_ar5_alloc ) 
     
    9190         ALLOCATE( zrhd(jpi,jpj,jpk) , zrhop(jpi,jpj,jpk) ) 
    9291         ALLOCATE( ztsn(jpi,jpj,jpk,jpts) ) 
    93          zarea_ssh(:,:) = area(:,:) * ssh(:,:,Kmm) 
    94       ENDIF 
    95       ! 
    96       CALL iom_put( 'e2u'      , e2u (:,:) ) 
    97       CALL iom_put( 'e1v'      , e1v (:,:) ) 
    98       CALL iom_put( 'areacello', area(:,:) ) 
     92         zarea_ssh(:,:) = e1e2t(:,:) * ssh(:,:,Kmm) 
     93      ENDIF 
     94      ! 
     95      CALL iom_put( 'e2u'      , e2u  (:,:) ) 
     96      CALL iom_put( 'e1v'      , e1v  (:,:) ) 
     97      CALL iom_put( 'areacello', e1e2t(:,:) ) 
    9998      ! 
    10099      IF( iom_use( 'volcello' ) .OR. iom_use( 'masscello' )  ) THEN   
    101100         zrhd(:,:,jpk) = 0._wp        ! ocean volume ; rhd is used as workspace 
    102101         DO jk = 1, jpkm1 
    103             zrhd(:,:,jk) = area(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
     102            zrhd(:,:,jk) = e1e2t(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
    104103         END DO 
    105104         DO jk = 1, jpk 
    106             z3d(:,:,jk) =  rau0 * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
     105            z3d(:,:,jk) =  rho0 * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
    107106         END DO  
    108107         CALL iom_put( 'volcello'  , zrhd(:,:,:)  )  ! WARNING not consistent with CMIP DR where volcello is at ca. 2000 
     
    155154         END IF 
    156155         !                                          
    157          zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )  
     156         zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) )  
    158157         zssh_steric = - zarho / area_tot 
    159158         CALL iom_put( 'sshthster', zssh_steric ) 
     
    181180         END IF 
    182181         !     
    183          zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )  
     182         zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) )  
    184183         zssh_steric = - zarho / area_tot 
    185184         CALL iom_put( 'sshsteric', zssh_steric ) 
    186185         !                                         ! ocean bottom pressure 
    187          zztmp = rau0 * grav * 1.e-4_wp               ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 
     186         zztmp = rho0 * grav * 1.e-4_wp               ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 
    188187         zbotpres(:,:) = zztmp * ( zbotpres(:,:) + ssh(:,:,Kmm) + thick0(:,:) ) 
    189188         CALL iom_put( 'botpres', zbotpres ) 
     
    195194          ztsn(:,:,:,:) = 0._wp                    ! ztsn(:,:,1,jp_tem/sal) is used here as 2D Workspace for temperature & salinity 
    196195          DO_3D_11_11( 1, jpkm1 ) 
    197              zztmp = area(ji,jj) * e3t(ji,jj,jk,Kmm) 
     196             zztmp = e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) 
    198197             ztsn(ji,jj,1,jp_tem) = ztsn(ji,jj,1,jp_tem) + zztmp * ts(ji,jj,jk,jp_tem,Kmm) 
    199198             ztsn(ji,jj,1,jp_sal) = ztsn(ji,jj,1,jp_sal) + zztmp * ts(ji,jj,jk,jp_sal,Kmm) 
     
    217216         ztemp = glob_sum( 'diaar5', ztsn(:,:,1,jp_tem) ) 
    218217         zsal  = glob_sum( 'diaar5', ztsn(:,:,1,jp_sal) ) 
    219          zmass = rau0 * ( zarho + zvol )       
     218         zmass = rho0 * ( zarho + zvol )       
    220219         ! 
    221220         CALL iom_put( 'masstot', zmass ) 
     
    241240               z2d(:,:) = 0._wp 
    242241               DO jk = 1, jpkm1 
    243                  z2d(:,:) = z2d(:,:) + area(:,:) * e3t(:,:,jk,Kmm) * ztpot(:,:,jk) 
     242                 z2d(:,:) = z2d(:,:) + e1e2t(:,:) * e3t(:,:,jk,Kmm) * ztpot(:,:,jk) 
    244243               END DO 
    245244               ztemp = glob_sum( 'diaar5', z2d(:,:)  )  
     
    248247             ! 
    249248             IF( iom_use( 'ssttot' ) ) THEN   ! Output potential temperature in case we use TEOS-10 
    250                zsst = glob_sum( 'diaar5',  area(:,:) * ztpot(:,:,1)  )  
     249               zsst = glob_sum( 'diaar5',  e1e2t(:,:) * ztpot(:,:,1)  )  
    251250               CALL iom_put( 'ssttot', zsst / area_tot ) 
    252251             ENDIF 
     
    255254               z2d(:,:) = 0._wp 
    256255               DO_3D_11_11( 1, jpkm1 ) 
    257                   z2d(ji,jj) = z2d(ji,jj) + rau0 * e3t(ji,jj,jk,Kmm) *  ztpot(ji,jj,jk) 
     256                  z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) *  ztpot(ji,jj,jk) 
    258257               END_3D 
    259258               CALL iom_put( 'tosmint_pot', z2d )  
     
    263262      ELSE        
    264263         IF( iom_use('ssttot') ) THEN   ! Output sst in case we use EOS-80 
    265             zsst  = glob_sum( 'diaar5', area(:,:) * ts(:,:,1,jp_tem,Kmm) ) 
     264            zsst  = glob_sum( 'diaar5', e1e2t(:,:) * ts(:,:,1,jp_tem,Kmm) ) 
    266265            CALL iom_put('ssttot', zsst / area_tot ) 
    267266         ENDIF 
     
    289288          ELSE 
    290289            DO_3D_11_11( 1, jpk ) 
    291                zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rau0 * e3w(ji,jj,jk,Kmm) 
     290               zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rho0 * e3w(ji,jj,jk,Kmm) 
    292291            END_3D 
    293292         ENDIF 
     
    329328       CALL lbc_lnk( 'diaar5', z2d, 'U', -1. ) 
    330329       IF( cptr == 'adv' ) THEN 
    331           IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , rau0_rcp * z2d )  ! advective heat transport in i-direction 
    332           IF( ktra == jp_sal ) CALL iom_put( 'uadv_salttr' , rau0     * z2d )  ! advective salt transport in i-direction 
     330          IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , rho0_rcp * z2d )  ! advective heat transport in i-direction 
     331          IF( ktra == jp_sal ) CALL iom_put( 'uadv_salttr' , rho0     * z2d )  ! advective salt transport in i-direction 
    333332       ENDIF 
    334333       IF( cptr == 'ldf' ) THEN 
    335           IF( ktra == jp_tem ) CALL iom_put( 'udiff_heattr' , rau0_rcp * z2d ) ! diffusive heat transport in i-direction 
    336           IF( ktra == jp_sal ) CALL iom_put( 'udiff_salttr' , rau0     * z2d ) ! diffusive salt transport in i-direction 
     334          IF( ktra == jp_tem ) CALL iom_put( 'udiff_heattr' , rho0_rcp * z2d ) ! diffusive heat transport in i-direction 
     335          IF( ktra == jp_sal ) CALL iom_put( 'udiff_salttr' , rho0     * z2d ) ! diffusive salt transport in i-direction 
    337336       ENDIF 
    338337       ! 
     
    343342       CALL lbc_lnk( 'diaar5', z2d, 'V', -1. ) 
    344343       IF( cptr == 'adv' ) THEN 
    345           IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , rau0_rcp * z2d )  ! advective heat transport in j-direction 
    346           IF( ktra == jp_sal ) CALL iom_put( 'vadv_salttr' , rau0     * z2d )  ! advective salt transport in j-direction 
     344          IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , rho0_rcp * z2d )  ! advective heat transport in j-direction 
     345          IF( ktra == jp_sal ) CALL iom_put( 'vadv_salttr' , rho0     * z2d )  ! advective salt transport in j-direction 
    347346       ENDIF 
    348347       IF( cptr == 'ldf' ) THEN 
    349           IF( ktra == jp_tem ) CALL iom_put( 'vdiff_heattr' , rau0_rcp * z2d ) ! diffusive heat transport in j-direction 
    350           IF( ktra == jp_sal ) CALL iom_put( 'vdiff_salttr' , rau0     * z2d ) ! diffusive salt transport in j-direction 
     348          IF( ktra == jp_tem ) CALL iom_put( 'vdiff_heattr' , rho0_rcp * z2d ) ! diffusive heat transport in j-direction 
     349          IF( ktra == jp_sal ) CALL iom_put( 'vdiff_salttr' , rho0     * z2d ) ! diffusive salt transport in j-direction 
    351350       ENDIF 
    352351           
     
    379378         IF( dia_ar5_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' ) 
    380379 
    381          area(:,:) = e1e2t(:,:) 
    382          area_tot  = glob_sum( 'diaar5', area(:,:) ) 
     380         area_tot  = glob_sum( 'diaar5', e1e2t(:,:) ) 
    383381 
    384382         ALLOCATE( zvol0(jpi,jpj) ) 
     
    387385         DO_3D_11_11( 1, jpkm1 ) 
    388386            idep = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 
    389             zvol0 (ji,jj) = zvol0 (ji,jj) +  idep * area(ji,jj) 
     387            zvol0 (ji,jj) = zvol0 (ji,jj) +  idep * e1e2t(ji,jj) 
    390388            thick0(ji,jj) = thick0(ji,jj) +  idep     
    391389         END_3D 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diacfl.F90

    r12622 r12724  
    5353      ! 
    5454      INTEGER                          ::   ji, jj, jk                       ! dummy loop indices 
    55       REAL(wp)                         ::   z2dt, zCu_max, zCv_max, zCw_max  ! local scalars 
     55      REAL(wp)                         ::   zCu_max, zCv_max, zCw_max        ! local scalars 
    5656      INTEGER , DIMENSION(3)           ::   iloc_u , iloc_v , iloc_w , iloc  ! workspace 
    5757      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zCu_cfl, zCv_cfl, zCw_cfl        ! workspace 
     
    6060      IF( ln_timing )   CALL timing_start('dia_cfl') 
    6161      ! 
    62       !                       ! setup timestep multiplier to account for initial Eulerian timestep 
    63       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;    z2dt = rdt 
    64       ELSE                                        ;    z2dt = rdt * 2._wp 
    65       ENDIF 
    66       ! 
    67       !                 
    6862      DO_3D_11_11( 1, jpk ) 
    69          zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * z2dt / e1u  (ji,jj)      ! for i-direction 
    70          zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * z2dt / e2v  (ji,jj)      ! for j-direction 
    71          zCw_cfl(ji,jj,jk) = ABS( ww(ji,jj,jk) ) * z2dt / e3w(ji,jj,jk,Kmm)   ! for k-direction 
     63         zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * rDt / e1u  (ji,jj)      ! for i-direction 
     64         zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * rDt / e2v  (ji,jj)      ! for j-direction 
     65         zCw_cfl(ji,jj,jk) = ABS( ww(ji,jj,jk) ) * rDt / e3w(ji,jj,jk,Kmm)   ! for k-direction 
    7266      END_3D 
    7367      ! 
     
    119113         WRITE(numcfl,*) '******************************************' 
    120114         WRITE(numcfl,FMT='(3x,a12,6x,f7.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cu', rCu_max, nCu_loc(1), nCu_loc(2), nCu_loc(3) 
    121          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCu_max 
     115         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', rDt/rCu_max 
    122116         WRITE(numcfl,*) '******************************************' 
    123117         WRITE(numcfl,FMT='(3x,a12,6x,f7.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cv', rCv_max, nCv_loc(1), nCv_loc(2), nCv_loc(3) 
    124          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCv_max 
     118         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', rDt/rCv_max 
    125119         WRITE(numcfl,*) '******************************************' 
    126120         WRITE(numcfl,FMT='(3x,a12,6x,f7.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cw', rCw_max, nCw_loc(1), nCw_loc(2), nCw_loc(3) 
    127          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCw_max 
     121         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', rDt/rCw_max 
    128122         CLOSE( numcfl )  
    129123         ! 
     
    132126         WRITE(numout,*) 'dia_cfl : Maximum Courant number information for the run ' 
    133127         WRITE(numout,*) '~~~~~~~' 
    134          WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', z2dt/rCu_max 
    135          WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', z2dt/rCv_max 
    136          WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', z2dt/rCw_max 
     128         WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', rDt/rCu_max 
     129         WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', rDt/rCv_max 
     130         WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', rDt/rCw_max 
    137131      ENDIF 
    138132      ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diadct.F90

    r12680 r12724  
    679679                  zsn   = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) )  
    680680                  zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop)  
    681                   zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rau0+rau0)  
     681                  zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0)  
    682682                  zsshn =  0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I,k%J+1,Kmm)    ) * vmask(k%I,k%J,1)  
    683683               CASE(2,3)  
     
    685685                  zsn   = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) )  
    686686                  zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop)  
    687                   zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rau0+rau0)  
     687                  zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0)  
    688688                  zsshn =  0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm)    ) * umask(k%I,k%J,1)   
    689689               END SELECT  
     
    852852                 zsn   = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) )  
    853853                 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop)  
    854                  zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rau0+rau0)  
     854                 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0)  
    855855 
    856856              CASE(2,3)  
     
    858858                 zsn   = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) )  
    859859                 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop)  
    860                  zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rau0+rau0)  
     860                 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0)  
    861861                 zsshn =  0.5*( ssh(k%I,k%J,Kmm)    + ssh(k%I+1,k%J,Kmm)    ) * umask(k%I,k%J,1)   
    862862              END SELECT  
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diadetide.F90

    r12377 r12724  
    99   USE in_out_manager , ONLY :   lwp, numout 
    1010   USE iom            , ONLY :   iom_put 
    11    USE dom_oce        , ONLY :   rdt, nsec_day 
     11   USE dom_oce        , ONLY :   rn_Dt, nsec_day 
    1212   USE phycst         , ONLY :   rpi 
    1313   USE tide_mod 
     
    100100      zwght = 0.0_wp 
    101101      DO jn = 1, ndiadetide 
    102          ztmp = ( tdiadetide(jn) - REAL( nsec_day, KIND=wp ) ) / rdt 
     102         ztmp = ( tdiadetide(jn) - REAL( nsec_day, KIND=wp ) ) / rn_Dt 
    103103         IF ( ( ztmp < 0.5_wp ).AND.( ztmp >= -0.5_wp ) ) THEN 
    104104            zwght = zwght + 1.0_wp / REAL( ndiadetide, KIND=wp ) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diahsb.F90

    r12680 r12724  
    9393      ! 1 - Trends due to forcing ! 
    9494      ! ------------------------- ! 
    95       z_frc_trd_v = r1_rau0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * surf(:,:) )   ! volume fluxes 
     95      z_frc_trd_v = r1_rho0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * surf(:,:) )   ! volume fluxes 
    9696      z_frc_trd_t =           glob_sum( 'diahsb', sbc_tsc(:,:,jp_tem) * surf(:,:) )                       ! heat fluxes 
    9797      z_frc_trd_s =           glob_sum( 'diahsb', sbc_tsc(:,:,jp_sal) * surf(:,:) )                       ! salt fluxes 
     
    103103         &                          + glob_sum( 'diahsb', ( risf_cav_tsc(:,:,jp_tem) + risf_par_tsc(:,:,jp_tem) ) * surf(:,:) ) 
    104104      !                    ! Add penetrative solar radiation 
    105       IF( ln_traqsr )   z_frc_trd_t = z_frc_trd_t + r1_rau0_rcp * glob_sum( 'diahsb', qsr     (:,:) * surf(:,:) ) 
     105      IF( ln_traqsr )   z_frc_trd_t = z_frc_trd_t + r1_rho0_rcp * glob_sum( 'diahsb', qsr     (:,:) * surf(:,:) ) 
    106106      !                    ! Add geothermal heat flux 
    107107      IF( ln_trabbc )   z_frc_trd_t = z_frc_trd_t +               glob_sum( 'diahsb', qgh_trd0(:,:) * surf(:,:) ) 
     
    123123      ENDIF 
    124124 
    125       frc_v = frc_v + z_frc_trd_v * rdt 
    126       frc_t = frc_t + z_frc_trd_t * rdt 
    127       frc_s = frc_s + z_frc_trd_s * rdt 
     125      frc_v = frc_v + z_frc_trd_v * rn_Dt 
     126      frc_t = frc_t + z_frc_trd_t * rn_Dt 
     127      frc_s = frc_s + z_frc_trd_s * rn_Dt 
    128128      !                                          ! Advection flux through fixed surface (z=0) 
    129129      IF( ln_linssh ) THEN 
    130          frc_wn_t = frc_wn_t + z_wn_trd_t * rdt 
    131          frc_wn_s = frc_wn_s + z_wn_trd_s * rdt 
     130         frc_wn_t = frc_wn_t + z_wn_trd_t * rn_Dt 
     131         frc_wn_s = frc_wn_s + z_wn_trd_s * rn_Dt 
    132132      ENDIF 
    133133 
     
    202202 
    203203      CALL iom_put(   'bgfrcvol' , frc_v    * 1.e-9    )              ! vol - surface forcing (km3)  
    204       CALL iom_put(   'bgfrctem' , frc_t    * rau0 * rcp * 1.e-20 )   ! hc  - surface forcing (1.e20 J)  
    205       CALL iom_put(   'bgfrchfx' , frc_t    * rau0 * rcp /  &         ! hc  - surface forcing (W/m2)  
    206          &                       ( surf_tot * kt * rdt )        ) 
     204      CALL iom_put(   'bgfrctem' , frc_t    * rho0 * rcp * 1.e-20 )   ! hc  - surface forcing (1.e20 J)  
     205      CALL iom_put(   'bgfrchfx' , frc_t    * rho0 * rcp /  &         ! hc  - surface forcing (W/m2)  
     206         &                       ( surf_tot * kt * rn_Dt )        ) 
    207207      CALL iom_put(   'bgfrcsal' , frc_s    * 1.e-9    )              ! sc  - surface forcing (psu*km3)  
    208208 
     
    210210         CALL iom_put( 'bgtemper' , zdiff_hc / zvol_tot )              ! Temperature drift     (C)  
    211211         CALL iom_put( 'bgsaline' , zdiff_sc / zvol_tot )              ! Salinity    drift     (PSU) 
    212          CALL iom_put( 'bgheatco' , zdiff_hc * 1.e-20 * rau0 * rcp )   ! Heat content drift    (1.e20 J)  
    213          CALL iom_put( 'bgheatfx' , zdiff_hc * rau0 * rcp /  &         ! Heat flux drift       (W/m2)  
    214             &                       ( surf_tot * kt * rdt )        ) 
     212         CALL iom_put( 'bgheatco' , zdiff_hc * 1.e-20 * rho0 * rcp )   ! Heat content drift    (1.e20 J)  
     213         CALL iom_put( 'bgheatfx' , zdiff_hc * rho0 * rcp /  &         ! Heat flux drift       (W/m2)  
     214            &                       ( surf_tot * kt * rn_Dt )        ) 
    215215         CALL iom_put( 'bgsaltco' , zdiff_sc * 1.e-9    )              ! Salt content drift    (psu*km3) 
    216216         CALL iom_put( 'bgvolssh' , zdiff_v1 * 1.e-9    )              ! volume ssh drift      (km3)   
     
    230230         CALL iom_put( 'bgtemper' , zdiff_hc1 / zvol_tot)              ! Heat content drift    (C)  
    231231         CALL iom_put( 'bgsaline' , zdiff_sc1 / zvol_tot)              ! Salt content drift    (PSU) 
    232          CALL iom_put( 'bgheatco' , zdiff_hc1 * 1.e-20 * rau0 * rcp )  ! Heat content drift    (1.e20 J)  
    233          CALL iom_put( 'bgheatfx' , zdiff_hc1 * rau0 * rcp /  &        ! Heat flux drift       (W/m2)  
    234             &                       ( surf_tot * kt * rdt )         ) 
     232         CALL iom_put( 'bgheatco' , zdiff_hc1 * 1.e-20 * rho0 * rcp )  ! Heat content drift    (1.e20 J)  
     233         CALL iom_put( 'bgheatfx' , zdiff_hc1 * rho0 * rcp /  &        ! Heat flux drift       (W/m2)  
     234            &                       ( surf_tot * kt * rn_Dt )         ) 
    235235         CALL iom_put( 'bgsaltco' , zdiff_sc1 * 1.e-9    )             ! Salt content drift    (psu*km3) 
    236236         CALL iom_put( 'bgvolssh' , zdiff_v1 * 1.e-9    )              ! volume ssh drift      (km3)   
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diahth.F90

    r12622 r12724  
    262262            zzdep = 300. 
    263263            CALL  dia_hth_htc( Kmm, zzdep, ts(:,:,:,jp_tem,Kmm), htc3 ) 
    264             CALL iom_put( 'hc300', rau0_rcp * htc3 )  ! vertically integrated heat content (J/m2) 
     264            CALL iom_put( 'hc300', rho0_rcp * htc3 )  ! vertically integrated heat content (J/m2) 
    265265         ENDIF 
    266266         ! 
     
    271271            zzdep = 700. 
    272272            CALL  dia_hth_htc( Kmm, zzdep, ts(:,:,:,jp_tem,Kmm), htc7 ) 
    273             CALL iom_put( 'hc700', rau0_rcp * htc7 )  ! vertically integrated heat content (J/m2) 
     273            CALL iom_put( 'hc700', rho0_rcp * htc7 )  ! vertically integrated heat content (J/m2) 
    274274   
    275275         ENDIF 
     
    281281            zzdep = 2000. 
    282282            CALL  dia_hth_htc( Kmm, zzdep, ts(:,:,:,jp_tem,Kmm), htc20 ) 
    283             CALL iom_put( 'hc2000', rau0_rcp * htc20 )  ! vertically integrated heat content (J/m2)   
     283            CALL iom_put( 'hc2000', rho0_rcp * htc20 )  ! vertically integrated heat content (J/m2)   
    284284         ENDIF 
    285285         ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diamlr.F90

    r12680 r12724  
    8787      INTEGER                                     ::   itide                       ! Number of available tidal components 
    8888      REAL(wp)                                    ::   ztide_phase                 ! Tidal-constituent phase at adatrj=0 
    89       CHARACTER (LEN=4), DIMENSION(jpmax_harmo)   ::   ctide_selected = ' n/a ' 
     89      CHARACTER (LEN=4), DIMENSION(jpmax_harmo)   ::   ctide_selected = 'n/a ' 
    9090      TYPE(tide_harmonic), DIMENSION(:), POINTER  ::   stideconst 
    9191 
     
    148148            ! Retrieve information (frequency, phase, nodal correction) about all 
    149149            ! available tidal constituents for placeholder substitution below 
    150             ctide_selected(1:34) = (/ 'Mf  ', 'Mm  ', 'Ssa ', 'Mtm ', 'Msf ',    & 
    151    &                      'Msqm', 'Sa  ', 'K1  ', 'O1  ', 'P1  ',     & 
    152    &                      'Q1  ', 'J1  ', 'S1  ', 'M2  ', 'S2  ', 'N2  ', & 
    153    &                      'K2  ', 'nu2 ', 'mu2 ', '2N2 ', 'L2  ',    & 
    154    &                      'T2  ', 'eps2', 'lam2', 'R2  ', 'M3  ',   & 
    155    &                      'MKS2', 'MN4 ', 'MS4 ', 'M4  ', 'N4  ',   & 
    156    &                      'S4  ', 'M6  ', 'M8  ' /) 
     150            ! Warning: we must use the same character length in an array constructor (at least for gcc compiler) 
     151            ctide_selected(1:34) = (/ 'Mf  ', 'Mm  ', 'Ssa ', 'Mtm ', 'Msf ',         & 
     152               &                      'Msqm', 'Sa  ', 'K1  ', 'O1  ', 'P1  ',         & 
     153               &                      'Q1  ', 'J1  ', 'S1  ', 'M2  ', 'S2  ', 'N2  ', & 
     154               &                      'K2  ', 'nu2 ', 'mu2 ', '2N2 ', 'L2  ',         & 
     155               &                      'T2  ', 'eps2', 'lam2', 'R2  ', 'M3  ',         & 
     156               &                      'MKS2', 'MN4 ', 'MS4 ', 'M4  ', 'N4  ',         & 
     157               &                      'S4  ', 'M6  ', 'M8  ' /) 
    157158            CALL tide_init_harmonics(ctide_selected, stideconst) 
    158159            itide = size(stideconst) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/dianam.F90

    r10068 r12724  
    7272 
    7373      IF( llfsec .OR. kfreq < 0 ) THEN   ;   inbsec = kfreq                       ! output frequency already in seconds 
    74       ELSE                               ;   inbsec = kfreq * NINT( rdt )   ! from time-step to seconds 
     74      ELSE                               ;   inbsec = kfreq * NINT( rn_Dt )   ! from time-step to seconds 
    7575      ENDIF 
    7676      iddss = NINT( rday          )                                         ! number of seconds in 1 day 
     
    116116      ! date of the beginning and the end of the run 
    117117 
    118       zdrun = rdt / rday * REAL( nitend - nit000, wp )                ! length of the run in days 
    119       zjul  = fjulday - rdt / rday 
     118      zdrun = rn_Dt / rday * REAL( nitend - nit000, wp )                ! length of the run in days 
     119      zjul  = fjulday - rn_Dt / rday 
    120120      CALL ju2ymds( zjul        , iyear1, imonth1, iday1, zsec1 )           ! year/month/day of the beginning of run 
    121121      CALL ju2ymds( zjul + zdrun, iyear2, imonth2, iday2, zsec2 )           ! year/month/day of the end       of run 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diaptr.F90

    r12680 r12724  
    5050 
    5151   REAL(wp) ::   rc_sv    = 1.e-6_wp   ! conversion from m3/s to Sverdrup 
    52    REAL(wp) ::   rc_pwatt = 1.e-15_wp  ! conversion from W    to PW (further x rau0 x Cp) 
    53    REAL(wp) ::   rc_ggram = 1.e-9_wp   ! conversion from g    to Gg  (further x rau0) 
     52   REAL(wp) ::   rc_pwatt = 1.e-15_wp  ! conversion from W    to PW (further x rho0 x Cp) 
     53   REAL(wp) ::   rc_ggram = 1.e-9_wp   ! conversion from g    to Gg  (further x rho0) 
    5454 
    5555   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: btmsk   ! T-point basin interior masks 
     
    348348         IF( dia_ptr_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ptr_init : unable to allocate arrays' ) 
    349349 
    350          rc_pwatt = rc_pwatt * rau0_rcp          ! conversion from K.s-1 to PetaWatt 
    351          rc_ggram = rc_ggram * rau0              ! conversion from m3/s to Gg/s 
     350         rc_pwatt = rc_pwatt * rho0_rcp          ! conversion from K.s-1 to PetaWatt 
     351         rc_ggram = rc_ggram * rho0              ! conversion from m3/s to Gg/s 
    352352 
    353353         IF( lk_mpp )   CALL mpp_ini_znl( numout )     ! Define MPI communicator for zonal sum 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diawri.F90

    r12680 r12724  
    193193 
    194194      IF ( iom_use("taubot") ) THEN                ! bottom stress 
    195          zztmp = rau0 * 0.25 
     195         zztmp = rho0 * 0.25 
    196196         z2d(:,:) = 0._wp 
    197197         DO_2D_00_00 
     
    232232      IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN   ! vertical mass transport & its square value 
    233233         ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 
    234          z2d(:,:) = rau0 * e1e2t(:,:) 
     234         z2d(:,:) = rho0 * e1e2t(:,:) 
    235235         DO jk = 1, jpk 
    236236            z3d(:,:,jk) = ww(:,:,jk) * z2d(:,:) 
     
    269269            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 
    270270         END_3D 
    271          CALL iom_put( "heatc", rau0_rcp * z2d )   ! vertically integrated heat content (J/m2) 
     271         CALL iom_put( "heatc", rho0_rcp * z2d )   ! vertically integrated heat content (J/m2) 
    272272      ENDIF 
    273273 
     
    277277            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 
    278278         END_3D 
    279          CALL iom_put( "saltc", rau0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
     279         CALL iom_put( "saltc", rho0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
    280280      ENDIF 
    281281      ! 
     
    299299         z2d(:,:) = 0.e0 
    300300         DO jk = 1, jpkm1 
    301             z3d(:,:,jk) = rau0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 
     301            z3d(:,:,jk) = rho0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 
    302302            z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 
    303303         END DO 
     
    328328         z3d(:,:,jpk) = 0.e0 
    329329         DO jk = 1, jpkm1 
    330             z3d(:,:,jk) = rau0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 
     330            z3d(:,:,jk) = rho0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 
    331331         END DO 
    332332         CALL iom_put( "v_masstr", z3d )              ! mass transport in j-direction 
     
    357357         END_3D 
    358358         CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 
    359          CALL iom_put( "tosmint", rau0 * z2d )        ! Vertical integral of temperature 
     359         CALL iom_put( "tosmint", rho0 * z2d )        ! Vertical integral of temperature 
    360360      ENDIF 
    361361      IF( iom_use("somint") ) THEN 
     
    365365         END_3D 
    366366         CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 
    367          CALL iom_put( "somint", rau0 * z2d )         ! Vertical integral of salinity 
     367         CALL iom_put( "somint", rho0 * z2d )         ! Vertical integral of salinity 
    368368      ENDIF 
    369369 
     
    386386      INTEGER, DIMENSION(2) :: ierr 
    387387      !!---------------------------------------------------------------------- 
    388       ierr = 0 
    389       ALLOCATE( ndex_hT(jpi*jpj) , ndex_T(jpi*jpj*jpk) ,     & 
    390          &      ndex_hU(jpi*jpj) , ndex_U(jpi*jpj*jpk) ,     & 
    391          &      ndex_hV(jpi*jpj) , ndex_V(jpi*jpj*jpk) , STAT=ierr(1) ) 
     388      IF( nn_write == -1 ) THEN 
     389         dia_wri_alloc = 0 
     390      ELSE     
     391         ierr = 0 
     392         ALLOCATE( ndex_hT(jpi*jpj) , ndex_T(jpi*jpj*jpk) ,     & 
     393            &      ndex_hU(jpi*jpj) , ndex_U(jpi*jpj*jpk) ,     & 
     394            &      ndex_hV(jpi*jpj) , ndex_V(jpi*jpj*jpk) , STAT=ierr(1) ) 
    392395         ! 
    393      dia_wri_alloc = MAXVAL(ierr) 
    394       CALL mpp_sum( 'diawri', dia_wri_alloc ) 
     396         dia_wri_alloc = MAXVAL(ierr) 
     397         CALL mpp_sum( 'diawri', dia_wri_alloc ) 
     398         ! 
     399      ENDIF 
    395400      ! 
    396401   END FUNCTION dia_wri_alloc 
     
    452457      clop = "x"         ! no use of the mask value (require less cpu time and otherwise the model crashes) 
    453458#if defined key_diainstant 
    454       zsto = nn_write * rdt 
     459      zsto = nn_write * rn_Dt 
    455460      clop = "inst("//TRIM(clop)//")" 
    456461#else 
    457       zsto=rdt 
     462      zsto=rn_Dt 
    458463      clop = "ave("//TRIM(clop)//")" 
    459464#endif 
    460       zout = nn_write * rdt 
    461       zmax = ( nitend - nit000 + 1 ) * rdt 
     465      zout = nn_write * rn_Dt 
     466      zmax = ( nitend - nit000 + 1 ) * rn_Dt 
    462467 
    463468      ! Define indices of the horizontal output zoom and vertical limit storage 
     
    485490 
    486491         ! Compute julian date from starting date of the run 
    487          CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) 
     492         CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian ) 
    488493         zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    489494         IF(lwp)WRITE(numout,*) 
     
    507512         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    508513            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    509             &          nit000-1, zjulian, rdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
     514            &          nit000-1, zjulian, rn_Dt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
    510515         CALL histvert( nid_T, "deptht", "Vertical T levels",      &  ! Vertical grid: gdept 
    511516            &           "m", ipk, gdept_1d, nz_T, "down" ) 
     
    543548         CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu,           &  ! Horizontal grid: glamu and gphiu 
    544549            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    545             &          nit000-1, zjulian, rdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
     550            &          nit000-1, zjulian, rn_Dt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
    546551         CALL histvert( nid_U, "depthu", "Vertical U levels",      &  ! Vertical grid: gdept 
    547552            &           "m", ipk, gdept_1d, nz_U, "down" ) 
     
    556561         CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv,           &  ! Horizontal grid: glamv and gphiv 
    557562            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    558             &          nit000-1, zjulian, rdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
     563            &          nit000-1, zjulian, rn_Dt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
    559564         CALL histvert( nid_V, "depthv", "Vertical V levels",      &  ! Vertical grid : gdept 
    560565            &          "m", ipk, gdept_1d, nz_V, "down" ) 
     
    569574         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    570575            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    571             &          nit000-1, zjulian, rdt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 
     576            &          nit000-1, zjulian, rn_Dt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 
    572577         CALL histvert( nid_W, "depthw", "Vertical W levels",      &  ! Vertical grid: gdepw 
    573578            &          "m", ipk, gdepw_1d, nz_W, "down" ) 
     
    579584            CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    580585               &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    581                &          nit000-1, zjulian, rdt, nh_A, nid_A, domain_id=nidom, snc4chunks=snc4set ) 
     586               &          nit000-1, zjulian, rn_Dt, nh_A, nid_A, domain_id=nidom, snc4chunks=snc4set ) 
    582587            CALL histvert( nid_A, "ght_abl", "Vertical T levels",      &  ! Vertical grid: gdept 
    583588               &           "m", ipka, ght_abl(2:jpka), nz_A, "up" ) 
     
    953958      END DO 
    954959      ! 
    955 #if defined key_si3 
    956      CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE., kdlev = jpl ) 
    957 #else 
    958      CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE. ) 
    959 #endif 
    960  
     960      CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE. ) 
     961      ! 
    961962      CALL iom_rstput( 0, 0, inum, 'votemper', ts(:,:,:,jp_tem,Kmm) )    ! now temperature 
    962963      CALL iom_rstput( 0, 0, inum, 'vosaline', ts(:,:,:,jp_sal,Kmm) )    ! now salinity 
     
    971972      CALL iom_rstput( 0, 0, inum, 'risfdep', risfdep            )    ! now k-velocity 
    972973      CALL iom_rstput( 0, 0, inum, 'ht'     , ht                 )    ! now water column height 
    973  
     974      ! 
    974975      IF ( ln_isf ) THEN 
    975976         IF (ln_isfcav_mlt) THEN 
     
    977978            CALL iom_rstput( 0, 0, inum, 'rhisf_cav_tbl', rhisf_tbl_cav    )    ! now k-velocity 
    978979            CALL iom_rstput( 0, 0, inum, 'rfrac_cav_tbl', rfrac_tbl_cav    )    ! now k-velocity 
    979             CALL iom_rstput( 0, 0, inum, 'misfkb_cav', REAL(misfkb_cav,8)    )    ! now k-velocity 
    980             CALL iom_rstput( 0, 0, inum, 'misfkt_cav', REAL(misfkt_cav,8)    )    ! now k-velocity 
    981             CALL iom_rstput( 0, 0, inum, 'mskisf_cav', REAL(mskisf_cav,8), ktype = jp_i1 ) 
     980            CALL iom_rstput( 0, 0, inum, 'misfkb_cav', REAL(misfkb_cav,wp) )    ! now k-velocity 
     981            CALL iom_rstput( 0, 0, inum, 'misfkt_cav', REAL(misfkt_cav,wp) )    ! now k-velocity 
     982            CALL iom_rstput( 0, 0, inum, 'mskisf_cav', REAL(mskisf_cav,wp), ktype = jp_i1 ) 
    982983         END IF 
    983984         IF (ln_isfpar_mlt) THEN 
    984             CALL iom_rstput( 0, 0, inum, 'isfmsk_par', REAL(mskisf_par,8) )    ! now k-velocity 
     985            CALL iom_rstput( 0, 0, inum, 'isfmsk_par', REAL(mskisf_par,wp) )    ! now k-velocity 
    985986            CALL iom_rstput( 0, 0, inum, 'fwfisf_par', fwfisf_par          )    ! now k-velocity 
    986987            CALL iom_rstput( 0, 0, inum, 'rhisf_par_tbl', rhisf_tbl_par    )    ! now k-velocity 
    987988            CALL iom_rstput( 0, 0, inum, 'rfrac_par_tbl', rfrac_tbl_par    )    ! now k-velocity 
    988             CALL iom_rstput( 0, 0, inum, 'misfkb_par', REAL(misfkb_par,8)    )    ! now k-velocity 
    989             CALL iom_rstput( 0, 0, inum, 'misfkt_par', REAL(misfkt_par,8)    )    ! now k-velocity 
    990             CALL iom_rstput( 0, 0, inum, 'mskisf_par', REAL(mskisf_par,8), ktype = jp_i1 ) 
     989            CALL iom_rstput( 0, 0, inum, 'misfkb_par', REAL(misfkb_par,wp) )    ! now k-velocity 
     990            CALL iom_rstput( 0, 0, inum, 'misfkt_par', REAL(misfkt_par,wp) )    ! now k-velocity 
     991            CALL iom_rstput( 0, 0, inum, 'mskisf_par', REAL(mskisf_par,wp), ktype = jp_i1 ) 
    991992         END IF 
    992993      END IF 
    993  
     994      ! 
    994995      IF( ALLOCATED(ahtu) ) THEN 
    995996         CALL iom_rstput( 0, 0, inum,  'ahtu', ahtu              )    ! aht at u-point 
     
    10211022         CALL iom_rstput ( 0, 0, inum, "qz1_abl",  tq_abl(:,:,2,nt_a,2) )   ! now first level humidity 
    10221023      ENDIF 
    1023   
     1024      ! 
     1025      CALL iom_close( inum ) 
     1026      !  
    10241027#if defined key_si3 
    10251028      IF( nn_ice == 2 ) THEN   ! condition needed in case agrif + ice-model but no-ice in child grid 
     1029         CALL iom_open( TRIM(cdfile_name)//'_ice', inum, ldwrt = .TRUE., kdlev = jpl, cdcomp = 'ICE' ) 
    10261030         CALL ice_wri_state( inum ) 
     1031         CALL iom_close( inum ) 
    10271032      ENDIF 
    10281033#endif 
    1029       ! 
    1030       CALL iom_close( inum ) 
    1031       !  
     1034 
    10321035   END SUBROUTINE dia_wri_state 
    10331036 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIU/diu_coolskin.F90

    r12377 r12724  
    6767 
    6868 
    69    SUBROUTINE diurnal_sst_coolskin_step(psqflux, pstauflux, psrho, rdt) 
     69   SUBROUTINE diurnal_sst_coolskin_step(psqflux, pstauflux, psrho, pDt) 
    7070      !!---------------------------------------------------------------------- 
    7171      !! *** ROUTINE diurnal_sst_takaya_step *** 
     
    8181      REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: pstauflux   ! Wind stress (kg/ m s^2) 
    8282      REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: psrho       ! Water density (kg/m^3) 
    83       REAL(wp), INTENT(IN) :: rdt                             ! Time-step 
     83      REAL(wp), INTENT(IN) :: pDt                             ! Time-step 
    8484      
    8585      ! Local variables 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIU/diu_layers.F90

    r12377 r12724  
    3939      ! Cool skin 
    4040 
    41       CALL diurnal_sst_coolskin_step( qns, taum, rhop(:,:,1), rdt) 
     41      CALL diurnal_sst_coolskin_step( qns, taum, rhop(:,:,1), rn_Dt) 
    4242 
    4343      CALL iom_put( "sst_wl"   , x_dsst               )    ! warm layer (write out before update below). 
     
    4545 
    4646      ! Diurnal warm layer model        
    47       CALL diurnal_sst_takaya_step( kstp, qsr, qns, taum, rhop(:,:,1), rdt)  
     47      CALL diurnal_sst_takaya_step( kstp, qsr, qns, taum, rhop(:,:,1), rn_Dt)  
    4848 
    4949   END SUBROUTINE diurnal_layers   
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/daymod.F90

    r12377 r12724  
    2020   !!                    ------------------------------- 
    2121   !!   sbcmod assume that the time step is dividing the number of second of  
    22    !!   in a day, i.e. ===> MOD( rday, rdt ) == 0  
     22   !!   in a day, i.e. ===> MOD( rday, rn_Dt ) == 0  
    2323   !!   except when user defined forcing is used (see sbcmod.F90) 
    2424   !!---------------------------------------------------------------------- 
     
    7373      ! 
    7474      ! max number of seconds between each restart 
    75       IF( REAL( nitend - nit000 + 1 ) * rdt > REAL( HUGE( nsec1jan000 ) ) ) THEN 
     75      IF( REAL( nitend - nit000 + 1 ) * rn_Dt > REAL( HUGE( nsec1jan000 ) ) ) THEN 
    7676         CALL ctl_stop( 'The number of seconds between each restart exceeds the integer 4 max value: 2^31-1. ',   & 
    7777            &           'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 
     
    7979      nsecd   = NINT(       rday ) 
    8080      nsecd05 = NINT( 0.5 * rday ) 
    81       ndt     = NINT(       rdt  ) 
    82       ndt05   = NINT( 0.5 * rdt  ) 
     81      ndt     = NINT(       rn_Dt  ) 
     82      ndt05   = NINT( 0.5 * rn_Dt  ) 
    8383 
    8484      IF( .NOT. l_offline )   CALL day_rst( nit000, 'READ' ) 
     
    239239      nsec_monday  = nsec_monday  + ndt 
    240240      nsec_day   = nsec_day   + ndt 
    241       adatrj  = adatrj  + rdt / rday 
    242       fjulday = fjulday + rdt / rday 
     241      adatrj  = adatrj  + rn_Dt / rday 
     242      fjulday = fjulday + rn_Dt / rday 
    243243      IF( ABS(fjulday - REAL(NINT(fjulday),wp)) < zprec )   fjulday = REAL(NINT(fjulday),wp)   ! avoid truncation error 
    244244      IF( ABS(adatrj  - REAL(NINT(adatrj ),wp)) < zprec )   adatrj  = REAL(NINT(adatrj ),wp)   ! avoid truncation error 
     
    309309      !!       In both those options, the  exact duration of the experiment 
    310310      !!       since the beginning (cumulated duration of all previous restart runs) 
    311       !!       is not stored in the restart and is assumed to be (nit000-1)*rdt. 
     311      !!       is not stored in the restart and is assumed to be (nit000-1)*rn_Dt. 
    312312      !!       This is valid is the time step has remained constant. 
    313313      !! 
     
    379379               isecond = ( nhour * NINT(rhhmm) + nminute ) * NINT(rmmss) 
    380380               IF( isecond - ndt05 .lt. 0 )   ndastp = ndastp - 1      ! Start hour is specified in the namelist (default 0) 
    381                adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
     381               adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    382382               ! note this is wrong if time step has changed during run 
    383383            ENDIF 
     
    389389            isecond = ( nhour * NINT(rhhmm) + nminute ) * NINT(rmmss) 
    390390            IF( isecond - ndt05 .LT. 0 )   ndastp = ndastp - 1         ! Start hour is specified in the namelist (default 0) 
    391             adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
     391            adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    392392         ENDIF 
    393393         IF( ABS(adatrj  - REAL(NINT(adatrj),wp)) < 0.1 / rday )   adatrj = REAL(NINT(adatrj),wp)   ! avoid truncation error 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/dom_oce.F90

    r12680 r12724  
    3333   LOGICAL , PUBLIC ::   ln_linssh      !: =T  linear free surface ==>> model level are fixed in time 
    3434   LOGICAL , PUBLIC ::   ln_meshmask    !: =T  create a mesh-mask file (mesh_mask.nc) 
    35    REAL(wp), PUBLIC ::   rn_rdt         !: time step for the dynamics and tracer 
     35   REAL(wp), PUBLIC ::   rn_Dt          !: time step for the dynamics and tracer 
    3636   REAL(wp), PUBLIC ::   rn_atfp        !: asselin time filter parameter 
    37    INTEGER , PUBLIC ::   nn_euler       !: =0 start with forward time step or not (=1) 
     37   LOGICAL , PUBLIC ::   ln_1st_euler   !: =T start with forward time step or not (=F) 
    3838   LOGICAL , PUBLIC ::   ln_crs         !: Apply grid coarsening to dynamical model output or online passive tracers 
    3939 
     
    4949   LOGICAL,  PUBLIC :: ln_bt_auto       !: Set number of barotropic iterations automatically 
    5050   INTEGER,  PUBLIC :: nn_bt_flt        !: Filter choice 
    51    INTEGER,  PUBLIC :: nn_baro          !: Number of barotropic iterations during one baroclinic step (rdt) 
     51   INTEGER,  PUBLIC :: nn_e          !: Number of barotropic iterations during one baroclinic step (rn_Dt) 
    5252   REAL(wp), PUBLIC :: rn_bt_cmax       !: Maximum allowed courant number (used if ln_bt_auto=T) 
    5353   REAL(wp), PUBLIC :: rn_bt_alpha      !: Time stepping diffusion parameter 
    5454 
    5555 
    56    !                                   !! old non-DOCTOR names still used in the model 
    57    REAL(wp), PUBLIC ::   atfp           !: asselin time filter parameter 
    58    REAL(wp), PUBLIC ::   rdt            !: time step for the dynamics and tracer 
    59  
    6056   !                                   !!! associated variables 
    61    INTEGER , PUBLIC ::   neuler         !: restart euler forward option (0=Euler) 
    62    REAL(wp), PUBLIC ::   r2dt           !: = 2*rdt except at nit000 (=rdt) if neuler=0 
     57   LOGICAL , PUBLIC ::   l_1st_euler    !: Euler 1st time-step flag (=T if ln_restart=F or ln_1st_euler=T) 
     58   REAL(wp), PUBLIC ::   rDt, r1_Dt     !: Current model timestep and reciprocal 
     59                                        !: rDt = 2 * rn_Dt if leapfrog and l_1st_euler = F 
     60                                        !:     =     rn_Dt if leapfrog and l_1st_euler = T 
     61                                        !:     =     rn_Dt if RK3 
    6362 
    6463   !!---------------------------------------------------------------------- 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/domain.F90

    r12680 r12724  
    309309         &             nn_no   , cn_exp   , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl ,     & 
    310310         &             nn_it000, nn_itend , nn_date0    , nn_time0     , nn_leapy  , nn_istate ,     & 
    311          &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,    & 
     311         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, ln_1st_euler  , & 
    312312         &             ln_cfmeta, ln_xios_read, nn_wxios 
    313       NAMELIST/namdom/ ln_linssh, rn_rdt, rn_atfp, ln_crs, ln_meshmask 
     313      NAMELIST/namdom/ ln_linssh, rn_Dt, rn_atfp, ln_crs, ln_meshmask 
    314314#if defined key_netcdf4 
    315315      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
     
    339339         WRITE(numout,*) '      restart output directory        cn_ocerst_outdir= ', TRIM( cn_ocerst_outdir ) 
    340340         WRITE(numout,*) '      restart logical                 ln_rstart       = ', ln_rstart 
    341          WRITE(numout,*) '      start with forward time step    nn_euler        = ', nn_euler 
     341         WRITE(numout,*) '      start with forward time step    ln_1st_euler    = ', ln_1st_euler 
    342342         WRITE(numout,*) '      control of time step            nn_rstctl       = ', nn_rstctl 
    343343         WRITE(numout,*) '      number of the first time step   nn_it000        = ', nn_it000 
     
    375375      nleapy = nn_leapy 
    376376      ninist = nn_istate 
    377       neuler = nn_euler 
    378       IF( neuler == 1 .AND. .NOT. ln_rstart ) THEN 
     377      l_1st_euler = ln_1st_euler 
     378      IF( .NOT. l_1st_euler .AND. .NOT. ln_rstart ) THEN 
    379379         IF(lwp) WRITE(numout,*) 
    380380         IF(lwp) WRITE(numout,*)'   ==>>>   Start from rest (ln_rstart=F)' 
    381          IF(lwp) WRITE(numout,*)'           an Euler initial time step is used : nn_euler is forced to 0 ' 
    382          neuler = 0 
     381         IF(lwp) WRITE(numout,*)'           an Euler initial time step is used : l_1st_euler is forced to .true. '    
     382         l_1st_euler = .true. 
    383383      ENDIF 
    384384      !                             ! control of output frequency 
     
    430430         WRITE(numout,*) '      linear free surface (=T)                ln_linssh   = ', ln_linssh 
    431431         WRITE(numout,*) '      create mesh/mask file                   ln_meshmask = ', ln_meshmask 
    432          WRITE(numout,*) '      ocean time step                         rn_rdt      = ', rn_rdt 
     432         WRITE(numout,*) '      ocean time step                         rn_Dt       = ', rn_Dt 
    433433         WRITE(numout,*) '      asselin time filter parameter           rn_atfp     = ', rn_atfp 
    434434         WRITE(numout,*) '      online coarsening of dynamical fields   ln_crs      = ', ln_crs 
    435435      ENDIF 
    436436      ! 
    437       !          ! conversion DOCTOR names into model names (this should disappear soon) 
    438       atfp = rn_atfp 
    439       rdt  = rn_rdt 
     437      !! Initialise current model timestep rDt = 2*rn_Dt if MLF or rDt = rn_Dt if RK3 
     438      rDt  = 2._wp * rn_Dt 
     439      r1_Dt = 1._wp / rDt 
    440440 
    441441      IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/domqe.F90

    r12680 r12724  
    556556      ! 
    557557      IF( ln_dynadv_vec ) THEN                     !- Vector Form   (thickness weighted averaging) 
    558          DO_2D_11_11 
     558         DO_2D_00_00 
    559559            pr3u(ji,jj) = 0.5_wp * (  e1e2t(ji  ,jj) * pssh(ji  ,jj)  & 
    560560               &                    + e1e2t(ji+1,jj) * pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 
     
    563563         END_2D 
    564564      ELSE                                         !- Flux Form   (simple averaging) 
    565          DO_2D_11_11 
     565         DO_2D_00_00 
    566566            pr3u(ji,jj) = 0.5_wp * (  pssh(ji  ,jj) + pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) 
    567567            pr3v(ji,jj) = 0.5_wp * (  pssh(ji,jj  ) + pssh(ji,jj+1)  ) * r1_hv_0(ji,jj) 
     
    576576         ! 
    577577         IF( ln_dynadv_vec )   THEN                !- Vector Form   (thickness weighted averaging) 
    578             DO_2D_01_01                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
     578            DO_2D_10_10                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
    579579               pr3f(ji,jj) = 0.25_wp * (  e1e2t(ji  ,jj  ) * pssh(ji  ,jj  )  & 
    580580                  &                     + e1e2t(ji+1,jj  ) * pssh(ji+1,jj  )  & 
     
    583583            END_2D 
    584584         ELSE                                      !- Flux Form   (simple averaging) 
    585             DO_2D_01_01                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
     585            DO_2D_10_10                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
    586586               pr3f(ji,jj) = 0.25_wp * (  pssh(ji  ,jj  ) + pssh(ji+1,jj  )  & 
    587587                  &                     + pssh(ji  ,jj+1) + pssh(ji+1,jj+1)  ) * r1_hf_0(ji,jj) 
     
    632632                  ssh(:,:,Kbb) = 0._wp 
    633633               END WHERE 
    634                IF( neuler == 0 ) THEN 
     634               IF( l_1st_euler ) THEN 
    635635                  ssh(:,:,Kbb) = ssh(:,:,Kmm) 
    636636               ENDIF 
     
    641641               CALL iom_get( numror, jpdom_autoglo, 'sshb', ssh(:,:,Kbb), ldxios = lrxios ) 
    642642               ssh(:,:,Kmm) = ssh(:,:,Kbb) 
    643                neuler = 0 
     643               l_1st_euler = .TRUE. 
    644644            ELSE IF( id2 > 0 ) THEN 
    645645               IF(lwp) write(numout,*) 'qe_rst_read WARNING : ssh(:,:,Kbb) not found in restart files' 
     
    648648               CALL iom_get( numror, jpdom_autoglo, 'sshn', ssh(:,:,Kmm), ldxios = lrxios ) 
    649649               ssh(:,:,Kbb) = ssh(:,:,Kmm) 
    650                neuler = 0 
     650               l_1st_euler = .TRUE. 
    651651            ELSE 
    652652               IF(lwp) write(numout,*) 'qe_rst_read WARNING : ssh(:,:,Kmm) not found in restart file' 
     
    654654               IF(lwp) write(numout,*) 'neuler is forced to 0' 
    655655               ssh(:,:,:) = 0._wp 
    656                neuler = 0 
     656               l_1st_euler = .TRUE. 
    657657            ENDIF 
    658658            ! 
     
    741741            WRITE(numout,*) '                         rn_rst_e3t     = 0.e0' 
    742742            WRITE(numout,*) '            hard-wired : z-tilde cutoff frequency of low-pass filter (days)' 
    743             WRITE(numout,*) '                         rn_lf_cutoff   = 1.0/rdt' 
     743            WRITE(numout,*) '                         rn_lf_cutoff   = 1.0/rn_Dt' 
    744744         ELSE 
    745745            WRITE(numout,*) '      z-tilde to zstar restoration timescale (days)        rn_rst_e3t   = ', rn_rst_e3t 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/domvvl.F90

    r12680 r12724  
    247247         IF( ln_vvl_ztilde_as_zstar ) THEN   ! z-star emulation using z-tile 
    248248            frq_rst_e3t(:,:) = 0._wp               !Ignore namelist settings 
    249             frq_rst_hdv(:,:) = 1._wp / rdt 
     249            frq_rst_hdv(:,:) = 1._wp / rn_Dt 
    250250         ENDIF 
    251251         IF ( ln_vvl_zstar_at_eqtor ) THEN   ! use z-star in vicinity of the Equator 
     
    259259                  ! values inside the equatorial band (ztilde as zstar) 
    260260                  frq_rst_e3t(ji,jj) =  0.0_wp 
    261                   frq_rst_hdv(ji,jj) =  1.0_wp / rdt 
     261                  frq_rst_hdv(ji,jj) =  1.0_wp / rn_Dt 
    262262               ELSE                                      ! transition band (2.5 to 6 degrees N/S) 
    263263                  !                                      ! (linearly transition from z-tilde to z-star) 
     
    265265                     &            * (  1.0_wp - COS( rad*(ABS(gphit(ji,jj))-2.5_wp)  & 
    266266                     &                                          * 180._wp / 3.5_wp ) ) 
    267                   frq_rst_hdv(ji,jj) = (1.0_wp / rdt)                                & 
    268                      &            + (  frq_rst_hdv(ji,jj)-(1.e0_wp / rdt) )*0.5_wp   & 
     267                  frq_rst_hdv(ji,jj) = (1.0_wp / rn_Dt)                                & 
     268                     &            + (  frq_rst_hdv(ji,jj)-(1.e0_wp / rn_Dt) )*0.5_wp   & 
    269269                     &            * (  1._wp  - COS( rad*(ABS(gphit(ji,jj))-2.5_wp)  & 
    270270                     &                                          * 180._wp / 3.5_wp ) ) 
     
    276276                  ij0 = 128   ;   ij1 = 135   ; 
    277277                  frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  0.0_wp 
    278                   frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  1.e0_wp / rdt 
     278                  frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  1.e0_wp / rn_Dt 
    279279               ENDIF 
    280280            ENDIF 
     
    331331      INTEGER                ::   ji, jj, jk            ! dummy loop indices 
    332332      INTEGER , DIMENSION(3) ::   ijk_max, ijk_min      ! temporary integers 
    333       REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars 
     333      REAL(wp)               ::   z_tmin, z_tmax        ! local scalars 
    334334      LOGICAL                ::   ll_do_bclinic         ! local logical 
    335335      REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv 
     
    385385            IF( kt > nit000 ) THEN 
    386386               DO jk = 1, jpkm1 
    387                   hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rdt * frq_rst_hdv(:,:)   & 
     387                  hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rn_Dt * frq_rst_hdv(:,:)   & 
    388388                     &          * ( hdiv_lf(:,:,jk) - e3t(:,:,jk,Kmm) * ( hdiv(:,:,jk) - zhdiv(:,:) ) ) 
    389389               END DO 
     
    442442         ! 4 - Time stepping of baroclinic scale factors 
    443443         ! --------------------------------------------- 
    444          ! Leapfrog time stepping 
    445          ! ~~~~~~~~~~~~~~~~~~~~~~ 
    446          IF( neuler == 0 .AND. kt == nit000 ) THEN 
    447             z2dt =  rdt 
    448          ELSE 
    449             z2dt = 2.0_wp * rdt 
    450          ENDIF 
    451444         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
    452          tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
     445         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    453446 
    454447         ! Maximum deformation control 
     
    636629      ! - ML - e3(t/u/v)_b are allready computed in dynnxt. 
    637630      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 
    638          IF( neuler == 0 .AND. kt == nit000 ) THEN 
     631         IF( l_1st_euler ) THEN 
    639632            tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) 
    640633         ELSE 
    641634            tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) & 
    642             &         + atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) ) 
     635            &         + rn_atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) ) 
    643636         ENDIF 
    644637         tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) 
     
    833826                  e3t(:,:,:,Kbb) = e3t_0(:,:,:) 
    834827               END WHERE 
    835                IF( neuler == 0 ) THEN 
     828               IF( l_1st_euler ) THEN 
    836829                  e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    837830               ENDIF 
     
    839832               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart files' 
    840833               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    841                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     834               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    842835               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
    843836               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    844                neuler = 0 
     837               l_1st_euler = .true. 
    845838            ELSE IF( id2 > 0 ) THEN 
    846839               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kbb) not found in restart files' 
    847840               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    848                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     841               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    849842               CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    850843               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    851                neuler = 0 
     844               l_1st_euler = .true. 
    852845            ELSE 
    853846               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart file' 
    854847               IF(lwp) write(numout,*) 'Compute scale factor from sshn' 
    855                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     848               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    856849               DO jk = 1, jpk 
    857850                  e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) & 
     
    860853               END DO 
    861854               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    862                neuler = 0 
     855               l_1st_euler = .true. 
    863856            ENDIF 
    864857            !                             ! ----------- ! 
     
    10201013            WRITE(numout,*) '                         rn_rst_e3t     = 0.e0' 
    10211014            WRITE(numout,*) '            hard-wired : z-tilde cutoff frequency of low-pass filter (days)' 
    1022             WRITE(numout,*) '                         rn_lf_cutoff   = 1.0/rdt' 
     1015            WRITE(numout,*) '                         rn_lf_cutoff   = 1.0/rn_Dt' 
    10231016         ELSE 
    10241017            WRITE(numout,*) '      z-tilde to zstar restoration timescale (days)        rn_rst_e3t   = ', rn_rst_e3t 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/istate.F90

    r12680 r12724  
    9393         !                                    ! --------------- 
    9494         numror = 0                           ! define numror = 0 -> no restart file to read 
    95          neuler = 0                           ! Set time-step indicator at nit000 (euler forward) 
     95         l_1st_euler = .true.                 ! Set time-step indicator at nit000 (euler forward) 
    9696         CALL day_init                        ! model calendar (using both namelist and restart infos) 
    9797         !                                    ! Initialization of ocean to zero 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DOM/phycst.F90

    r10068 r12724  
    3939   REAL(wp), PUBLIC ::   rt0      = 273.15_wp        !: freezing point of fresh water [Kelvin] 
    4040 
    41    REAL(wp), PUBLIC ::   rau0                        !: volumic mass of reference     [kg/m3] 
    42    REAL(wp), PUBLIC ::   r1_rau0                     !: = 1. / rau0                   [m3/kg] 
     41   REAL(wp), PUBLIC ::   rho0                        !: volumic mass of reference     [kg/m3] 
     42   REAL(wp), PUBLIC ::   r1_rho0                     !: = 1. / rho0                   [m3/kg] 
    4343   REAL(wp), PUBLIC ::   rcp                         !: ocean specific heat           [J/Kelvin] 
    4444   REAL(wp), PUBLIC ::   r1_rcp                      !: = 1. / rcp                    [Kelvin/J] 
    45    REAL(wp), PUBLIC ::   rau0_rcp                    !: = rau0 * rcp  
    46    REAL(wp), PUBLIC ::   r1_rau0_rcp                 !: = 1. / ( rau0 * rcp ) 
     45   REAL(wp), PUBLIC ::   rho0_rcp                    !: = rho0 * rcp  
     46   REAL(wp), PUBLIC ::   r1_rho0_rcp                 !: = 1. / ( rho0 * rcp ) 
    4747 
    4848   REAL(wp), PUBLIC ::   emic     =    0.97_wp       !: emissivity of snow or ice (not used?) 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynatf.F90

    r12680 r12724  
    104104      !!             arrays to start the next time step: 
    105105      !!                (puu(Kmm),pvv(Kmm)) = (puu(Kmm),pvv(Kmm)) 
    106       !!                                    + atfp [ (puu(Kbb),pvv(Kbb)) + (puu(Kaa),pvv(Kaa)) - 2 (puu(Kmm),pvv(Kmm)) ] 
     106      !!                                    + rn_atfp [ (puu(Kbb),pvv(Kbb)) + (puu(Kaa),pvv(Kaa)) - 2 (puu(Kmm),pvv(Kmm)) ] 
    107107      !!             Note that with flux form advection and non linear free surface, 
    108108      !!             the time filter is applied on thickness weighted velocity. 
     
    174174      ! 
    175175      IF( l_trddyn ) THEN             ! prepare the atf trend computation + some diagnostics 
    176          z1_2dt = 1._wp / (2. * rdt)        ! Euler or leap-frog time step 
    177          IF( neuler == 0 .AND. kt == nit000 )   z1_2dt = 1._wp / rdt 
    178176         ! 
    179177         !                                  ! Kinetic energy and Conversion 
     
    181179         ! 
    182180         IF( ln_dyn_trd ) THEN              ! 3D output: total momentum trends 
    183             zua(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) * z1_2dt 
    184             zva(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) * z1_2dt 
     181            zua(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) * r1_Dt 
     182            zva(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) * r1_Dt 
    185183            CALL iom_put( "utrd_tot", zua )        ! total momentum trends, except the asselin time filter 
    186184            CALL iom_put( "vtrd_tot", zva ) 
     
    194192      ! Time filter and swap of dynamics arrays 
    195193      ! ------------------------------------------ 
    196  
    197       IF( .NOT.( neuler == 0 .AND. kt == nit000 ) ) THEN    !* Leap-Frog : Asselin time filter 
     194          
     195      IF( .NOT. l_1st_euler ) THEN    !* Leap-Frog : Asselin time filter  
    198196         !                                ! =============! 
    199197         IF( ln_linssh ) THEN             ! Fixed volume ! 
    200198            !                             ! =============! 
    201199            DO_3D_11_11( 1, jpkm1 ) 
    202                puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
    203                pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 
     200               puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + rn_atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
     201               pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + rn_atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 
    204202            END_3D 
    205203            !                             ! ================! 
     
    210208            ALLOCATE( ze3t_f(jpi,jpj,jpk), zwfld(jpi,jpj) ) 
    211209            DO jk = 1, jpkm1 
    212                ze3t_f(:,:,jk) = pe3t(:,:,jk,Kmm) + atfp * ( pe3t(:,:,jk,Kbb) - 2._wp * pe3t(:,:,jk,Kmm) + pe3t(:,:,jk,Kaa) ) 
     210               ze3t_f(:,:,jk) = pe3t(:,:,jk,Kmm) + rn_atfp * ( pe3t(:,:,jk,Kbb) - 2._wp * pe3t(:,:,jk,Kmm) + pe3t(:,:,jk,Kaa) ) 
    213211            END DO 
    214212            ! Add volume filter correction: compatibility with tracer advection scheme 
    215213            ! => time filter + conservation correction 
    216             zcoef = atfp * rdt * r1_rau0 
     214            zcoef = rn_atfp * rn_Dt * r1_rho0 
    217215            zwfld(:,:) = emp_b(:,:) - emp(:,:) 
    218216            IF ( ln_rnf ) zwfld(:,:) =  zwfld(:,:) - ( rnf_b(:,:) - rnf(:,:) ) 
     
    226224            !     to manage rnf, isf and possibly in the futur icb, tide water glacier (...) 
    227225            !     ...(kt, coef, ktop, kbot, hz, fwf_b, fwf) 
    228             IF ( ln_isf ) CALL isf_dynatf( kt, Kmm, ze3t_f, atfp * rdt ) 
     226            IF ( ln_isf ) CALL isf_dynatf( kt, Kmm, ze3t_f, rn_atfp * rn_Dt ) 
    229227            ! 
    230228            pe3t(:,:,1:jpkm1,Kmm) = ze3t_f(:,:,1:jpkm1)        ! filtered scale factor at T-points 
     
    235233               CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), pe3v(:,:,:,Kmm), 'V' ) 
    236234               DO_3D_11_11( 1, jpkm1 ) 
    237                   puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
    238                   pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 
     235                  puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + rn_atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
     236                  pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + rn_atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 
    239237               END_3D 
    240238               ! 
     
    253251                  zve3b = pe3v(ji,jj,jk,Kbb) * pvv(ji,jj,jk,Kbb) 
    254252                  ! 
    255                   puu(ji,jj,jk,Kmm) = ( zue3n + atfp * ( zue3b - 2._wp * zue3n  + zue3a ) ) / ze3u_f(ji,jj,jk) 
    256                   pvv(ji,jj,jk,Kmm) = ( zve3n + atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ze3v_f(ji,jj,jk) 
     253                  puu(ji,jj,jk,Kmm) = ( zue3n + rn_atfp * ( zue3b - 2._wp * zue3n  + zue3a ) ) / ze3u_f(ji,jj,jk) 
     254                  pvv(ji,jj,jk,Kmm) = ( zve3n + rn_atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ze3v_f(ji,jj,jk) 
    257255               END_3D 
    258256               pe3u(:,:,1:jpkm1,Kmm) = ze3u_f(:,:,1:jpkm1) 
     
    280278         ENDIF 
    281279         ! 
    282       ENDIF ! neuler /= 0 
     280      ENDIF ! .NOT. l_1st_euler 
    283281      ! 
    284282      ! Set "now" and "before" barotropic velocities for next time step: 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynatfQCO.F90

    r12656 r12724  
    1515   !!            2.3  !  2007-07  (D. Storkey) Calls to BDY routines. 
    1616   !!            3.2  !  2009-06  (G. Madec, R.Benshila)  re-introduce the vvl option 
    17    !!            3.3  !  2010-09  (D. Storkey, E.O'Dea) Bug fix for BDY module 
     17   !!            3.3  !  2010-09  D. Storkey, E.O'Dea) Bug fix for BDY module 
    1818   !!            3.3  !  2011-03  (P. Oddo) Bug fix for time-splitting+(BDY-OBC) and not VVL 
    1919   !!            3.5  !  2013-07  (J. Chanut) Compliant with time splitting changes 
     
    117117      ! 
    118118      IF( l_trddyn ) THEN             ! prepare the atf trend computation + some diagnostics 
    119          z1_2dt = 1._wp / (2. * rdt)        ! Euler or leap-frog time step 
    120          IF( neuler == 0 .AND. kt == nit000 )   z1_2dt = 1._wp / rdt 
    121119         ! 
    122120         !                                  ! Kinetic energy and Conversion 
     
    124122         ! 
    125123         IF( ln_dyn_trd ) THEN              ! 3D output: total momentum trends 
    126             zua(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) * z1_2dt 
    127             zva(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) * z1_2dt 
     124            zua(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) * r1_Dt 
     125            zva(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) * r1_Dt 
    128126            CALL iom_put( "utrd_tot", zua )        ! total momentum trends, except the asselin time filter 
    129127            CALL iom_put( "vtrd_tot", zva ) 
     
    138136      ! ------------------------------------------ 
    139137 
    140       IF( .NOT.( neuler == 0 .AND. kt == nit000 ) ) THEN    !* Leap-Frog : Asselin time filter 
     138      IF( .NOT. l_1st_euler ) THEN    !* Leap-Frog : Asselin time filter 
    141139         !                                ! =============! 
    142140         IF( ln_linssh ) THEN             ! Fixed volume ! 
    143141            !                             ! =============! 
    144142            DO_3D_11_11( 1, jpkm1 ) 
    145                puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
    146                pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 
     143               puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + rn_atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
     144               pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + rn_atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 
    147145            END_3D 
    148146            !                             ! ================! 
     
    164162               ! 
    165163               DO_3D_11_11( 1, jpkm1 ) 
    166                   puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
    167                   pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 
     164                  puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + rn_atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 
     165                  pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + rn_atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 
    168166               END_3D 
    169167               ! 
     
    188186                  ! pe3v(ji,jj,jk,Kmm) = e3v_0(ji,jj,jk) * ( 1._wp + r3v_f(ji,jj) * vmask(ji,jj,jk) ) 
    189187                  ! 
    190                   puu(ji,jj,jk,Kmm) = ( zue3n + atfp * ( zue3b - 2._wp * zue3n  + zue3a ) ) / ( 1._wp + r3u_f(ji,jj)*umask(ji,jj,jk) ) !!st ze3u_f(ji,jj,jk) 
    191                   pvv(ji,jj,jk,Kmm) = ( zve3n + atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ( 1._wp + r3v_f(ji,jj)*vmask(ji,jj,jk) ) !!st ze3v_f(ji,jj,jk) 
     188                  puu(ji,jj,jk,Kmm) = ( zue3n + rn_atfp * ( zue3b - 2._wp * zue3n  + zue3a ) ) / ( 1._wp + r3u_f(ji,jj)*umask(ji,jj,jk) ) !!st ze3u_f(ji,jj,jk) 
     189                  pvv(ji,jj,jk,Kmm) = ( zve3n + rn_atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ( 1._wp + r3v_f(ji,jj)*vmask(ji,jj,jk) ) !!st ze3v_f(ji,jj,jk) 
    192190               END_3D 
    193191               ! 
     
    217215         ENDIF 
    218216         ! 
    219       ENDIF ! neuler /= 0 
     217      ENDIF ! .NOT. l_1st_euler 
    220218      ! 
    221219      ! Set "now" and "before" barotropic velocities for next time step: 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynspg.F90

    r12377 r12724  
    6767      !!              ln_apr_dyn=T : the atmospheric pressure forcing is applied  
    6868      !!             as the gradient of the inverse barometer ssh: 
    69       !!                apgu = - 1/rau0 di[apr] = 0.5*grav di[ssh_ib+ssh_ibb] 
    70       !!                apgv = - 1/rau0 dj[apr] = 0.5*grav dj[ssh_ib+ssh_ibb] 
    71       !!             Note that as all external forcing a time averaging over a two rdt 
     69      !!                apgu = - 1/rho0 di[apr] = 0.5*grav di[ssh_ib+ssh_ibb] 
     70      !!                apgv = - 1/rho0 dj[apr] = 0.5*grav dj[ssh_ib+ssh_ibb] 
     71      !!             Note that as all external forcing a time averaging over a two rn_Dt 
    7272      !!             period is used to prevent the divergence of odd and even time step. 
    7373      !!---------------------------------------------------------------------- 
     
    7878      ! 
    7979      INTEGER  ::   ji, jj, jk                   ! dummy loop indices 
    80       REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r, zld   ! local scalars 
     80      REAL(wp) ::   z2dt, zg_2, zintp, zgrho0r, zld   ! local scalars 
    8181      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zpice 
    8282      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdu, ztrdv 
     
    114114            ! 
    115115            ! Update tide potential at the beginning of current time step 
    116             zt0step = REAL(nsec_day, wp)-0.5_wp*rdt 
     116            zt0step = REAL(nsec_day, wp)-0.5_wp*rn_Dt 
    117117            CALL upd_tide(zt0step, Kmm) 
    118118            ! 
     
    134134            ALLOCATE( zpice(jpi,jpj) ) 
    135135            zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 
    136             zgrau0r     = - grav * r1_rau0 
    137             zpice(:,:) = (  zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:)  ) * zgrau0r 
     136            zgrho0r     = - grav * r1_rho0 
     137            zpice(:,:) = (  zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:)  ) * zgrho0r 
    138138            DO_2D_00_00 
    139139               spgu(ji,jj) = spgu(ji,jj) + ( zpice(ji+1,jj) - zpice(ji,jj) ) * r1_e1u(ji,jj) 
     
    183183      NAMELIST/namdyn_spg/ ln_dynspg_exp       , ln_dynspg_ts,   & 
    184184      &                    ln_bt_fw, ln_bt_av  , ln_bt_auto  ,   & 
    185       &                    nn_baro , rn_bt_cmax, nn_bt_flt, rn_bt_alpha 
     185      &                    nn_e , rn_bt_cmax, nn_bt_flt, rn_bt_alpha 
    186186      !!---------------------------------------------------------------------- 
    187187      ! 
     
    222222      ! 
    223223      IF( nspg == np_TS ) THEN   ! split-explicit scheme initialisation 
    224          CALL dyn_spg_ts_init          ! do it first: set nn_baro used to allocate some arrays later on 
     224         CALL dyn_spg_ts_init          ! do it first: set nn_e used to allocate some arrays later on 
    225225      ENDIF 
    226226      ! 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynspg_exp.F90

    r12377 r12724  
    4949      !!              momentum trend the surface pressure gradient : 
    5050      !!                      (uu(rhs),vv(rhs)) = (uu(rhs),vv(rhs)) + (spgu,spgv) 
    51       !!              where spgu = -1/rau0 d/dx(ps) = -g/e1u di( ssh(now) ) 
    52       !!                    spgv = -1/rau0 d/dy(ps) = -g/e2v dj( ssh(now) ) 
     51      !!              where spgu = -1/rho0 d/dx(ps) = -g/e1u di( ssh(now) ) 
     52      !!                    spgv = -1/rho0 d/dy(ps) = -g/e2v dj( ssh(now) ) 
    5353      !! 
    5454      !! ** Action :   (puu(:,:,:,Krhs),pvv(:,:,:,Krhs))   trend of horizontal velocity increased by  
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynspg_ts.F90

    r12616 r12724  
    7272   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_adv , vn_adv   !: Advection vel. at "now" barocl. step 
    7373   ! 
    74    INTEGER, SAVE :: icycle      ! Number of barotropic sub-steps for each internal step nn_baro <= 2.5 nn_baro 
    75    REAL(wp),SAVE :: rdtbt       ! Barotropic time step 
     74   INTEGER, SAVE :: icycle      ! Number of barotropic sub-steps for each internal step nn_e <= 2.5 nn_e 
     75   REAL(wp),SAVE :: rDt_e       ! Barotropic time step 
    7676   ! 
    7777   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:)   ::   wgtbtp1, wgtbtp2   ! 1st & 2nd weights used in time filtering of barotropic fields 
     
    103103      ierr(:) = 0 
    104104      ! 
    105       ALLOCATE( wgtbtp1(3*nn_baro), wgtbtp2(3*nn_baro), zwz(jpi,jpj), STAT=ierr(1) ) 
     105      ALLOCATE( wgtbtp1(3*nn_e), wgtbtp2(3*nn_e), zwz(jpi,jpj), STAT=ierr(1) ) 
    106106      IF( ln_dynvor_een .OR. ln_dynvor_eeT )   & 
    107107         &     ALLOCATE( ftnw(jpi,jpj) , ftne(jpi,jpj) , ftsw(jpi,jpj) , ftse(jpi,jpj), STAT=ierr(2)   ) 
     
    151151      LOGICAL  ::   ll_init               ! =T : special startup of 2d equations 
    152152      INTEGER  ::   noffset               ! local integers  : time offset for bdy update 
    153       REAL(wp) ::   r1_2dt_b, z1_hu, z1_hv          ! local scalars 
     153      REAL(wp) ::   r1_Dt_b, z1_hu, z1_hv          ! local scalars 
    154154      REAL(wp) ::   za0, za1, za2, za3              !   -      - 
    155155      REAL(wp) ::   zztmp, zldg               !   -      - 
     
    182182!     zwdramp = 1._wp / (rn_wdmin2 - rn_wdmin1) ! more general ramp 
    183183      !                                         ! inverse of baroclinic time step  
    184       IF( kt == nit000 .AND. neuler == 0 ) THEN   ;   r1_2dt_b = 1._wp / (         rdt ) 
    185       ELSE                                        ;   r1_2dt_b = 1._wp / ( 2._wp * rdt ) 
    186       ENDIF 
     184      r1_Dt_b = 1._wp / rDt  
    187185      ! 
    188186      ll_init     = ln_bt_av                    ! if no time averaging, then no specific restart  
    189187      ll_fw_start = .FALSE. 
    190188      !                                         ! time offset in steps for bdy data update 
    191       IF( .NOT.ln_bt_fw ) THEN   ;   noffset = - nn_baro 
     189      IF( .NOT.ln_bt_fw ) THEN   ;   noffset = - nn_e 
    192190      ELSE                       ;   noffset =   0  
    193191      ENDIF 
     
    200198         IF(lwp) WRITE(numout,*) 
    201199         ! 
    202          IF( neuler == 0 )   ll_init=.TRUE. 
    203          ! 
    204          IF( ln_bt_fw .OR. neuler == 0 ) THEN 
     200         IF( l_1st_euler )   ll_init=.TRUE. 
     201         ! 
     202         IF( ln_bt_fw .OR. l_1st_euler ) THEN 
    205203            ll_fw_start =.TRUE. 
    206204            noffset     = 0 
     
    211209         CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 ) 
    212210         ! 
    213       ENDIF 
    214       ! 
    215       ! If forward start at previous time step, and centered integration,  
    216       ! then update averaging weights: 
    217       IF (.NOT.ln_bt_fw .AND.( neuler==0 .AND. kt==nit000+1 ) ) THEN 
    218          ll_fw_start=.FALSE. 
    219          CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 ) 
    220       ENDIF 
    221       ! 
    222                            
     211      ELSEIF( kt == nit000 + 1 ) THEN           !* initialisation 2nd time-step 
     212         ! 
     213         IF( .NOT.ln_bt_fw ) THEN 
     214            ! If we did an Euler timestep on the first timestep we need to reset ll_fw_start 
     215            ! and the averaging weights. We don't have an easy way of telling whether we did 
     216            ! an Euler timestep on the first timestep (because l_1st_euler is reset to .false. 
     217            ! at the end of the first timestep) so just do this in all cases.  
     218            ll_fw_start = .FALSE. 
     219            CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 ) 
     220         ENDIF 
     221         ! 
     222      ENDIF 
     223      ! 
    223224      ! ----------------------------------------------------------------------------- 
    224225      !  Phase 1 : Coupling between general trend and barotropic estimates (1st step) 
     
    309310      IF( ln_bt_fw ) THEN                        ! Add wind forcing 
    310311         DO_2D_00_00 
    311             zu_frc(ji,jj) =  zu_frc(ji,jj) + r1_rau0 * utau(ji,jj) * r1_hu(ji,jj,Kmm) 
    312             zv_frc(ji,jj) =  zv_frc(ji,jj) + r1_rau0 * vtau(ji,jj) * r1_hv(ji,jj,Kmm) 
     312            zu_frc(ji,jj) =  zu_frc(ji,jj) + r1_rho0 * utau(ji,jj) * r1_hu(ji,jj,Kmm) 
     313            zv_frc(ji,jj) =  zv_frc(ji,jj) + r1_rho0 * vtau(ji,jj) * r1_hv(ji,jj,Kmm) 
    313314         END_2D 
    314315      ELSE 
    315          zztmp = r1_rau0 * r1_2 
     316         zztmp = r1_rho0 * r1_2 
    316317         DO_2D_00_00 
    317318            zu_frc(ji,jj) =  zu_frc(ji,jj) + zztmp * ( utau_b(ji,jj) + utau(ji,jj) ) * r1_hu(ji,jj,Kmm) 
     
    326327      !                                   ! ---------------------------------------------------  ! 
    327328      IF (ln_bt_fw) THEN                          ! FORWARD integration: use kt+1/2 fluxes (NOW+1/2) 
    328          zssh_frc(:,:) = r1_rau0 * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) 
     329         zssh_frc(:,:) = r1_rho0 * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) 
    329330      ELSE                                        ! CENTRED integration: use kt-1/2 + kt+1/2 fluxes (NOW) 
    330          zztmp = r1_rau0 * r1_2 
     331         zztmp = r1_rho0 * r1_2 
    331332         zssh_frc(:,:) = zztmp * (  emp(:,:)        + emp_b(:,:)                    & 
    332333                &                 - rnf(:,:)        - rnf_b(:,:)                    & 
     
    435436         ! Update tide potential at the beginning of current time substep 
    436437         IF( ln_tide_pot .AND. ln_tide ) THEN 
    437             zt0substep = REAL(nsec_day, wp) - 0.5_wp*rdt + (jn + noffset - 1) * rdt / REAL(nn_baro, wp) 
     438            zt0substep = REAL(nsec_day, wp) - 0.5_wp*rn_Dt + (jn + noffset - 1) * rn_Dt / REAL(nn_e, wp) 
    438439            CALL upd_tide(zt0substep, Kmm) 
    439440         END IF 
     
    501502         IF( .NOT.Agrif_Root() .AND. ln_bt_fw ) CALL agrif_dyn_ts_flux( jn, zhU, zhV ) 
    502503#endif 
    503          IF( ln_wd_il )   CALL wad_lmt_bt(zhU, zhV, sshn_e, zssh_frc, rdtbt)    !!gm wad_lmt_bt use of lbc_lnk on zhU, zhV 
     504         IF( ln_wd_il )   CALL wad_lmt_bt(zhU, zhV, sshn_e, zssh_frc, rDt_e)    !!gm wad_lmt_bt use of lbc_lnk on zhU, zhV 
    504505 
    505506         IF( ln_wd_dl ) THEN           ! un_e and vn_e are set to zero at faces where  
     
    516517         DO_2D_00_00 
    517518            zhdiv = (   zhU(ji,jj) - zhU(ji-1,jj) + zhV(ji,jj) - zhV(ji,jj-1)   ) * r1_e1e2t(ji,jj) 
    518             ssha_e(ji,jj) = (  sshn_e(ji,jj) - rdtbt * ( zssh_frc(ji,jj) + zhdiv )  ) * ssmask(ji,jj) 
     519            ssha_e(ji,jj) = (  sshn_e(ji,jj) - rDt_e * ( zssh_frc(ji,jj) + zhdiv )  ) * ssmask(ji,jj) 
    519520         END_2D 
    520521         ! 
     
    606607            DO_2D_00_00 
    607608               ua_e(ji,jj) = (                                 un_e(ji,jj)   &  
    608                          &     + rdtbt * (                   zu_spg(ji,jj)   & 
     609                         &     + rDt_e * (                   zu_spg(ji,jj)   & 
    609610                         &                                 + zu_trd(ji,jj)   & 
    610611                         &                                 + zu_frc(ji,jj) ) &  
     
    612613 
    613614               va_e(ji,jj) = (                                 vn_e(ji,jj)   & 
    614                          &     + rdtbt * (                   zv_spg(ji,jj)   & 
     615                         &     + rDt_e * (                   zv_spg(ji,jj)   & 
    615616                         &                                 + zv_trd(ji,jj)   & 
    616617                         &                                 + zv_frc(ji,jj) ) & 
     
    631632               ! 
    632633               ua_e(ji,jj) = (               hu_e  (ji,jj) *   un_e (ji,jj)      &  
    633                     &            + rdtbt * (  zhu_bck        * zu_spg (ji,jj)  &   ! 
     634                    &            + rDt_e * (  zhu_bck        * zu_spg (ji,jj)  &   ! 
    634635                    &                       + zhup2_e(ji,jj) * zu_trd (ji,jj)  &   ! 
    635636                    &                       +  hu(ji,jj,Kmm) * zu_frc (ji,jj)  )   ) * z1_hu 
    636637               ! 
    637638               va_e(ji,jj) = (               hv_e  (ji,jj) *   vn_e (ji,jj)      & 
    638                     &            + rdtbt * (  zhv_bck        * zv_spg (ji,jj)  &   ! 
     639                    &            + rDt_e * (  zhv_bck        * zv_spg (ji,jj)  &   ! 
    639640                    &                       + zhvp2_e(ji,jj) * zv_trd (ji,jj)  &   ! 
    640641                    &                       +  hv(ji,jj,Kmm) * zv_f