New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 9923 – NEMO

Changeset 9923


Ignore:
Timestamp:
2018-07-11T10:24:17+02:00 (6 years ago)
Author:
gm
Message:

#1911 (ENHANCE-04): step I.2: dev_r9838_ENHANCE04_MLF

Location:
NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src
Files:
135 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/ice.F90

    r9604 r9923  
    188188   !                                     !!** some other parameters  
    189189   INTEGER , PUBLIC ::   kt_ice           !: iteration number 
    190    REAL(wp), PUBLIC ::   rdt_ice          !: ice time step 
    191    REAL(wp), PUBLIC ::   r1_rdtice        !: = 1. / rdt_ice 
     190   REAL(wp), PUBLIC ::   rDt_ice          !: ice time step 
     191   REAL(wp), PUBLIC ::   r1_Dt_ice        !: = 1. / rdt_ice 
    192192   REAL(wp), PUBLIC ::   r1_nlay_i        !: 1 / nlay_i 
    193193   REAL(wp), PUBLIC ::   r1_nlay_s        !: 1 / nlay_s  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icecor.F90

    r9604 r9923  
    8686      IF ( nn_icesal == 2 ) THEN    !  salinity must stay in bounds [Simin,Simax]        ! 
    8787      !                             !----------------------------------------------------- 
    88          zzc = rhoic * r1_rdtice 
     88         zzc = rhoic * r1_Dt_ice 
    8989         DO jl = 1, jpl 
    9090            DO jj = 1, jpj  
     
    137137               !                 ! heat content variation (W.m-2) 
    138138               diag_heat(ji,jj) = - (  SUM( e_i(ji,jj,1:nlay_i,:) - e_i_b(ji,jj,1:nlay_i,:) )    &  
    139                   &                  + SUM( e_s(ji,jj,1:nlay_s,:) - e_s_b(ji,jj,1:nlay_s,:) )  ) * r1_rdtice 
     139                  &                  + SUM( e_s(ji,jj,1:nlay_s,:) - e_s_b(ji,jj,1:nlay_s,:) )  ) * r1_Dt_ice 
    140140               !                 ! salt, volume 
    141                diag_sice(ji,jj) = SUM( sv_i(ji,jj,:) - sv_i_b(ji,jj,:) ) * rhoic * r1_rdtice 
    142                diag_vice(ji,jj) = SUM( v_i (ji,jj,:) - v_i_b (ji,jj,:) ) * rhoic * r1_rdtice 
    143                diag_vsnw(ji,jj) = SUM( v_s (ji,jj,:) - v_s_b (ji,jj,:) ) * rhosn * r1_rdtice 
     141               diag_sice(ji,jj) = SUM( sv_i(ji,jj,:) - sv_i_b(ji,jj,:) ) * rhoic * r1_Dt_ice 
     142               diag_vice(ji,jj) = SUM( v_i (ji,jj,:) - v_i_b (ji,jj,:) ) * rhoic * r1_Dt_ice 
     143               diag_vsnw(ji,jj) = SUM( v_s (ji,jj,:) - v_s_b (ji,jj,:) ) * rhosn * r1_Dt_ice 
    144144            END DO 
    145145         END DO 
    146146         !                       ! concentration tendency (dynamics) 
    147          zafx   (:,:) = SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_rdtice  
     147         zafx   (:,:) = SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_Dt_ice  
    148148         afx_tot(:,:) = zafx(:,:) 
    149149         IF( iom_use('afxdyn') )   CALL iom_put( 'afxdyn' , zafx(:,:) ) 
     
    158158               !                 ! heat content variation (W.m-2) 
    159159               diag_heat(ji,jj) = diag_heat(ji,jj) - (  SUM( e_i(ji,jj,1:nlay_i,:) - e_i_b(ji,jj,1:nlay_i,:) )    &  
    160                   &                                   + SUM( e_s(ji,jj,1:nlay_s,:) - e_s_b(ji,jj,1:nlay_s,:) )  ) * r1_rdtice 
     160                  &                                   + SUM( e_s(ji,jj,1:nlay_s,:) - e_s_b(ji,jj,1:nlay_s,:) )  ) * r1_Dt_ice 
    161161               !                 ! salt, volume 
    162                diag_sice(ji,jj) = diag_sice(ji,jj) + SUM( sv_i(ji,jj,:) - sv_i_b(ji,jj,:) ) * rhoic * r1_rdtice 
    163                diag_vice(ji,jj) = diag_vice(ji,jj) + SUM( v_i (ji,jj,:) - v_i_b (ji,jj,:) ) * rhoic * r1_rdtice 
    164                diag_vsnw(ji,jj) = diag_vsnw(ji,jj) + SUM( v_s (ji,jj,:) - v_s_b (ji,jj,:) ) * rhosn * r1_rdtice 
     162               diag_sice(ji,jj) = diag_sice(ji,jj) + SUM( sv_i(ji,jj,:) - sv_i_b(ji,jj,:) ) * rhoic * r1_Dt_ice 
     163               diag_vice(ji,jj) = diag_vice(ji,jj) + SUM( v_i (ji,jj,:) - v_i_b (ji,jj,:) ) * rhoic * r1_Dt_ice 
     164               diag_vsnw(ji,jj) = diag_vsnw(ji,jj) + SUM( v_s (ji,jj,:) - v_s_b (ji,jj,:) ) * rhosn * r1_Dt_ice 
    165165            END DO 
    166166         END DO 
    167167         !                       ! concentration tendency (total + thermo) 
    168          zafx   (:,:) = SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_rdtice 
     168         zafx   (:,:) = SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_Dt_ice 
    169169         afx_tot(:,:) = afx_tot(:,:) + zafx(:,:) 
    170170         IF( iom_use('afxthd') )   CALL iom_put( 'afxthd' , zafx(:,:) ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icectl.F90

    r9604 r9923  
    121121         ! outputs 
    122122         zv = ( ( glob_sum( SUM( v_i * rhoic + v_s * rhosn, dim=3 ) * e1e2t ) * zconv  & 
    123             &     - pdiag_v ) * r1_rdtice - zfv ) * rday 
     123            &     - pdiag_v ) * r1_Dt_ice - zfv ) * rday 
    124124 
    125125         zs = ( ( glob_sum( SUM( sv_i * rhoic             , dim=3 ) * e1e2t ) * zconv  & 
    126             &     - pdiag_s ) * r1_rdtice + zfs ) * rday 
     126            &     - pdiag_s ) * r1_Dt_ice + zfs ) * rday 
    127127 
    128128         zt = ( glob_sum( (  SUM( SUM( e_i(:,:,1:nlay_i,:), dim=4 ), dim=3 )   & 
    129129            &              + SUM( SUM( e_s(:,:,1:nlay_s,:), dim=4 ), dim=3 ) ) * e1e2t ) * zconv   & 
    130             &   - pdiag_t ) * r1_rdtice + zft 
     130            &   - pdiag_t ) * r1_Dt_ice + zft 
    131131 
    132132         ! zvtrp and zetrp must be close to 0 if the advection scheme is conservative 
     
    580580               WRITE(numout,*) ' hfx_res      : ', hfx_res(ji,jj) 
    581581               WRITE(numout,*) ' fhtur        : ', fhtur(ji,jj)  
    582                WRITE(numout,*) ' qlead        : ', qlead(ji,jj) * r1_rdtice 
     582               WRITE(numout,*) ' qlead        : ', qlead(ji,jj) * r1_Dt_ice 
    583583               WRITE(numout,*) 
    584584               WRITE(numout,*) ' - Salt fluxes at bottom interface ***' 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icedia.F90

    r9604 r9923  
    9595      ! 2 - Trends due to forcing  ! 
    9696      ! ---------------------------! 
    97       z_frc_volbot = r1_rau0 * glob_sum( - ( wfx_ice(:,:) + wfx_snw(:,:) + wfx_err_sub(:,:) ) * e1e2t(:,:) ) * 1.e-9  ! freshwater flux ice/snow-ocean  
    98       z_frc_voltop = r1_rau0 * glob_sum( - ( wfx_sub(:,:) + wfx_spr(:,:) ) * e1e2t(:,:) ) * 1.e-9                     ! freshwater flux ice/snow-atm 
    99       z_frc_sal    = r1_rau0 * glob_sum(   - sfx(:,:) * e1e2t(:,:) ) * 1.e-9                                          ! salt fluxes ice/snow-ocean 
     97      z_frc_volbot = r1_rho0 * glob_sum( - ( wfx_ice(:,:) + wfx_snw(:,:) + wfx_err_sub(:,:) ) * e1e2t(:,:) ) * 1.e-9  ! freshwater flux ice/snow-ocean  
     98      z_frc_voltop = r1_rho0 * glob_sum( - ( wfx_sub(:,:) + wfx_spr(:,:) ) * e1e2t(:,:) ) * 1.e-9                     ! freshwater flux ice/snow-atm 
     99      z_frc_sal    = r1_rho0 * glob_sum(   - sfx(:,:) * e1e2t(:,:) ) * 1.e-9                                          ! salt fluxes ice/snow-ocean 
    100100      z_frc_tembot =           glob_sum( hfx_out(:,:) * e1e2t(:,:) ) * 1.e-20                                         ! heat on top of ocean (and below ice) 
    101101      z_frc_temtop =           glob_sum( hfx_in (:,:) * e1e2t(:,:) ) * 1.e-20                                         ! heat on top of ice-coean 
     
    110110      ! 3 -  Content variations ! 
    111111      ! ----------------------- ! 
    112       zdiff_vol = r1_rau0 * glob_sum( ( rhoic*vt_i(:,:) + rhosn*vt_s(:,:) - vol_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater trend (km3)  
    113       zdiff_sal = r1_rau0 * glob_sum( ( rhoic* SUM( sv_i(:,:,:), dim=3 ) - sal_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! salt content trend (km3*pss) 
     112      zdiff_vol = r1_rho0 * glob_sum( ( rhoic*vt_i(:,:) + rhosn*vt_s(:,:) - vol_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater trend (km3)  
     113      zdiff_sal = r1_rho0 * glob_sum( ( rhoic* SUM( sv_i(:,:,:), dim=3 ) - sal_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! salt content trend (km3*pss) 
    114114      zdiff_tem =           glob_sum( ( et_i(:,:) + et_s(:,:)             - tem_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-20 ! heat content trend (1.e20 J) 
    115115      !                               + SUM( qevap_ice * a_i_b, dim=3 )       !! clem: I think this term should not be there (but needs a check) 
     
    125125      ! 5 - Diagnostics writing ! 
    126126      ! ----------------------- ! 
    127 !!gm I don't understand the division by the ocean surface (i.e. glob_sum( e1e2t(:,:) ) * 1.e-20 * kt*rdt ) 
    128 !!   and its multiplication bu kt ! is it really what we want ? what is this quantity ? 
    129 !!   IF it is really what we want, compute it at kt=nit000, not 3 time by time-step ! 
    130 !!   kt*rdt  : you mean rdtice ? 
    131 !!gm 
    132127      ! 
    133128      IF( iom_use('ibgvolume')    )   CALL iom_put( 'ibgvolume' , zdiff_vol     )   ! ice/snow volume  drift            (km3 equivalent ocean water)          
     
    135130      IF( iom_use('ibgheatco')    )   CALL iom_put( 'ibgheatco' , zdiff_tem     )   ! ice/snow heat content drift       (1.e20 J) 
    136131      IF( iom_use('ibgheatfx')    )   CALL iom_put( 'ibgheatfx' ,               &   ! ice/snow heat flux drift          (W/m2) 
    137          &                                                     zdiff_tem /glob_sum( e1e2t(:,:) * 1.e-20 * kt*rdt ) ) 
     132         &                                                     zdiff_tem /glob_sum( e1e2t(:,:) * 1.e-20 * kt*rn_Dt ) ) 
    138133 
    139134      IF( iom_use('ibgfrcvoltop') )   CALL iom_put( 'ibgfrcvoltop' , frc_voltop )   ! vol  forcing ice/snw-atm          (km3 equivalent ocean water)  
     
    143138      IF( iom_use('ibgfrctembot') )   CALL iom_put( 'ibgfrctembot' , frc_tembot )   ! heat on top of ocean(below ice)   (1.e20 J)    
    144139      IF( iom_use('ibgfrchfxtop') )   CALL iom_put( 'ibgfrchfxtop' ,            &   ! heat on top of ice/snw/ocean      (W/m2)  
    145          &                                                          frc_temtop / glob_sum( e1e2t(:,:) ) * 1.e-20 * kt*rdt  ) 
     140         &                                                          frc_temtop / glob_sum( e1e2t(:,:) ) * 1.e-20 * kt*rn_Dt  ) 
    146141      IF( iom_use('ibgfrchfxbot') )   CALL iom_put( 'ibgfrchfxbot' ,            &   ! heat on top of ocean(below ice)   (W/m2)  
    147          &                                                          frc_tembot / glob_sum( e1e2t(:,:) ) * 1.e-20 * kt*rdt  ) 
     142         &                                                          frc_tembot / glob_sum( e1e2t(:,:) ) * 1.e-20 * kt*rn_Dt  ) 
    148143 
    149144      IF( iom_use('ibgvol_tot' )  )   CALL iom_put( 'ibgvol_tot'  , zbg_ivol     )   ! ice volume                       (km3) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icedyn_adv.F90

    r9604 r9923  
    9898      ! diagnostics 
    9999      !------------ 
    100       diag_trp_ei(:,:) = SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_rdtice 
    101       diag_trp_es(:,:) = SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_rdtice 
    102       diag_trp_sv(:,:) = SUM(     sv_i(:,:,:)          - sv_i_b(:,:,:)                  , dim=3 ) * r1_rdtice 
    103       diag_trp_vi(:,:) = SUM(     v_i (:,:,:)          - v_i_b (:,:,:)                  , dim=3 ) * r1_rdtice 
    104       diag_trp_vs(:,:) = SUM(     v_s (:,:,:)          - v_s_b (:,:,:)                  , dim=3 ) * r1_rdtice 
     100      diag_trp_ei(:,:) = SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_Dt_ice 
     101      diag_trp_es(:,:) = SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_Dt_ice 
     102      diag_trp_sv(:,:) = SUM(     sv_i(:,:,:)          - sv_i_b(:,:,:)                  , dim=3 ) * r1_Dt_ice 
     103      diag_trp_vi(:,:) = SUM(     v_i (:,:,:)          - v_i_b (:,:,:)                  , dim=3 ) * r1_Dt_ice 
     104      diag_trp_vs(:,:) = SUM(     v_s (:,:,:)          - v_s_b (:,:,:)                  , dim=3 ) * r1_Dt_ice 
    105105      IF( iom_use('icemtrp') )   CALL iom_put( "icemtrp" , diag_trp_vi * rhoic          )   ! ice mass transport 
    106106      IF( iom_use('snwmtrp') )   CALL iom_put( "snwmtrp" , diag_trp_vs * rhosn          )   ! snw mass transport 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icedyn_rdgrft.F90

    r9604 r9923  
    189189            ! divergence given by the advection scheme 
    190190            !   (which may not be equal to divu as computed from the velocity field) 
    191             zdivu_adv(ji) = ( 1._wp - ato_i_1d(ji) - SUM( a_i_2d(ji,:) ) ) * r1_rdtice 
     191            zdivu_adv(ji) = ( 1._wp - ato_i_1d(ji) - SUM( a_i_2d(ji,:) ) ) * r1_Dt_ice 
    192192            ! 
    193193            IF( zdivu_adv(ji) < 0._wp )   closing_net(ji) = MAX( closing_net(ji), -zdivu_adv(ji) )   ! make sure the closing rate is large enough 
     
    255255               ELSE 
    256256                  iterate_ridging  = 1 
    257                   zdivu_adv  (ji) = zfac * r1_rdtice 
     257                  zdivu_adv  (ji) = zfac * r1_Dt_ice 
    258258                  closing_net(ji) = MAX( 0._wp, -zdivu_adv(ji) ) 
    259259                  opning     (ji) = MAX( 0._wp,  zdivu_adv(ji) ) 
     
    460460            zfac = apartf(ji,jl) * closing_gross(ji) * rdt_ice 
    461461            IF( zfac > pa_i(ji,jl) ) THEN 
    462                closing_gross(ji) = pa_i(ji,jl) / apartf(ji,jl) * r1_rdtice 
     462               closing_gross(ji) = pa_i(ji,jl) / apartf(ji,jl) * r1_Dt_ice 
    463463            ENDIF 
    464464         END DO 
     
    472472         zfac = pato_i(ji) + ( opning(ji) - apartf(ji,0) * closing_gross(ji) ) * rdt_ice 
    473473         IF( zfac < 0._wp ) THEN           ! would lead to negative ato_i 
    474             opning(ji) = apartf(ji,0) * closing_gross(ji) - pato_i(ji) * r1_rdtice  
     474            opning(ji) = apartf(ji,0) * closing_gross(ji) - pato_i(ji) * r1_Dt_ice  
    475475         ELSEIF( zfac > zasum(ji) ) THEN   ! would lead to ato_i > asum 
    476             opning(ji) = apartf(ji,0) * closing_gross(ji) + ( zasum(ji) - pato_i(ji) ) * r1_rdtice  
     476            opning(ji) = apartf(ji,0) * closing_gross(ji) + ( zasum(ji) - pato_i(ji) ) * r1_Dt_ice  
    477477         ENDIF 
    478478      END DO 
     
    570570 
    571571               ! Ice-ocean exchanges associated with ice porosity 
    572                wfx_dyn_1d(ji) = wfx_dyn_1d(ji) - vsw * rhoic * r1_rdtice   ! increase in ice volume due to seawater frozen in voids 
    573                sfx_dyn_1d(ji) = sfx_dyn_1d(ji) - vsw * sss_1d(ji) * rhoic * r1_rdtice 
    574                hfx_dyn_1d(ji) = hfx_dyn_1d(ji) + ersw(ji) * r1_rdtice          ! > 0 [W.m-2]  
     572               wfx_dyn_1d(ji) = wfx_dyn_1d(ji) - vsw              * rhoic * r1_Dt_ice   ! increase in ice volume due to seawater frozen in voids 
     573               sfx_dyn_1d(ji) = sfx_dyn_1d(ji) - vsw * sss_1d(ji) * rhoic * r1_Dt_ice 
     574               hfx_dyn_1d(ji) = hfx_dyn_1d(ji) + ersw(ji)                 * r1_Dt_ice   ! > 0 [W.m-2]  
    575575 
    576576               ! Put the snow lost by ridging into the ocean 
    577577               !  Note that esrdg > 0; the ocean must cool to melt snow. If the ocean temp = Tf already, new ice must grow. 
    578578               wfx_snw_dyn_1d(ji) = wfx_snw_dyn_1d(ji) + ( rhosn * vsrdg(ji) * ( 1._wp - rn_fsnwrdg )   &   ! fresh water source for ocean 
    579                   &                                      + rhosn * vsrft(ji) * ( 1._wp - rn_fsnwrft ) ) * r1_rdtice 
     579                  &                                      + rhosn * vsrft(ji) * ( 1._wp - rn_fsnwrft ) ) * r1_Dt_ice 
    580580 
    581581               ! Put the melt pond water into the ocean 
     
    584584               !IF ( ln_pnd_fwb ) THEN 
    585585               !   wfx_pnd_1d(ji) = wfx_pnd_1d(ji) + ( rhofw * vprdg(ji) * ( 1._wp - rn_fpndrdg )   &        ! fresh water source for ocean 
    586                !      &                              + rhofw * vprft(ji) * ( 1._wp - rn_fpndrft ) ) * r1_rdtice 
     586               !      &                              + rhofw * vprft(ji) * ( 1._wp - rn_fpndrft ) ) * r1_Dt_ice 
    587587               !ENDIF 
    588588 
     
    590590               IF( nn_icesal /= 2 )  THEN 
    591591                  sirdg2(ji)     = sirdg2(ji)     - vsw * ( sss_1d(ji) - s_i_1d(ji) )        ! ridge salinity = s_i 
    592                   sfx_bri_1d(ji) = sfx_bri_1d(ji) + sss_1d(ji) * vsw * rhoic * r1_rdtice  &  ! put back sss_m into the ocean 
    593                      &                            - s_i_1d(ji) * vsw * rhoic * r1_rdtice     ! and get  s_i  from the ocean  
     592                  sfx_bri_1d(ji) = sfx_bri_1d(ji) + sss_1d(ji) * vsw * rhoic * r1_Dt_ice  &  ! put back sss_m into the ocean 
     593                     &                            - s_i_1d(ji) * vsw * rhoic * r1_Dt_ice     ! and get  s_i  from the ocean  
    594594               ENDIF 
    595595 
     
    621621                  ! Put the snow lost by ridging into the ocean 
    622622                  hfx_dyn_1d(ji) = hfx_dyn_1d(ji) + ( - esrdg(ji,jk) * ( 1._wp - rn_fsnwrdg )   &                 ! heat sink for ocean (<0, W.m-2) 
    623                      &                                - esrft(ji,jk) * ( 1._wp - rn_fsnwrft ) ) * r1_rdtice 
     623                     &                                - esrft(ji,jk) * ( 1._wp - rn_fsnwrft ) ) * r1_Dt_ice 
    624624                  ! 
    625625                  ! Remove energy of new ridge to each category jl1 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icedyn_rhg_evp.F90

    r9660 r9923  
    114114      INTEGER ::   jter         ! local integers 
    115115      ! 
    116       REAL(wp) ::   zrhoco                                              ! rau0 * rn_cio 
     116      REAL(wp) ::   zrhoco                                              ! rho0 * rn_cio 
    117117      REAL(wp) ::   zdtevp, z1_dtevp                                    ! time step for subcycling 
    118118      REAL(wp) ::   ecc2, z1_ecc2                                       ! square of yield ellipse eccenticity 
     
    221221      ! 1) define some variables and initialize arrays 
    222222      !------------------------------------------------------------------------------! 
    223       zrhoco = rau0 * rn_cio  
     223      zrhoco = rho0 * rn_cio  
    224224 
    225225      ! ecc2: square of yield ellipse eccenticrity 
     
    271271         zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 
    272272         ! 
    273          zpice(:,:) = ssh_m(:,:) + ( zintn * snwice_mass(:,:) + zintb * snwice_mass_b(:,:) ) * r1_rau0 
     273         zpice(:,:) = ssh_m(:,:) + ( zintn * snwice_mass(:,:) + zintb * snwice_mass_b(:,:) ) * r1_rho0 
    274274         ! 
    275275      ELSE                                    !== non-embedded sea ice: use ocean surface for slope calculation ==! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/iceistate.F90

    r9656 r9923  
    295295                  ! In case snow load is in excess that would lead to transformation from snow to ice 
    296296                  ! Then, transfer the snow excess into the ice (different from icethd_dh) 
    297                   zdh = MAX( 0._wp, ( rhosn * h_s(ji,jj,jl) + ( rhoic - rau0 ) * h_i(ji,jj,jl) ) * r1_rau0 )  
     297                  zdh = MAX( 0._wp, ( rhosn * h_s(ji,jj,jl) + ( rhoic - rho0 ) * h_i(ji,jj,jl) ) * r1_rho0 )  
    298298                  ! recompute h_i, h_s avoiding out of bounds values 
    299299                  h_i(ji,jj,jl) = MIN( hi_max(jl), h_i(ji,jj,jl) + zdh ) 
     
    415415      IF( ln_ice_embd ) THEN            ! embedded sea-ice: deplete the initial ssh below sea-ice area 
    416416         ! 
    417          sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 
    418          sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 
     417         sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rho0 
     418         sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rho0 
    419419         ! 
    420420         IF( .NOT.ln_linssh ) THEN 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icestp.F90

    r9725 r9923  
    341341      IF( ln_bdy .AND. ln_icediachk )   CALL ctl_warn('par_init: online conservation check does not work with BDY') 
    342342      ! 
    343       rdt_ice   = REAL(nn_fsbc) * rdt          !--- sea-ice timestep and its inverse 
    344       r1_rdtice = 1._wp / rdt_ice 
     343      rdt_ice   = REAL(nn_fsbc) * rn_Dt        !--- sea-ice timestep and its inverse 
     344      r1_Dt_ice = 1._wp / rdt_ice 
    345345      IF(lwp) WRITE(numout,*) 
    346       IF(lwp) WRITE(numout,*) '      ice timestep rdt_ice = nn_fsbc*rdt = ', rdt_ice 
     346      IF(lwp) WRITE(numout,*) '      ice timestep rdt_ice = nn_fsbc*rn_Dt = ', rdt_ice, ' [s]' 
    347347      ! 
    348348      r1_nlay_i = 1._wp / REAL( nlay_i, wp )   !--- inverse of nlay_i and nlay_s 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icethd.F90

    r9750 r9923  
    120120         DO jj = 2, jpjm1 
    121121            DO ji = fs_2, fs_jpim1 
    122                zfric(ji,jj) = r1_rau0 * SQRT( 0.5_wp *  & 
     122               zfric(ji,jj) = r1_rho0 * SQRT( 0.5_wp *  & 
    123123                  &                         (  utau(ji,jj) * utau(ji,jj) + utau(ji-1,jj) * utau(ji-1,jj)   & 
    124124                  &                          + vtau(ji,jj) * vtau(ji,jj) + vtau(ji,jj-1) * vtau(ji,jj-1) ) ) * tmask(ji,jj,1) 
     
    150150            ! --- Energy needed to bring ocean surface layer until its freezing (<0, J.m-2) --- ! 
    151151            ! includes supercooling potential energy (>0) or "above-freezing" energy (<0) 
    152             zqfr = tmask(ji,jj,1) * rau0 * rcp * e3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) 
     152            zqfr = tmask(ji,jj,1) * rho0_rcp * e3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) 
    153153 
    154154            ! --- Above-freezing sensible heat content (J/m2 grid) 
    155             zqfr_neg = tmask(ji,jj,1) * rau0 * rcp * e3t_m(ji,jj) * MIN( ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ), 0._wp ) 
     155            zqfr_neg = tmask(ji,jj,1) * rho0_rcp * e3t_m(ji,jj) * MIN( ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ), 0._wp ) 
    156156 
    157157            ! --- Sensible ocean-to-ice heat flux (W/m2) 
    158158            zfric_u      = MAX( SQRT( zfric(ji,jj) ), zfric_umin )  
    159             fhtur(ji,jj) = rswitch * rau0 * rcp * zch  * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2 
    160  
    161             fhtur(ji,jj) = rswitch * MIN( fhtur(ji,jj), - zqfr_neg * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) ) 
     159            fhtur(ji,jj) = rswitch * rho0_rcp * zch  * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2 
     160 
     161            fhtur(ji,jj) = rswitch * MIN( fhtur(ji,jj), - zqfr_neg * r1_Dt_ice / MAX( at_i(ji,jj), epsi10 ) ) 
    162162            ! upper bound for fhtur: the heat retrieved from the ocean must be smaller than the heat necessary to reach  
    163163            !                        the freezing point, so that we do not have SST < T_freeze 
     
    169169            ! If there is ice and leads are warming, then transfer energy from the lead budget and use it for bottom melting  
    170170            IF( zqld > 0._wp ) THEN 
    171                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 
     171               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 
    172172               qlead(ji,jj) = 0._wp 
    173173            ELSE 
     
    197197      !     Third  step in iceupdate.F90  :  heat from ice-ocean mass exchange (zf_mass) + solar 
    198198      hfx_out(:,:) = ( 1._wp - at_i_b(:,:) ) * qns_oce(:,:) + qemp_oce(:,:)  &  ! Non solar heat flux received by the ocean                
    199          &           - qlead(:,:) * r1_rdtice                                &  ! heat flux taken from the ocean where there is open water ice formation 
     199         &           - qlead(:,:) * r1_Dt_ice                                &  ! heat flux taken from the ocean where there is open water ice formation 
    200200         &           - at_i (:,:) * fhtur(:,:)                               &  ! heat flux taken by turbulence 
    201201         &           - at_i (:,:) *  fhld(:,:)                                  ! heat flux taken during bottom growth/melt  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icethd_da.F90

    r9604 r9923  
    137137             
    138138            ! Contribution to salt flux 
    139             sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoic *  h_i_1d(ji) * zda * s_i_1d(ji) * r1_rdtice 
     139            sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoic *  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 * ( rhoic * h_i_1d(ji) + rhosn * h_s_1d(ji) ) 
     146            wfx_lam_1d(ji) =  wfx_lam_1d(ji) + zda * r1_Dt_ice * ( rhoic * h_i_1d(ji) + rhosn * h_s_1d(ji) ) 
    147147             
    148148            ! new concentration 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icethd_dh.F90

    r9767 r9923  
    7676      REAL(wp) ::   zgrr         ! bottom growth rate 
    7777      REAL(wp) ::   zt_i_new     ! bottom formation temperature 
    78       REAL(wp) ::   z1_rho       ! 1/(rhosn+rau0-rhoic) 
     78      REAL(wp) ::   z1_rho       ! 1/(rhosn+rho0-rhoic) 
    7979 
    8080      REAL(wp) ::   zQm          ! enthalpy exchanged with the ocean (J/m2), >0 towards the ocean 
     
    181181         DO ji = 1, npti 
    182182            IF( t_s_1d(ji,jk) > rt0 ) THEN 
    183                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 
    184                wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + rhosn         * zh_s(ji,jk) * a_i_1d(ji) * r1_rdtice   ! mass flux 
     183               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 
     184               wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + rhosn         * zh_s(ji,jk) * a_i_1d(ji) * r1_Dt_ice   ! mass flux 
    185185               ! updates 
    186186               dh_s_mlt(ji)    = dh_s_mlt(ji) - zh_s(ji,jk) 
     
    205205            zqprec    (ji) = - qprec_ice_1d(ji)                                             ! enthalpy of the precip (>0, J.m-3) 
    206206            ! 
    207             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) 
    208             wfx_spr_1d(ji) = wfx_spr_1d(ji) - rhosn         * a_i_1d(ji) * zdh_s_pre(ji) * r1_rdtice   ! mass flux, <0 
     207            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) 
     208            wfx_spr_1d(ji) = wfx_spr_1d(ji) - rhosn         * a_i_1d(ji) * zdh_s_pre(ji) * r1_Dt_ice   ! mass flux, <0 
    209209             
    210210            ! --- melt of falling snow --- 
     
    212212            zdeltah       (ji,1) = - rswitch * zq_su(ji) / MAX( zqprec(ji) , epsi20 )   ! thickness change 
    213213            zdeltah       (ji,1) = MAX( - zdh_s_pre(ji), zdeltah(ji,1) )                ! bound melting  
    214             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) 
    215             wfx_snw_sum_1d(ji)   = wfx_snw_sum_1d(ji) - rhosn         * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice   ! snow melting only = water into the ocean (then without snow precip), >0 
     214            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) 
     215            wfx_snw_sum_1d(ji)   = wfx_snw_sum_1d(ji) - rhosn         * a_i_1d(ji) * zdeltah(ji,1) * r1_Dt_ice   ! snow melting only = water into the ocean (then without snow precip), >0 
    216216             
    217217            ! updates available heat + precipitations after melting 
     
    252252               zdh_s_mel(ji)    = zdh_s_mel(ji) + zdeltah(ji,jk) 
    253253                
    254                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) 
    255                wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhosn          * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice   ! snow melting only = water into the ocean (then without snow precip) 
     254               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) 
     255               wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhosn          * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice   ! snow melting only = water into the ocean (then without snow precip) 
    256256                
    257257               ! updates available heat + thickness 
     
    279279            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) 
    280280               &                 ( zdeltah(ji,1) * zqprec(ji) + ( zdh_s_sub(ji) - zdeltah(ji,1) ) * e_s_1d(ji,1) )  & 
    281                &                 * a_i_1d(ji) * r1_rdtice 
    282             wfx_snw_sub_1d(ji) = wfx_snw_sub_1d(ji) - rhosn * a_i_1d(ji) * zdh_s_sub(ji) * r1_rdtice   ! Mass flux by sublimation 
     281               &                 * a_i_1d(ji) * r1_Dt_ice 
     282            wfx_snw_sub_1d(ji) = wfx_snw_sub_1d(ji) - rhosn * a_i_1d(ji) * zdh_s_sub(ji) * r1_Dt_ice   ! Mass flux by sublimation 
    283283             
    284284            ! new snow thickness 
     
    337337               zfmdt          = - rhoic * zdeltah(ji,jk)              ! Recompute mass flux [kg/m2, >0] 
    338338 
    339                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 
     339               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 
    340340               !                                                                                                  ice enthalpy zEi is "sent" to the ocean 
    341                sfx_res_1d(ji) = sfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice   ! Salt flux 
     341               sfx_res_1d(ji) = sfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_Dt_ice   ! Salt flux 
    342342               !                                                                                                  using s_i_1d and not sz_i_1d(jk) is ok 
    343                wfx_res_1d(ji) = wfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice                ! Mass flux 
     343               wfx_res_1d(ji) = wfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice                ! Mass flux 
    344344 
    345345            ELSE                                        !-- Surface melting 
     
    363363               zQm            = zfmdt * zEw                           ! Energy of the melt water sent to the ocean [J/m2, <0] 
    364364                
    365                sfx_sum_1d(ji) = sfx_sum_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice   ! Salt flux >0 
     365               sfx_sum_1d(ji) = sfx_sum_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_Dt_ice   ! Salt flux >0 
    366366               !                                                                                                  using s_i_1d and not sz_i_1d(jk) is ok) 
    367                hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice                           ! Heat flux [W.m-2], < 0 
    368                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   
     367               hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_Dt_ice                           ! Heat flux [W.m-2], < 0 
     368               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   
    369369               !  
    370                wfx_sum_1d(ji) = wfx_sum_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice                ! Mass flux 
     370               wfx_sum_1d(ji) = wfx_sum_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice                ! Mass flux 
    371371                
    372372            END IF 
     
    378378            dh_i_sub(ji)    = dh_i_sub(ji)    + zdum 
    379379             
    380             sfx_sub_1d(ji)     = sfx_sub_1d(ji) - rhoic * a_i_1d(ji) * zdum * s_i_1d(ji) * r1_rdtice ! Salt flux >0 
     380            sfx_sub_1d(ji)     = sfx_sub_1d(ji) - rhoic * a_i_1d(ji) * zdum * s_i_1d(ji) * r1_Dt_ice ! Salt flux >0 
    381381            !                                                                                          clem: flux is sent to the ocean for simplicity 
    382382            !                                                                                                but salt should remain in the ice except 
    383383            !                                                                                                if all ice is melted. => must be corrected 
    384             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 
    385  
    386             wfx_ice_sub_1d(ji) = wfx_ice_sub_1d(ji) - rhoic * a_i_1d(ji) * zdum * r1_rdtice          ! Mass flux > 0 
     384            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 
     385 
     386            wfx_ice_sub_1d(ji) = wfx_ice_sub_1d(ji) - rhoic * a_i_1d(ji) * zdum * r1_Dt_ice          ! Mass flux > 0 
    387387 
    388388            ! update remaining mass flux 
     
    409409      ! remaining "potential" evap is sent to ocean 
    410410      DO ji = 1, npti 
    411          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) 
     411         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) 
    412412      END DO 
    413413 
     
    437437               !--- zswi12 if 2.0e-8 < dh/dt < 3.6e-7  
    438438               !--- zswi2  if dh/dt > 3.6e-7 
    439                zgrr     = MIN( 1.0e-3, MAX ( dh_i_bog(ji) * r1_rdtice , epsi10 ) ) 
     439               zgrr     = MIN( 1.0e-3, MAX ( dh_i_bog(ji) * r1_Dt_ice , epsi10 ) ) 
    440440               zswi2    = MAX( 0._wp , SIGN( 1._wp , zgrr - 3.6e-7 ) ) 
    441441               zswi12   = MAX( 0._wp , SIGN( 1._wp , zgrr - 2.0e-8 ) ) * ( 1.0 - zswi2 ) 
     
    463463            zfmdt          = - rhoic * dh_i_bog(ji)                                                   ! Mass flux x time step (kg/m2, < 0) 
    464464             
    465             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 
    466             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 
    467              
    468             sfx_bog_1d(ji) = sfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bog(ji) * s_i_new(ji) * r1_rdtice    ! Salt flux, <0 
    469  
    470             wfx_bog_1d(ji) = wfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bog(ji) * r1_rdtice                  ! Mass flux, <0 
     465            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 
     466            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 
     467             
     468            sfx_bog_1d(ji) = sfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bog(ji) * s_i_new(ji) * r1_Dt_ice    ! Salt flux, <0 
     469 
     470            wfx_bog_1d(ji) = wfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bog(ji) * r1_Dt_ice                  ! Mass flux, <0 
    471471 
    472472            ! update heat content (J.m-2) and layer thickness 
     
    499499                  zfmdt             = - zdeltah(ji,jk) * rhoic      ! Mass flux x time step > 0 
    500500 
    501                   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 
     501                  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 
    502502                  !                                                                                                  ice enthalpy zEi is "sent" to the ocean 
    503                   sfx_res_1d(ji) = sfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice   ! Salt flux 
     503                  sfx_res_1d(ji) = sfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_Dt_ice   ! Salt flux 
    504504                  !                                                                                                  using s_i_1d and not sz_i_1d(jk) is ok 
    505                   wfx_res_1d(ji) = wfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice                ! Mass flux 
     505                  wfx_res_1d(ji) = wfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice                ! Mass flux 
    506506 
    507507                  ! update heat content (J.m-2) and layer thickness 
     
    529529                  zQm             = zfmdt * zEw                                               ! Heat exchanged with ocean 
    530530 
    531                   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   
    532                   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   
    533  
    534                   sfx_bom_1d(ji)  = sfx_bom_1d(ji) - rhoic *  a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_rdtice  ! Salt flux 
     531                  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   
     532                  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   
     533 
     534                  sfx_bom_1d(ji)  = sfx_bom_1d(ji) - rhoic *  a_i_1d(ji) * zdeltah(ji,jk) * s_i_1d(ji) * r1_Dt_ice  ! Salt flux 
    535535                  !                                                                                                   using s_i_1d and not sz_i_1d(jk) is ok 
    536536                   
    537                   wfx_bom_1d(ji)  = wfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice                ! Mass flux 
     537                  wfx_bom_1d(ji)  = wfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_Dt_ice                ! Mass flux 
    538538 
    539539                  ! update heat content (J.m-2) and layer thickness 
     
    565565         
    566566         zq_rema(ji)        = zq_rema(ji) + zdeltah(ji,1) * e_s_1d(ji,1)                               ! update available heat (J.m-2) 
    567          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) 
    568          wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice      ! Mass flux 
     567         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) 
     568         wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_Dt_ice      ! Mass flux 
    569569         dh_s_mlt(ji)       = dh_s_mlt(ji) + zdeltah(ji,1) 
    570570         !     
    571571         ! Remaining heat flux (W.m-2) is sent to the ocean heat budget 
    572          hfx_out_1d(ji) = hfx_out_1d(ji) + ( zq_rema(ji) * a_i_1d(ji) ) * r1_rdtice 
     572         hfx_out_1d(ji) = hfx_out_1d(ji) + ( zq_rema(ji) * a_i_1d(ji) ) * r1_Dt_ice 
    573573 
    574574         IF( ln_icectl .AND. zq_rema(ji) < 0. .AND. lwp ) WRITE(numout,*) 'ALERTE zq_rema <0 = ', zq_rema(ji) 
     
    580580      ! When snow load excesses Archimede's limit, snow-ice interface goes down under sea-level,  
    581581      ! flooding of seawater transforms snow into ice dh_snowice is positive for the ice 
    582       z1_rho = 1._wp / ( rhosn+rau0-rhoic ) 
     582      z1_rho = 1._wp / ( rhosn+rho0-rhoic ) 
    583583      DO ji = 1, npti 
    584584         ! 
    585          dh_snowice(ji) = MAX(  0._wp , ( rhosn * h_s_1d(ji) + (rhoic-rau0) * h_i_1d(ji) ) * z1_rho ) 
     585         dh_snowice(ji) = MAX(  0._wp , ( rhosn * h_s_1d(ji) + (rhoic-rho0) * h_i_1d(ji) ) * z1_rho ) 
    586586 
    587587         h_i_1d(ji)    = h_i_1d(ji) + dh_snowice(ji) 
     
    593593         zQm            = zfmdt * zEw  
    594594          
    595          hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice ! Heat flux 
    596  
    597          sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_1d(ji) * a_i_1d(ji) * zfmdt * r1_rdtice ! Salt flux 
     595         hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_Dt_ice ! Heat flux 
     596 
     597         sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_1d(ji) * a_i_1d(ji) * zfmdt * r1_Dt_ice ! Salt flux 
    598598 
    599599         ! Case constant salinity in time: virtual salt flux to keep salinity constant 
    600600         IF( nn_icesal /= 2 )  THEN 
    601             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 
    602                &                            - s_i_1d(ji)  * a_i_1d(ji) * dh_snowice(ji) * rhoic * r1_rdtice    ! and get  rn_icesal from the ocean  
     601            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 
     602               &                            - s_i_1d(ji)  * a_i_1d(ji) * dh_snowice(ji) * rhoic * r1_Dt_ice    ! and get  rn_icesal from the ocean  
    603603         ENDIF 
    604604 
    605605         ! Mass flux: All snow is thrown in the ocean, and seawater is taken to replace the volume 
    606          wfx_sni_1d(ji)     = wfx_sni_1d(ji)     - a_i_1d(ji) * dh_snowice(ji) * rhoic * r1_rdtice 
    607          wfx_snw_sni_1d(ji) = wfx_snw_sni_1d(ji) + a_i_1d(ji) * dh_snowice(ji) * rhosn * r1_rdtice 
     606         wfx_sni_1d(ji)     = wfx_sni_1d(ji)     - a_i_1d(ji) * dh_snowice(ji) * rhoic * r1_Dt_ice 
     607         wfx_snw_sni_1d(ji) = wfx_snw_sni_1d(ji) + a_i_1d(ji) * dh_snowice(ji) * rhosn * r1_Dt_ice 
    608608 
    609609         ! update heat content (J.m-2) and layer thickness 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icethd_do.F90

    r9604 r9923  
    140140         ! Physical constants 
    141141         zhicrit = 0.04                                          ! frazil ice thickness 
    142          ztwogp  = 2. * rau0 / ( grav * 0.3 * ( rau0 - rhoic ) ) ! reduced grav 
     142         ztwogp  = 2. * rho0 / ( grav * 0.3 * ( rho0 - rhoic ) ) ! reduced grav 
    143143         zsqcd   = 1.0 / SQRT( 1.3 * zcai )                      ! 1/SQRT(airdensity*drag) 
    144144         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) * rhoic * r1_rdtice 
     295            wfx_opw_1d(ji) = wfx_opw_1d(ji) - zv_newice(ji) * rhoic * r1_Dt_ice 
    296296            ! salt flux 
    297             sfx_opw_1d(ji) = sfx_opw_1d(ji) - zv_newice(ji) * rhoic * zs_newice(ji) * r1_rdtice 
     297            sfx_opw_1d(ji) = sfx_opw_1d(ji) - zv_newice(ji) * rhoic * zs_newice(ji) * r1_Dt_ice 
    298298         END DO 
    299299          
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icethd_ent.F90

    r9604 r9923  
    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/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icethd_pnd.F90

    r9750 r9923  
    168168            ! melt pond mass flux (<0) 
    169169            IF( ln_pnd_fwb .AND. zdv_mlt > 0._wp ) THEN 
    170                zfac = zfr_mlt * zdv_mlt * rhofw * r1_rdtice 
     170               zfac = zfr_mlt * zdv_mlt * rhofw * r1_Dt_ice 
    171171               wfx_pnd_1d(ji) = wfx_pnd_1d(ji) - zfac 
    172172               ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icethd_sal.F90

    r9750 r9923  
    9898                
    9999               ! Salt flux 
    100                sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * 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) - rhoic * a_i_1d(ji) * h_i_1d(ji) * ( zs_i_fl + zs_i_gd ) * r1_Dt_ice 
    101101            ENDIF 
    102102         END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icethd_zdf_bl99.F90

    r9656 r9923  
    770770                
    771771               IF( t_su_1d(ji) < rt0 ) THEN  ! case T_su < 0degC 
    772                   zhfx_err = ( qns_ice_1d(ji) + qsr_ice_1d(ji)    - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice )*a_i_1d(ji) 
     772                  zhfx_err = ( qns_ice_1d(ji) + qsr_ice_1d(ji)    - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_Dt_ice )*a_i_1d(ji) 
    773773               ELSE                          ! case T_su = 0degC 
    774                   zhfx_err = ( fc_su(ji)      + qsr_ice_tr_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice )*a_i_1d(ji) 
     774                  zhfx_err = ( fc_su(ji)      + qsr_ice_tr_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_Dt_ice )*a_i_1d(ji) 
    775775               ENDIF 
    776776                
    777777            ELSEIF( k_jules == np_jules_ACTIVE ) THEN 
    778778             
    779                zhfx_err = ( fc_su(ji) + qsr_ice_tr_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice ) * a_i_1d(ji) 
     779               zhfx_err = ( fc_su(ji) + qsr_ice_tr_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_Dt_ice ) * a_i_1d(ji) 
    780780             
    781781            ENDIF 
     
    785785            ! 
    786786            ! hfx_dif = Heat flux diagnostic of sensible heat used to warm/cool ice in W.m-2    
    787             hfx_dif_1d(ji) = hfx_dif_1d(ji) - zdq * r1_rdtice * a_i_1d(ji) 
     787            hfx_dif_1d(ji) = hfx_dif_1d(ji) - zdq * r1_Dt_ice * a_i_1d(ji) 
    788788            ! 
    789789         END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/iceupdate.F90

    r9784 r9923  
    174174            snwice_mass  (ji,jj) = tmask(ji,jj,1) * ( rhosn * vt_s(ji,jj) + rhoic * vt_i(ji,jj)  )  
    175175            !                                               ! time evolution of snow+ice mass 
    176             snwice_fmass (ji,jj) = ( snwice_mass(ji,jj) - snwice_mass_b(ji,jj) ) * r1_rdtice 
     176            snwice_fmass (ji,jj) = ( snwice_mass(ji,jj) - snwice_mass_b(ji,jj) ) * r1_Dt_ice 
    177177             
    178178         END DO 
     
    336336      ENDIF 
    337337 
    338       zrhoco = rau0 * rn_cio 
     338      zrhoco = rho0 * rn_cio 
    339339      ! 
    340340      IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN     !==  Ice time-step only  ==!   (i.e. surface module time-step) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icevar.F90

    r9725 r9923  
    477477               DO ji = 1 , jpi 
    478478                  ! update exchanges with ocean 
    479                   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 
     479                  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 
    480480                  e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * zswitch(ji,jj) 
    481481                  t_i(ji,jj,jk,jl) = t_i(ji,jj,jk,jl) * zswitch(ji,jj) + rt0 * ( 1._wp - zswitch(ji,jj) ) 
     
    488488               DO ji = 1 , jpi 
    489489                  ! update exchanges with ocean 
    490                   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 
     490                  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 
    491491                  e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * zswitch(ji,jj) 
    492492                  t_s(ji,jj,jk,jl) = t_s(ji,jj,jk,jl) * zswitch(ji,jj) + rt0 * ( 1._wp - zswitch(ji,jj) ) 
     
    498498            DO ji = 1 , jpi 
    499499               ! update exchanges with ocean 
    500                sfx_res(ji,jj)  = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl)   * rhoic * r1_rdtice 
    501                wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i (ji,jj,jl)   * rhoic * r1_rdtice 
    502                wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl)   * rhosn * r1_rdtice 
     500               sfx_res(ji,jj)  = sfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * sv_i(ji,jj,jl)   * rhoic * r1_Dt_ice 
     501               wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_i (ji,jj,jl)   * rhoic * r1_Dt_ice 
     502               wfx_res(ji,jj)  = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl)   * rhosn * r1_Dt_ice 
    503503               ! 
    504504               !----------------------------------------------------------------- 
     
    669669               ! In case snow load is in excess that would lead to transformation from snow to ice 
    670670               ! Then, transfer the snow excess into the ice (different from icethd_dh) 
    671                zdh = MAX( 0._wp, ( rhosn * zh_s(ji,jl) + ( rhoic - rau0 ) * zh_i(ji,jl) ) * r1_rau0 )  
     671               zdh = MAX( 0._wp, ( rhosn * zh_s(ji,jl) + ( rhoic - rho0 ) * zh_i(ji,jl) ) * r1_rho0 )  
    672672               ! recompute h_i, h_s avoiding out of bounds values 
    673673               zh_i(ji,jl) = MIN( hi_max(jl), zh_i(ji,jl) + zdh ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/ICE/icewri.F90

    r9604 r9923  
    8585      ! Standard outputs 
    8686      !----------------- 
    87       zrho1 = ( rau0 - rhoic ) * r1_rau0; zrho2 = rhosn * r1_rau0 
     87      zrho1 = ( rho0 - rhoic ) * r1_rho0   ;   zrho2 = rhosn * r1_rho0 
    8888      ! masks 
    8989      IF( iom_use('icemask'  ) )   CALL iom_put( "icemask"  , zmsk00              )   ! ice mask 0% 
     
    250250      CALL histvert( kid, "ncatice", "Ice Categories","", jpl, jcat, nz_i, "up") 
    251251 
    252       CALL histdef( kid, "sithic", "Ice thickness"          , "m"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    253       CALL histdef( kid, "siconc", "Ice concentration"      , "%"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    254       CALL histdef( kid, "sitemp", "Ice temperature"        , "C"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    255       CALL histdef( kid, "sivelu", "i-Ice speed "           , "m/s"    , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    256       CALL histdef( kid, "sivelv", "j-Ice speed "           , "m/s"    , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    257       CALL histdef( kid, "sistru", "i-Wind stress over ice" , "Pa"     , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    258       CALL histdef( kid, "sistrv", "j-Wind stress over ice" , "Pa"     , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    259       CALL histdef( kid, "sisflx", "Solar flx over ocean"   , "W/m2"   , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    260       CALL histdef( kid, "sinflx", "NonSolar flx over ocean", "W/m2"   , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    261       CALL histdef( kid, "snwpre", "Snow precipitation"     , "kg/m2/s", jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    262       CALL histdef( kid, "sisali", "Ice salinity"           , "PSU"    , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    263       CALL histdef( kid, "sivolu", "Ice volume"             , "m"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    264       CALL histdef( kid, "sidive", "Ice divergence"         , "10-8s-1", jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    265       CALL histdef( kid, "si_amp", "Melt pond fraction"     , "%"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    266       CALL histdef( kid, "si_vmp", "Melt pond volume"       ,  "m"     , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    267       ! 
    268       CALL histdef( kid, "sithicat", "Ice thickness"        , "m"      , jpi,jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) 
    269       CALL histdef( kid, "siconcat", "Ice concentration"    , "%"      , jpi,jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) 
    270       CALL histdef( kid, "sisalcat", "Ice salinity"         , ""       , jpi,jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) 
    271       CALL histdef( kid, "snthicat", "Snw thickness"        , "m"      , jpi,jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) 
     252      CALL histdef( kid, "sithic", "Ice thickness"          , "m"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt ) 
     253      CALL histdef( kid, "siconc", "Ice concentration"      , "%"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt ) 
     254      CALL histdef( kid, "sitemp", "Ice temperature"        , "C"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt ) 
     255      CALL histdef( kid, "sivelu", "i-Ice speed "           , "m/s"    , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt ) 
     256      CALL histdef( kid, "sivelv", "j-Ice speed "           , "m/s"    , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt )  
     257      CALL histdef( kid, "sistru", "i-Wind stress over ice" , "Pa"     , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt ) 
     258      CALL histdef( kid, "sistrv", "j-Wind stress over ice" , "Pa"     , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt )  
     259      CALL histdef( kid, "sisflx", "Solar flx over ocean"   , "W/m2"   , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt )  
     260      CALL histdef( kid, "sinflx", "NonSolar flx over ocean", "W/m2"   , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt ) 
     261      CALL histdef( kid, "snwpre", "Snow precipitation"     , "kg/m2/s", jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt )  
     262      CALL histdef( kid, "sisali", "Ice salinity"           , "PSU"    , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt )  
     263      CALL histdef( kid, "sivolu", "Ice volume"             , "m"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt )  
     264      CALL histdef( kid, "sidive", "Ice divergence"         , "10-8s-1", jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt )  
     265      CALL histdef( kid, "si_amp", "Melt pond fraction"     , "%"      , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt ) 
     266      CALL histdef( kid, "si_vmp", "Melt pond volume"       ,  "m"     , jpi,jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rn_Dt, rn_Dt ) 
     267      ! 
     268      CALL histdef( kid, "sithicat", "Ice thickness"        , "m" , jpi,jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rn_Dt, rn_Dt ) 
     269      CALL histdef( kid, "siconcat", "Ice concentration"    , "%" , jpi,jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rn_Dt, rn_Dt ) 
     270      CALL histdef( kid, "sisalcat", "Ice salinity"         , ""  , jpi,jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rn_Dt, rn_Dt ) 
     271      CALL histdef( kid, "snthicat", "Snw thickness"        , "m" , jpi,jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rn_Dt, rn_Dt ) 
    272272 
    273273      CALL histend( kid, snc4set )   ! end of the file definition 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/NST/agrif_oce_update.F90

    r9863 r9923  
    381381         END DO 
    382382 
    383          IF ( .NOT.( lk_agrif_fstep .AND. l_1st_euler ) ) THEN 
     383         IF ( .NOT.( lk_agrif_fstep .AND. l_1st_euler ) ) THEN       ! Add asselin part 
     384 
    384385!!gm         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
    385             ! Add asselin part 
    386386            DO jn = n1, n2-1 
    387387               DO jk = 1, jpk 
     
    389389                     DO ji = i1, i2 
    390390                        IF( tabres_child(ji,jj,jk,jn) /= 0. ) THEN 
    391                            tsb(ji,jj,jk,jn) = tsb(ji,jj,jk,jn) &  
    392                                  & + atfp * ( tabres_child(ji,jj,jk,jn) & 
    393                                  &          - tsn(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
     391                           tsb(ji,jj,jk,jn) = tsb(ji,jj,jk,jn)   &  
     392                              &             + rn_atfp * ( tabres_child(ji,jj,jk,jn) - tsn(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
    394393                        ENDIF 
    395394                     END DO 
     
    458457                           ztnu = tabres(ji,jj,jk,jn) 
    459458                           ztno = tsn(ji,jj,jk,jn) * e3t_a(ji,jj,jk) 
    460                            tsb(ji,jj,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    461                                      &        * tmask(ji,jj,jk) / e3t_b(ji,jj,jk) 
     459                           tsb(ji,jj,jk,jn) = ( ztb + rn_rn_atfp * ( ztnu - ztno) ) / e3t_b(ji,jj,jk) * tmask(ji,jj,jk) 
    462460                        ENDIF 
    463461                     END DO 
     
    568566         END DO 
    569567 
    570          DO jk=1,jpk 
    571             DO jj=j1,j2 
    572                DO ji=i1,i2 
     568         DO jk = 1, jpk 
     569            DO jj = j1, j2 
     570               DO ji = i1, i2 
    573571                  IF ( .NOT.( lk_agrif_fstep .AND. l_1st_euler) ) THEN    ! Add asselin part 
    574572!!gm                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN   ! Add asselin part 
    575                      ub(ji,jj,jk) = ub(ji,jj,jk) &  
    576                            & + atfp * ( tabres_child(ji,jj,jk) - un(ji,jj,jk) ) * umask(ji,jj,jk) 
     573                     ub(ji,jj,jk) = ub(ji,jj,jk) + rn_atfp * ( tabres_child(ji,jj,jk) - un(ji,jj,jk) ) * umask(ji,jj,jk) 
    577574                  ENDIF 
    578                   ! 
    579575                  un(ji,jj,jk) = tabres_child(ji,jj,jk) * umask(ji,jj,jk) 
    580576               END DO 
     
    615611                     zuno = un(ji,jj,jk) * e3u_a(ji,jj,jk) 
    616612                     zunu = tabres(ji,jj,jk,1) 
    617                      ub(ji,jj,jk) = ( zub + atfp * ( zunu - zuno) ) &       
    618                                     & * umask(ji,jj,jk) / e3u_b(ji,jj,jk) 
     613                     ub(ji,jj,jk) = ( zub + rn_atfp * ( zunu - zuno) ) / e3u_b(ji,jj,jk) * umask(ji,jj,jk) 
    619614                  ENDIF 
    620615                  ! 
    621                   un(ji,jj,jk) = tabres(ji,jj,jk,1) * umask(ji,jj,jk) / e3u_n(ji,jj,jk) 
     616                  un(ji,jj,jk) = tabres(ji,jj,jk,1) / e3u_n(ji,jj,jk) * umask(ji,jj,jk) 
    622617               END DO 
    623618            END DO 
     
    761756                  IF( .NOT.( lk_agrif_fstep .AND. l_1st_euler ) ) THEN  ! Add asselin part 
    762757!!gm                  IF( .NOT.(lk_agrif_fstep.AND.(neuler==0)) ) THEN  ! Add asselin part 
    763                      vb(ji,jj,jk) = vb(ji,jj,jk) &  
    764                            & + atfp * ( tabres_child(ji,jj,jk) - vn(ji,jj,jk) ) * vmask(ji,jj,jk) 
     758                     vb(ji,jj,jk) = vb(ji,jj,jk) + rn_atfp * ( tabres_child(ji,jj,jk) - vn(ji,jj,jk) ) * vmask(ji,jj,jk) 
    765759                  ENDIF 
    766760                  ! 
     
    807801                     zvno = vn(ji,jj,jk) * e3v_a(ji,jj,jk) 
    808802                     zvnu = tabres(ji,jj,jk,1) 
    809                      vb(ji,jj,jk) = ( zvb + atfp * ( zvnu - zvno) ) &       
    810                                     & * vmask(ji,jj,jk) / e3v_b(ji,jj,jk) 
     803                     vb(ji,jj,jk) = ( zvb + rn_atfp * ( zvnu - zvno) ) / e3v_b(ji,jj,jk) * vmask(ji,jj,jk) 
    811804                  ENDIF 
    812805                  ! 
    813                   vn(ji,jj,jk) = tabres(ji,jj,jk,1) * vmask(ji,jj,jk) / e3v_n(ji,jj,jk) 
     806                  vn(ji,jj,jk) = tabres(ji,jj,jk,1) / e3v_n(ji,jj,jk) * vmask(ji,jj,jk) 
    814807               END DO 
    815808            END DO 
     
    913906!!gm                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
    914907                     zcorr = (tabres(ji,jj) - un_b(ji,jj) * hu_a(ji,jj)) * r1_hu_b(ji,jj) 
    915                      ub_b(ji,jj) = ub_b(ji,jj) + atfp * zcorr * umask(ji,jj,1) 
     908                     ub_b(ji,jj) = ub_b(ji,jj) + rn_atfp * zcorr * umask(ji,jj,1) 
    916909                  END IF 
    917910               ENDIF     
     
    981974!!gm                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
    982975                     zcorr = (tabres(ji,jj) - vn_b(ji,jj) * hv_a(ji,jj)) * r1_hv_b(ji,jj) 
    983                      vb_b(ji,jj) = vb_b(ji,jj) + atfp * zcorr * vmask(ji,jj,1) 
     976                     vb_b(ji,jj) = vb_b(ji,jj) + rn_atfp * zcorr * vmask(ji,jj,1) 
    984977                  END IF 
    985978               ENDIF               
     
    10321025            DO jj=j1,j2 
    10331026               DO ji=i1,i2 
    1034                   sshb(ji,jj) =   sshb(ji,jj) & 
    1035                         & + atfp * ( tabres(ji,jj) - sshn(ji,jj) ) * tmask(ji,jj,1) 
     1027                  sshb(ji,jj) = sshb(ji,jj) + rn_atfp * ( tabres(ji,jj) - sshn(ji,jj) ) * tmask(ji,jj,1) 
    10361028               END DO 
    10371029            END DO 
     
    11261118         IF ( western_side ) THEN 
    11271119            DO jj=j1,j2 
    1128                zcor = rdt * r1_e1e2t(i1  ,jj) * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj))  
     1120               zcor = rn_Dt * r1_e1e2t(i1  ,jj) * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj))  
    11291121               sshn(i1  ,jj) = sshn(i1  ,jj) + zcor 
    1130                IF ( .NOT.( lk_agrif_fstep .AND. l_1st_euler ) )   sshb(i1  ,jj) = sshb(i1  ,jj) + atfp * zcor 
    1131 !!gm               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) sshb(i1  ,jj) = sshb(i1  ,jj) + atfp * zcor 
     1122               IF ( .NOT.( lk_agrif_fstep .AND. l_1st_euler ) )   sshb(i1  ,jj) = sshb(i1  ,jj) + rn_atfp * zcor 
     1123!!gm               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) sshb(i1  ,jj) = sshb(i1  ,jj) + rn_atfp * zcor 
    11321124            END DO 
    11331125         ENDIF 
    11341126         IF ( eastern_side ) THEN 
    11351127            DO jj=j1,j2 
    1136                zcor = - rdt * r1_e1e2t(i2+1,jj) * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj)) 
     1128               zcor = - rn_Dt * r1_e1e2t(i2+1,jj) * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj)) 
    11371129               sshn(i2+1,jj) = sshn(i2+1,jj) + zcor 
    1138                IF (.NOT.( lk_agrif_fstep .AND. l_1st_euler ) )   sshb(i2+1,jj) = sshb(i2+1,jj) + atfp * zcor 
    1139 !!gm               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) sshb(i2+1,jj) = sshb(i2+1,jj) + atfp * zcor 
     1130               IF (.NOT.( lk_agrif_fstep .AND. l_1st_euler ) )   sshb(i2+1,jj) = sshb(i2+1,jj) + rn_atfp * zcor 
     1131!!gm               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) sshb(i2+1,jj) = sshb(i2+1,jj) + rn_atfp * zcor 
    11401132            END DO 
    11411133         ENDIF 
     
    12181210         IF (southern_side) THEN 
    12191211            DO ji=i1,i2 
    1220                zcor = rdt * r1_e1e2t(ji,j1  ) * e1v(ji,j1  ) * (vb2_b(ji,j1)-tabres(ji,j1)) 
     1212               zcor = rn_Dt * r1_e1e2t(ji,j1  ) * e1v(ji,j1  ) * (vb2_b(ji,j1)-tabres(ji,j1)) 
    12211213               sshn(ji,j1  ) = sshn(ji,j1  ) + zcor 
    1222                IF ( .NOT.( lk_agrif_fstep .AND. l_euler ) )   sshb(ji,j1  ) = sshb(ji,j1) + atfp * zcor 
    1223 !!gm               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) sshb(ji,j1  ) = sshb(ji,j1) + atfp * zcor 
     1214               IF ( .NOT.( lk_agrif_fstep .AND. l_euler ) )   sshb(ji,j1  ) = sshb(ji,j1) + rn_atfp * zcor 
     1215!!gm               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) sshb(ji,j1  ) = sshb(ji,j1) + rn_atfp * zcor 
    12241216            END DO 
    12251217         ENDIF 
    12261218         IF (northern_side) THEN                
    12271219            DO ji=i1,i2 
    1228                zcor = - rdt * r1_e1e2t(ji,j2+1) * e1v(ji,j2  ) * (vb2_b(ji,j2)-tabres(ji,j2)) 
     1220               zcor = - rn_Dt * r1_e1e2t(ji,j2+1) * e1v(ji,j2  ) * (vb2_b(ji,j2)-tabres(ji,j2)) 
    12291221               sshn(ji,j2+1) = sshn(ji,j2+1) + zcor 
    1230                IF ( .NOT.( lk_agrif_fstep .AND. l_1st_euler ) )   sshb(ji,j2+1) = sshb(ji,j2+1) + atfp * zcor 
    1231 !!gm               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) sshb(ji,j2+1) = sshb(ji,j2+1) + atfp * zcor 
     1222               IF ( .NOT.( lk_agrif_fstep .AND. l_1st_euler ) )   sshb(ji,j2+1) = sshb(ji,j2+1) + rn_atfp * zcor 
     1223!!gm               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) sshb(ji,j2+1) = sshb(ji,j2+1) + rn_atfp * zcor 
    12321224            END DO 
    12331225         ENDIF 
     
    13811373               DO jj=j1,j2 
    13821374                  DO ji=i1,i2 
    1383                      e3t_b(ji,jj,jk) =  e3t_b(ji,jj,jk) & 
    1384                            & + atfp * ( ptab(ji,jj,jk) - e3t_n(ji,jj,jk) ) 
     1375                     e3t_b(ji,jj,jk) =  e3t_b(ji,jj,jk) + rn_atfp * ( ptab(ji,jj,jk) - e3t_n(ji,jj,jk) ) 
    13851376                  END DO 
    13861377               END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/NST/agrif_top_update.F90

    r9863 r9923  
    140140                        IF( tabres_child(ji,jj,jk,jn) .NE. 0. ) THEN 
    141141                           trb(ji,jj,jk,jn) = tsb(ji,jj,jk,jn) &  
    142                                  & + atfp * ( tabres_child(ji,jj,jk,jn) & 
    143                                  &          - trn(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
     142                                 & + rn_atfp * ( tabres_child(ji,jj,jk,jn) - trn(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
    144143                        ENDIF 
    145144                     END DO 
     
    209208                           ztnu = tabres(ji,jj,jk,jn) 
    210209                           ztno = trn(ji,jj,jk,jn) * e3t_a(ji,jj,jk) 
    211                            trb(ji,jj,jk,jn) = ( ztb + atfp * ( ztnu - ztno) )  &  
    212                                      &        * tmask(ji,jj,jk) / e3t_b(ji,jj,jk) 
     210                           trb(ji,jj,jk,jn) = ( ztb + rn_atfp * ( ztnu - ztno) ) / e3t_b(ji,jj,jk) * tmask(ji,jj,jk) 
    213211                        ENDIF 
    214212                     END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/NST/agrif_user.F90

    r9788 r9923  
    217217 
    218218      ! Check time steps            
    219       IF( NINT(Agrif_Rhot()) * NINT(rdt) .NE. Agrif_Parent(rdt) ) THEN 
    220          WRITE(cl_check1,*)  NINT(Agrif_Parent(rdt)) 
    221          WRITE(cl_check2,*)  NINT(rdt) 
    222          WRITE(cl_check3,*)  NINT(Agrif_Parent(rdt)/Agrif_Rhot()) 
     219      IF( NINT(Agrif_Rhot()) * NINT(rn_Dt) /= Agrif_Parent(rn_Dt) ) THEN 
     220         WRITE(cl_check1,*)  NINT(Agrif_Parent(rn_Dt)) 
     221         WRITE(cl_check2,*)  NINT(rn_Dt) 
     222         WRITE(cl_check3,*)  NINT(Agrif_Parent(rn_Dt)/Agrif_Rhot()) 
    223223         CALL ctl_stop( 'Incompatible time step between ocean grids',   & 
    224224               &               'parent grid value : '//cl_check1    ,   &  
     
    229229      ! Check run length 
    230230      IF( Agrif_IRhot() * (Agrif_Parent(nitend)- & 
    231             Agrif_Parent(nit000)+1) .NE. (nitend-nit000+1) ) THEN 
     231            Agrif_Parent(nit000)+1) /= (nitend-nit000+1) ) THEN 
    232232         WRITE(cl_check1,*)  (Agrif_Parent(nit000)-1)*Agrif_IRhot() + 1 
    233233         WRITE(cl_check2,*)   Agrif_Parent(nitend)   *Agrif_IRhot() 
     
    601601   IF( check_namelist ) THEN 
    602602      ! Check time steps 
    603       IF( NINT(Agrif_Rhot()) * NINT(rdt) .NE. Agrif_Parent(rdt) ) THEN 
    604          WRITE(cl_check1,*)  Agrif_Parent(rdt) 
    605          WRITE(cl_check2,*)  rdt 
    606          WRITE(cl_check3,*)  rdt*Agrif_Rhot() 
     603      IF( NINT(Agrif_Rhot()) * NINT(rn_Dt) .NE. Agrif_Parent(rn_Dt) ) THEN 
     604         WRITE(cl_check1,*)  Agrif_Parent(rn_Dt) 
     605         WRITE(cl_check2,*)  rn_Dt 
     606         WRITE(cl_check3,*)  rn_Dt*Agrif_Rhot() 
    607607         CALL ctl_stop( 'incompatible time step between grids',   & 
    608608               &               'parent grid value : '//cl_check1    ,   &  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ASM/asminc.F90

    r9863 r9923  
    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 
     
    651651            ! 
    652652            it = kt - nit000 + 1 
    653             zincwgt = wgtiau(it) / rdt   ! IAU weight for the current time step 
     653            zincwgt = wgtiau(it) / rn_Dt   ! IAU weight for the current time step 
    654654            ! 
    655655            IF(lwp) THEN 
     
    721721            ! 
    722722            it = kt - nit000 + 1 
    723             zincwgt = wgtiau(it) / rdt   ! IAU weight for the current time step 
     723            zincwgt = wgtiau(it) / rn_Dt   ! IAU weight for the current time step 
    724724            ! 
    725725            IF(lwp) THEN 
     
    841841            it = kt - nit000 + 1 
    842842            zincwgt = wgtiau(it)      ! IAU weight for the current time step  
    843             ! note this is not a tendency so should not be divided by rdt (as with the tracer and other increments) 
     843            ! note this is not a tendency so should not be divided by rn_Dt (as with the tracer and other increments) 
    844844            ! 
    845845            IF(lwp) THEN 
     
    876876#if defined key_cice && defined key_asminc 
    877877            ! Sea-ice : CICE case. Pass ice increment tendency into CICE 
    878             ndaice_da(:,:) = seaice_bkginc(:,:) * zincwgt / rdt 
     878            ndaice_da(:,:) = seaice_bkginc(:,:) * zincwgt / rn_Dt 
    879879#endif 
    880880            ! 
     
    926926#if defined key_cice && defined key_asminc 
    927927            ! Sea-ice : CICE case. Pass ice increment tendency into CICE 
    928            ndaice_da(:,:) = seaice_bkginc(:,:) / rdt 
     928           ndaice_da(:,:) = seaice_bkginc(:,:) / rn_Dt 
    929929#endif 
    930930            IF ( .NOT. PRESENT(kindic) ) THEN 
     
    959959!           ! fwf : ice formation and melting 
    960960! 
    961 !                 zfons = ( -nfresh_da(ji,jj)*soce + nfsalt_da(ji,jj) )*rdt 
     961!                 zfons = ( -nfresh_da(ji,jj)*soce + nfsalt_da(ji,jj) ) * rn_Dt 
    962962! 
    963963!           ! change salinity down to mixed layer depth 
     
    10081008!      !!                                                     ! E-P (kg m-2 s-2) 
    10091009!      !            emp(ji,jj) = emp(ji,jj) + zpmess          ! E-P (kg m-2 s-2) 
    1010 !               ENDDO !ji 
    1011 !             ENDDO !jj! 
     1010!               END DO !ji 
     1011!             END DO !jj! 
    10121012! 
    10131013!            ENDIF !ln_seaicebal 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/BDY/bdyice.F90

    r9657 r9923  
    124124 
    125125            ! Then, a) transfer the snow excess into the ice (different from icethd_dh) 
    126             zdh = MAX( 0._wp, ( rhosn * h_s(ji,jj,jl) + ( rhoic - rau0 ) * h_i(ji,jj,jl) ) * r1_rau0 ) 
     126            zdh = MAX( 0._wp, ( rhosn * h_s(ji,jj,jl) + ( rhoic - rho0 ) * h_i(ji,jj,jl) ) * r1_rho0 ) 
    127127            ! Or, b) transfer all the snow into ice (if incoming ice is likely to melt as it comes into a warmer environment) 
    128128            !zdh = MAX( 0._wp, h_s(ji,jj,jl) * rhosn / rhoic ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/BDY/bdylib.F90

    r9598 r9923  
    44   !! Unstructured Open Boundary Cond. :  Library module of generic boundary algorithms. 
    55   !!====================================================================== 
    6    !! History :  3.6  !  2013     (D. Storkey) original code 
    7    !!            4.0  !  2014     (T. Lovato) Generalize OBC structure 
     6   !! History :  3.6  !  2013     (D. Storkey)  original code 
     7   !!            4.0  !  2014     (T. Lovato)  Generalize OBC structure 
    88   !!---------------------------------------------------------------------- 
     9    
    910   !!---------------------------------------------------------------------- 
    10    !!   bdy_orlanski_2d 
    11    !!   bdy_orlanski_3d 
     11   !!  bdy_frs        : Apply the Flow Relaxation Scheme (tracers) 
     12   !!  bdy_spe        : Apply a specified value (tracers) 
     13   !!  bdy_orl        : Apply Orlanski radiation (tracers) 
     14   !!  bdy_orlanski_2d:   2D      -        -         - 
     15   !!  bdy_orlanski_3d:   3D      -        -         - 
     16   !!  bdy_nmn        : Duplicate the value at open boundaries (zero gradient) 
    1217   !!---------------------------------------------------------------------- 
    1318   USE oce            ! ocean dynamics and tracers  
     
    2227   PRIVATE 
    2328 
    24    PUBLIC   bdy_frs, bdy_spe, bdy_nmn, bdy_orl 
    25    PUBLIC   bdy_orlanski_2d 
    26    PUBLIC   bdy_orlanski_3d 
     29   PUBLIC   bdy_frs, bdy_spe, bdy_nmn 
     30   PUBLIC   bdy_orl, bdy_orlanski_2d, bdy_orlanski_3d 
    2731 
    2832   !!---------------------------------------------------------------------- 
     
    230234         ! Note no rdt factor in expression for zdt because it cancels in the expressions for  
    231235         ! zrx and zry. 
    232          zdt = phia(iibm1,ijbm1) - phib(iibm1,ijbm1) 
     236         zdt =     phia(iibm1,ijbm1) - phib(iibm1,ijbm1) 
    233237         zdx = ( ( phia(iibm1,ijbm1) - phia(iibm2,ijbm2) ) / zex2 ) * zmask_x  
    234238         zdy_1 = ( ( phib(iibm1   ,ijbm1   ) - phib(iibm1jm1,ijbm1jm1) ) / zey1 ) * zmask_y1     
     
    247251         zout = sign( 1., zrx ) 
    248252         zout = 0.5*( zout + abs(zout) ) 
    249          zwgt = 2.*rdt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
     253         zwgt = rDt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
    250254         ! only apply radiation on outflow points  
    251255         if( ll_npo ) then     !! NPO version !! 
     
    385389            ! Centred derivative is calculated as average of "left" and "right" derivatives for  
    386390            ! this reason.  
    387             zdt = phia(iibm1,ijbm1,jk) - phib(iibm1,ijbm1,jk) 
     391            zdt =     phia(iibm1,ijbm1,jk) - phib(iibm1,ijbm1,jk) 
    388392            zdx = ( ( phia(iibm1,ijbm1,jk) - phia(iibm2,ijbm2,jk) ) / zex2 ) * zmask_x                   
    389393            zdy_1 = ( ( phib(iibm1   ,ijbm1   ,jk) - phib(iibm1jm1,ijbm1jm1,jk) ) / zey1 ) * zmask_y1   
     
    403407            zout = sign( 1., zrx ) 
    404408            zout = 0.5*( zout + abs(zout) ) 
    405             zwgt = 2.*rdt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
     409            zwgt = rDt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
    406410            ! only apply radiation on outflow points  
    407411            if( ll_npo ) then     !! NPO version !! 
     
    426430      ! 
    427431   END SUBROUTINE bdy_orlanski_3d 
     432 
    428433 
    429434   SUBROUTINE bdy_nmn( idx, igrd, phia ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/BDY/bdytides.F90

    r9598 r9923  
    295295      !!---------------------------------------------------------------------- 
    296296      ! 
    297       ilen0(1) =  SIZE(td%ssh(:,1,1)) 
    298       ilen0(2) =  SIZE(td%u(:,1,1)) 
    299       ilen0(3) =  SIZE(td%v(:,1,1)) 
     297      ilen0(1) =  SIZE( td%ssh(:,1,1) ) 
     298      ilen0(2) =  SIZE( td%u  (:,1,1) ) 
     299      ilen0(3) =  SIZE( td%v  (:,1,1) ) 
    300300 
    301301      zflag=1 
    302302      IF ( PRESENT(jit) ) THEN 
    303         IF ( jit /= 1 ) zflag=0 
     303        IF ( jit /= 1 )   zflag=0 
    304304      ENDIF 
    305305 
    306       IF ( (nsec_day == NINT(0.5_wp * rdt) .OR. kt==nit000) .AND. zflag==1 ) THEN 
     306      IF ( ( nsec_day == NINT( 0.5_wp * rn_Dt )  .OR.  kt == nit000 ) .AND. zflag==1 ) THEN 
    307307        ! 
    308         kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt 
     308        kt_tide = kt - (nsec_day - 0.5_wp * rn_Dt) / rn_Dt 
    309309        ! 
    310310        IF(lwp) THEN 
    311311           WRITE(numout,*) 
    312            WRITE(numout,*) 'bdytide_update : (re)Initialization of the tidal bdy forcing at kt=',kt 
     312           WRITE(numout,*) 'bdytide_update : (re)Initialization of the tidal bdy forcing at kt=', kt 
    313313           WRITE(numout,*) '~~~~~~~~~~~~~~ ' 
    314314        ENDIF 
     
    325325          
    326326      IF( PRESENT(jit) ) THEN   
    327          z_arg = ((kt-kt_tide) * rdt + (jit+0.5_wp*(time_add-1)) * rdt / REAL(nn_baro,wp) ) 
     327         z_arg = ((kt-kt_tide) * rn_Dt + (jit+0.5_wp*(time_add-1)) * rn_Dt / REAL(nn_e,wp) ) 
    328328      ELSE                               
    329          z_arg = ((kt-kt_tide)+time_add) * rdt 
     329         z_arg = ((kt-kt_tide)+time_add) * rn_Dt 
    330330      ENDIF 
    331331 
    332332      ! Linear ramp on tidal component at open boundaries  
    333333      zramp = 1._wp 
    334       IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg + (kt_tide-nit000)*rdt)/(rdttideramp*rday),0._wp),1._wp) 
     334      IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg + (kt_tide-nit000)*rn_Dt)/(rn_ramp*rday),0._wp),1._wp) 
    335335 
    336336      DO itide = 1, nb_harmo 
     
    392392      ! Absolute time from model initialization:    
    393393      IF( PRESENT(kit) ) THEN   
    394          z_arg = ( kt + (kit+time_add-1) / REAL(nn_baro,wp) ) * rdt 
     394         z_arg = ( kt + (kit+time_add-1) / REAL(nn_e,wp) ) * rn_Dt 
    395395      ELSE                               
    396          z_arg = ( kt + time_add ) * rdt 
     396         z_arg = ( kt + time_add ) * rn_Dt 
    397397      ENDIF 
    398398 
    399399      ! Linear ramp on tidal component at open boundaries  
    400400      zramp = 1. 
    401       IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - nit000*rdt)/(rdttideramp*rday),0.),1.) 
     401      IF ( ln_tide_ramp )   zramp = MIN(  MAX( 0. , (z_arg - nit000*rn_Dt)/(rn_ramp*rday) ) , 1.  ) 
    402402 
    403403      DO ib_bdy = 1,nb_bdy 
     
    414414            ! We refresh nodal factors every day below 
    415415            ! This should be done somewhere else 
    416             IF ( ( nsec_day == NINT(0.5_wp * rdt) .OR. kt==nit000 ) .AND. lk_first_btstp ) THEN 
    417                ! 
    418                kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt 
     416            IF ( ( nsec_day == NINT(0.5_wp * rn_Dt) .OR. kt==nit000 ) .AND. lk_first_btstp ) THEN 
     417               ! 
     418               kt_tide = kt - (nsec_day - 0.5_wp * rn_Dt) / rn_Dt 
    419419               ! 
    420420               IF(lwp) THEN 
     
    428428               ! 
    429429            ENDIF 
    430             zoff = -kt_tide * rdt ! time offset relative to nodal factor computation time 
     430            zoff = -kt_tide * rn_Dt    ! time offset relative to nodal factor computation time 
    431431            ! 
    432432            ! If time splitting, initialize arrays from slow varying open boundary data: 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/BDY/bdyvol.F90

    r9598 r9923  
    8484      ! ----------------------------------------------------------------------- 
    8585!!gm replace these lines : 
    86       z_cflxemp = SUM ( ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) * bdytmask(:,:) * e1e2t(:,:) ) / rau0 
     86      z_cflxemp = SUM ( ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) * bdytmask(:,:) * e1e2t(:,:) ) / rho0 
    8787      IF( lk_mpp )   CALL mpp_sum( z_cflxemp )     ! sum over the global domain 
    8888!!gm   by : 
    89 !!gm      z_cflxemp = glob_sum(  ( emp(:,:)-rnf(:,:)+fwfisf(:,:) ) * bdytmask(:,:) * e1e2t(:,:)  ) / rau0 
     89!!gm      z_cflxemp = glob_sum(  ( emp(:,:)-rnf(:,:)+fwfisf(:,:) ) * bdytmask(:,:) * e1e2t(:,:)  ) / rho0 
    9090!!gm 
    9191 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/dia25h.F90

    r9598 r9923  
    139139      ! ----------------- 
    140140      ! Define frequency of summing to create 25 h mean 
    141       IF( MOD( 3600,INT(rdt) ) == 0 ) THEN 
    142          i_steps = 3600/INT(rdt) 
     141      IF( MOD( 3600 , INT(rn_Dt) ) == 0 ) THEN 
     142         i_steps = 3600 / INT( rn_Dt ) 
    143143      ELSE 
    144          CALL ctl_stop('STOP', 'dia_wri_tide: timestep must give MOD(3600,rdt) = 0 otherwise no hourly values are possible') 
     144         CALL ctl_stop('STOP', 'dia_wri_tide: timestep must give MOD(3600,rn_Dt) = 0 otherwise no hourly values are possible') 
    145145      ENDIF 
    146146 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/diaar5.F90

    r9598 r9923  
    161161       
    162162         !                                         ! ocean bottom pressure 
    163          zztmp = rau0 * grav * 1.e-4_wp               ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 
     163         zztmp = rho0 * grav * 1.e-4_wp               ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 
    164164         zbotpres(:,:) = zztmp * ( zbotpres(:,:) + sshn(:,:) + thick0(:,:) ) 
    165165         CALL iom_put( 'botpres', zbotpres ) 
     
    198198         END IF 
    199199         ! 
    200          zmass = rau0 * ( zarho + zvol )                 ! total mass of liquid seawater 
     200         zmass = rho0 * ( zarho + zvol )                 ! total mass of liquid seawater 
    201201         ztemp = ztemp / zvol                            ! potential temperature in liquid seawater 
    202202         zsal  = zsal  / zvol                            ! Salinity of liquid seawater 
     
    239239               DO ji = 1, jpi 
    240240                  DO jj = 1, jpj 
    241                      zpe(ji,jj) = zpe(ji,jj) + avt(ji, jj, jk) * MIN(0._wp,rn2(ji, jj, jk)) * rau0 * e3w_n(ji, jj, jk) 
     241                     zpe(ji,jj) = zpe(ji,jj) + avt(ji, jj, jk) * MIN(0._wp,rn2(ji, jj, jk)) * rho0 * e3w_n(ji, jj, jk) 
    242242                  END DO 
    243243               END DO 
     
    287287       CALL lbc_lnk( z2d, 'U', -1. ) 
    288288       IF( cptr == 'adv' ) THEN 
    289           IF( ktra == jp_tem ) CALL iom_put( "uadv_heattr" , rau0_rcp * z2d )  ! advective heat transport in i-direction 
    290           IF( ktra == jp_sal ) CALL iom_put( "uadv_salttr" , rau0     * z2d )  ! advective salt transport in i-direction 
     289          IF( ktra == jp_tem ) CALL iom_put( "uadv_heattr" , rho0_rcp * z2d )  ! advective heat transport in i-direction 
     290          IF( ktra == jp_sal ) CALL iom_put( "uadv_salttr" , rho0     * z2d )  ! advective salt transport in i-direction 
    291291       ENDIF 
    292292       IF( cptr == 'ldf' ) THEN 
    293           IF( ktra == jp_tem ) CALL iom_put( "udiff_heattr" , rau0_rcp * z2d ) ! diffusive heat transport in i-direction 
    294           IF( ktra == jp_sal ) CALL iom_put( "udiff_salttr" , rau0     * z2d ) ! diffusive salt transport in i-direction 
     293          IF( ktra == jp_tem ) CALL iom_put( "udiff_heattr" , rho0_rcp * z2d ) ! diffusive heat transport in i-direction 
     294          IF( ktra == jp_sal ) CALL iom_put( "udiff_salttr" , rho0     * z2d ) ! diffusive salt transport in i-direction 
    295295       ENDIF 
    296296       ! 
     
    305305       CALL lbc_lnk( z2d, 'V', -1. ) 
    306306       IF( cptr == 'adv' ) THEN 
    307           IF( ktra == jp_tem ) CALL iom_put( "vadv_heattr" , rau0_rcp * z2d )  ! advective heat transport in j-direction 
    308           IF( ktra == jp_sal ) CALL iom_put( "vadv_salttr" , rau0     * z2d )  ! advective salt transport in j-direction 
     307          IF( ktra == jp_tem ) CALL iom_put( "vadv_heattr" , rho0_rcp * z2d )  ! advective heat transport in j-direction 
     308          IF( ktra == jp_sal ) CALL iom_put( "vadv_salttr" , rho0     * z2d )  ! advective salt transport in j-direction 
    309309       ENDIF 
    310310       IF( cptr == 'ldf' ) THEN 
    311           IF( ktra == jp_tem ) CALL iom_put( "vdiff_heattr" , rau0_rcp * z2d ) ! diffusive heat transport in j-direction 
    312           IF( ktra == jp_sal ) CALL iom_put( "vdiff_salttr" , rau0     * z2d ) ! diffusive salt transport in j-direction 
     311          IF( ktra == jp_tem ) CALL iom_put( "vdiff_heattr" , rho0_rcp * z2d ) ! diffusive heat transport in j-direction 
     312          IF( ktra == jp_sal ) CALL iom_put( "vdiff_salttr" , rho0     * z2d ) ! diffusive salt transport in j-direction 
    313313       ENDIF 
    314314           
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/diacfl.F90

    r9863 r9923  
    6666         DO jj = 1, jpj 
    6767            DO ji = 1, fs_jpim1   ! vector opt. 
    68                zCu_cfl(ji,jj,jk) = ABS( un(ji,jj,jk) ) * r2dt / e1u  (ji,jj)      ! for i-direction 
    69                zCv_cfl(ji,jj,jk) = ABS( vn(ji,jj,jk) ) * r2dt / e2v  (ji,jj)      ! for j-direction 
    70                zCw_cfl(ji,jj,jk) = ABS( wn(ji,jj,jk) ) * r2dt / e3w_n(ji,jj,jk)   ! for k-direction 
     68               zCu_cfl(ji,jj,jk) = ABS( un(ji,jj,jk) ) * rDt / e1u  (ji,jj)      ! for i-direction 
     69               zCv_cfl(ji,jj,jk) = ABS( vn(ji,jj,jk) ) * rDt / e2v  (ji,jj)      ! for j-direction 
     70               zCw_cfl(ji,jj,jk) = ABS( wn(ji,jj,jk) ) * rDt / e3w_n(ji,jj,jk)   ! for k-direction 
    7171            END DO 
    7272         END DO          
     
    115115         WRITE(numcfl,*) '******************************************' 
    116116         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) 
    117          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCu_max 
     117         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', rDt/rCu_max 
    118118         WRITE(numcfl,*) '******************************************' 
    119119         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) 
    120          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCv_max 
     120         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', rDt/rCv_max 
    121121         WRITE(numcfl,*) '******************************************' 
    122122         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) 
    123          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCw_max 
     123         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', rDt/rCw_max 
    124124         CLOSE( numcfl )  
    125125         ! 
     
    128128         WRITE(numout,*) 'dia_cfl : Maximum Courant number information for the run ' 
    129129         WRITE(numout,*) '~~~~~~~' 
    130          WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', r2dt/rCu_max 
    131          WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', r2dt/rCv_max 
    132          WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', r2dt/rCw_max 
     130         WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', rDt/rCu_max 
     131         WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', rDt/rCv_max 
     132         WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', rDt/rCw_max 
    133133      ENDIF 
    134134      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/diadct.F90

    r9598 r9923  
    679679                  zsn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )  
    680680                  zrhop = interp(k%I,k%J,jk,'V',rhop)  
    681                   zrhoi = interp(k%I,k%J,jk,'V',rhd*rau0+rau0)  
     681                  zrhoi = interp(k%I,k%J,jk,'V',rhd*rho0+rho0)  
    682682                  zsshn =  0.5*( sshn(k%I,k%J) + sshn(k%I,k%J+1)    ) * vmask(k%I,k%J,1)  
    683683               CASE(2,3)  
     
    685685                  zsn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )  
    686686                  zrhop = interp(k%I,k%J,jk,'U',rhop)  
    687                   zrhoi = interp(k%I,k%J,jk,'U',rhd*rau0+rau0)  
     687                  zrhoi = interp(k%I,k%J,jk,'U',rhd*rho0+rho0)  
    688688                  zsshn =  0.5*( sshn(k%I,k%J) + sshn(k%I+1,k%J)    ) * umask(k%I,k%J,1)   
    689689               END SELECT  
     
    851851                 zsn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )  
    852852                 zrhop = interp(k%I,k%J,jk,'V',rhop)  
    853                  zrhoi = interp(k%I,k%J,jk,'V',rhd*rau0+rau0)  
     853                 zrhoi = interp(k%I,k%J,jk,'V',rhd*rho0+rho0)  
    854854 
    855855              CASE(2,3)  
     
    857857                 zsn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )  
    858858                 zrhop = interp(k%I,k%J,jk,'U',rhop)  
    859                  zrhoi = interp(k%I,k%J,jk,'U',rhd*rau0+rau0)  
     859                 zrhoi = interp(k%I,k%J,jk,'U',rhd*rho0+rho0)  
    860860                 zsshn =  0.5*( sshn(k%I,k%J)    + sshn(k%I+1,k%J)    ) * umask(k%I,k%J,1)   
    861861              END SELECT  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/diaharm.F90

    r9598 r9923  
    181181      IF( kt >= nit000_han .AND. kt <= nitend_han .AND. MOD(kt,nstep_han) == 0 ) THEN 
    182182         ! 
    183          ztime = (kt-nit000+1) * rdt  
     183         ztime = ( kt - nit000+1 ) * rn_Dt  
    184184         ! 
    185185         nhc = 0 
     
    231231      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 
    232232 
    233       ztime_ini = nit000_han*rdt                 ! Initial time in seconds at the beginning of analysis 
    234       ztime_end = nitend_han*rdt                 ! Final time in seconds at the end of analysis 
     233      ztime_ini = nit000_han*rn_Dt                 ! Initial time in seconds at the beginning of analysis 
     234      ztime_end = nitend_han*rn_Dt                 ! Final time in seconds at the end of analysis 
    235235      nhan = (nitend_han-nit000_han+1)/nstep_han ! Number of dumps used for analysis 
    236236 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/diahsb.F90

    r9598 r9923  
    9191      ! 1 - Trends due to forcing ! 
    9292      ! ------------------------- ! 
    93       z_frc_trd_v = r1_rau0 * glob_sum( - ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) * surf(:,:) )   ! volume fluxes 
     93      z_frc_trd_v = r1_rho0 * glob_sum( - ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) * surf(:,:) )   ! volume fluxes 
    9494      z_frc_trd_t =           glob_sum( sbc_tsc(:,:,jp_tem) * surf(:,:) )                       ! heat fluxes 
    9595      z_frc_trd_s =           glob_sum( sbc_tsc(:,:,jp_sal) * surf(:,:) )                       ! salt fluxes 
     
    100100      IF( ln_isf    )   z_frc_trd_t = z_frc_trd_t + glob_sum( risf_tsc(:,:,jp_tem) * surf(:,:) ) 
    101101      !                    ! Add penetrative solar radiation 
    102       IF( ln_traqsr )   z_frc_trd_t = z_frc_trd_t + r1_rau0_rcp * glob_sum( qsr     (:,:) * surf(:,:) ) 
     102      IF( ln_traqsr )   z_frc_trd_t = z_frc_trd_t + r1_rho0_rcp * glob_sum( qsr     (:,:) * surf(:,:) ) 
    103103      !                    ! Add geothermal heat flux 
    104104      IF( ln_trabbc )   z_frc_trd_t = z_frc_trd_t +               glob_sum( qgh_trd0(:,:) * surf(:,:) ) 
     
    120120      ENDIF 
    121121 
    122       frc_v = frc_v + z_frc_trd_v * rdt 
    123       frc_t = frc_t + z_frc_trd_t * rdt 
    124       frc_s = frc_s + z_frc_trd_s * rdt 
     122      frc_v = frc_v + z_frc_trd_v * rn_Dt 
     123      frc_t = frc_t + z_frc_trd_t * rn_Dt 
     124      frc_s = frc_s + z_frc_trd_s * rn_Dt 
    125125      !                                          ! Advection flux through fixed surface (z=0) 
    126126      IF( ln_linssh ) THEN 
    127          frc_wn_t = frc_wn_t + z_wn_trd_t * rdt 
    128          frc_wn_s = frc_wn_s + z_wn_trd_s * rdt 
     127         frc_wn_t = frc_wn_t + z_wn_trd_t * rn_Dt 
     128         frc_wn_s = frc_wn_s + z_wn_trd_s * rn_Dt 
    129129      ENDIF 
    130130 
     
    196196 
    197197      CALL iom_put(   'bgfrcvol' , frc_v    * 1.e-9    )              ! vol - surface forcing (km3)  
    198       CALL iom_put(   'bgfrctem' , frc_t    * rau0 * rcp * 1.e-20 )   ! hc  - surface forcing (1.e20 J)  
    199       CALL iom_put(   'bgfrchfx' , frc_t    * rau0 * rcp /  &         ! hc  - surface forcing (W/m2)  
    200          &                       ( surf_tot * kt * rdt )        ) 
     198      CALL iom_put(   'bgfrctem' , frc_t    * rho0_rcp * 1.e-20 )     ! hc  - surface forcing (1.e20 J)  
     199      CALL iom_put(   'bgfrchfx' , frc_t    * rho0_rcp /  &           ! hc  - surface forcing (W/m2)  
     200         &                         ( surf_tot * kt * rn_Dt )    ) 
    201201      CALL iom_put(   'bgfrcsal' , frc_s    * 1.e-9    )              ! sc  - surface forcing (psu*km3)  
    202202 
     
    204204         CALL iom_put( 'bgtemper' , zdiff_hc / zvol_tot )              ! Temperature drift     (C)  
    205205         CALL iom_put( 'bgsaline' , zdiff_sc / zvol_tot )              ! Salinity    drift     (PSU) 
    206          CALL iom_put( 'bgheatco' , zdiff_hc * 1.e-20 * rau0 * rcp )   ! Heat content drift    (1.e20 J)  
    207          CALL iom_put( 'bgheatfx' , zdiff_hc * rau0 * rcp /  &         ! Heat flux drift       (W/m2)  
    208             &                       ( surf_tot * kt * rdt )        ) 
     206         CALL iom_put( 'bgheatco' , zdiff_hc * 1.e-20 * rho0_rcp )     ! Heat content drift    (1.e20 J)  
     207         CALL iom_put( 'bgheatfx' , zdiff_hc * rho0_rcp /  &           ! Heat flux drift       (W/m2)  
     208            &                       ( surf_tot * kt * rn_Dt )    ) 
    209209         CALL iom_put( 'bgsaltco' , zdiff_sc * 1.e-9    )              ! Salt content drift    (psu*km3) 
    210210         CALL iom_put( 'bgvolssh' , zdiff_v1 * 1.e-9    )              ! volume ssh drift      (km3)   
     
    224224         CALL iom_put( 'bgtemper' , zdiff_hc1 / zvol_tot)              ! Heat content drift    (C)  
    225225         CALL iom_put( 'bgsaline' , zdiff_sc1 / zvol_tot)              ! Salt content drift    (PSU) 
    226          CALL iom_put( 'bgheatco' , zdiff_hc1 * 1.e-20 * rau0 * rcp )  ! Heat content drift    (1.e20 J)  
    227          CALL iom_put( 'bgheatfx' , zdiff_hc1 * rau0 * rcp /  &        ! Heat flux drift       (W/m2)  
    228             &                       ( surf_tot * kt * rdt )         ) 
     226         CALL iom_put( 'bgheatco' , zdiff_hc1 * 1.e-20 * rho0_rcp )    ! Heat content drift    (1.e20 J)  
     227         CALL iom_put( 'bgheatfx' , zdiff_hc1 * rho0_rcp /  &          ! Heat flux drift       (W/m2)  
     228            &                       ( surf_tot * kt * rn_Dt )     ) 
    229229         CALL iom_put( 'bgsaltco' , zdiff_sc1 * 1.e-9    )             ! Salt content drift    (psu*km3) 
    230230         CALL iom_put( 'bgvolssh' , zdiff_v1 * 1.e-9    )              ! volume ssh drift      (km3)   
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/diahth.F90

    r9598 r9923  
    8989      REAL(wp)                         ::   zrho1 = 0.01_wp       ! density     criterion for mixed layer depth 
    9090      REAL(wp)                         ::   ztem2 = 0.2_wp        ! temperature criterion for mixed layer depth 
    91       REAL(wp)                         ::   zthick_0, zcoef       ! temporary scalars 
    92       REAL(wp)                         ::   zztmp, zzdep          ! temporary scalars inside do loop 
    93       REAL(wp)                         ::   zu, zv, zw, zut, zvt  ! temporary workspace 
     91      REAL(wp)                         ::   zthick_0              ! local scalars 
     92      REAL(wp)                         ::   zztmp, zzdep          ! local scalars inside do loop 
     93      REAL(wp)                         ::   zu, zv, zw, zut, zvt  ! local workspace 
    9494      REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   zabs2      ! MLD: abs( tn - tn(10m) ) = ztem2  
    9595      REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ztm2       ! Top of thermocline: tn = tn(10m) - ztem2      
     
    328328      END DO 
    329329      ! from temperature to heat contain 
    330       zcoef = rau0 * rcp 
    331       htc3(:,:) = zcoef * htc3(:,:) 
     330      htc3(:,:) = rho0_rcp * htc3(:,:) 
    332331      CALL iom_put( "hc300", htc3 )      ! first 300m heat content 
    333332      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/dianam.F90

    r9598 r9923  
    7171      ENDIF 
    7272 
    73       IF( llfsec .OR. kfreq < 0 ) THEN   ;   inbsec = kfreq                       ! output frequency already in seconds 
    74       ELSE                               ;   inbsec = kfreq * NINT( rdt )   ! from time-step to seconds 
     73      IF( llfsec .OR. kfreq < 0 ) THEN   ;   inbsec = kfreq                    ! output frequency already in 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/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/diaptr.F90

    r9598 r9923  
    5252 
    5353   REAL(wp) ::   rc_sv    = 1.e-6_wp   ! conversion from m3/s to Sverdrup 
    54    REAL(wp) ::   rc_pwatt = 1.e-15_wp  ! conversion from W    to PW (further x rau0 x Cp) 
     54   REAL(wp) ::   rc_pwatt = 1.e-15_wp  ! conversion from W    to PW (further x rho0 x Cp) 
    5555   REAL(wp) ::   rc_ggram = 1.e-6_wp   ! conversion from g    to Pg 
    5656 
     
    424424         IF( dia_ptr_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ptr_init : unable to allocate arrays' ) 
    425425 
    426          rc_pwatt = rc_pwatt * rau0_rcp          ! conversion from K.s-1 to PetaWatt 
     426         rc_pwatt = rc_pwatt * rho0_rcp          ! conversion from K.s-1 to PetaWatt 
    427427 
    428428         IF( lk_mpp )   CALL mpp_ini_znl( numout )     ! Define MPI communicator for zonal sum 
     
    448448         ! Initialise arrays to zero because diatpr is called before they are first calculated 
    449449         ! Note that this means diagnostics will not be exactly correct when model run is restarted. 
    450          htr_adv(:,:) = 0._wp  ;  str_adv(:,:) =  0._wp  
    451          htr_ldf(:,:) = 0._wp  ;  str_ldf(:,:) =  0._wp  
    452          htr_eiv(:,:) = 0._wp  ;  str_eiv(:,:) =  0._wp  
     450         htr_adv(:,:) = 0._wp  ;   str_adv(:,:) =  0._wp  
     451         htr_ldf(:,:) = 0._wp  ;   str_ldf(:,:) =  0._wp  
     452         htr_eiv(:,:) = 0._wp  ;   str_eiv(:,:) =  0._wp  
    453453         htr_ove(:,:) = 0._wp  ;   str_ove(:,:) =  0._wp 
    454454         htr_btr(:,:) = 0._wp  ;   str_btr(:,:) =  0._wp 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIA/diawri.F90

    r9652 r9923  
    169169 
    170170      IF ( iom_use("taubot") ) THEN                ! bottom stress 
    171          zztmp = rau0 * 0.25 
     171         zztmp = rho0 * 0.25 
    172172         z2d(:,:) = 0._wp 
    173173         DO jj = 2, jpjm1 
     
    212212      IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN   ! vertical mass transport & its square value 
    213213         ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 
    214          z2d(:,:) = rau0 * e1e2t(:,:) 
     214         z2d(:,:) = rho0 * e1e2t(:,:) 
    215215         DO jk = 1, jpk 
    216216            z3d(:,:,jk) = wn(:,:,jk) * z2d(:,:) 
     
    253253            END DO 
    254254         END DO 
    255          CALL iom_put( "heatc", rau0_rcp * z2d )   ! vertically integrated heat content (J/m2) 
     255         CALL iom_put( "heatc", rho0_rcp * z2d )   ! vertically integrated heat content (J/m2) 
    256256      ENDIF 
    257257 
     
    265265            END DO 
    266266         END DO 
    267          CALL iom_put( "saltc", rau0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
     267         CALL iom_put( "saltc", rho0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
    268268      ENDIF 
    269269      ! 
     
    291291         z2d(:,:) = 0.e0 
    292292         DO jk = 1, jpkm1 
    293             z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * e3u_n(:,:,jk) * umask(:,:,jk) 
     293            z3d(:,:,jk) = rho0 * un(:,:,jk) * e2u(:,:) * e3u_n(:,:,jk) * umask(:,:,jk) 
    294294            z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 
    295295         END DO 
     
    328328         z3d(:,:,jpk) = 0.e0 
    329329         DO jk = 1, jpkm1 
    330             z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * e3v_n(:,:,jk) * vmask(:,:,jk) 
     330            z3d(:,:,jk) = rho0 * vn(:,:,jk) * e1v(:,:) * e3v_n(:,:,jk) * vmask(:,:,jk) 
    331331         END DO 
    332332         CALL iom_put( "v_masstr", z3d )              ! mass transport in j-direction 
     
    369369         END DO 
    370370         CALL lbc_lnk( z2d, 'T', -1. ) 
    371          CALL iom_put( "tosmint", rau0 * z2d )        ! Vertical integral of temperature 
     371         CALL iom_put( "tosmint", rho0 * z2d )        ! Vertical integral of temperature 
    372372      ENDIF 
    373373      IF( iom_use("somint") ) THEN 
     
    381381         END DO 
    382382         CALL lbc_lnk( z2d, 'T', -1. ) 
    383          CALL iom_put( "somint", rau0 * z2d )         ! Vertical integral of salinity 
     383         CALL iom_put( "somint", rho0 * z2d )         ! Vertical integral of salinity 
    384384      ENDIF 
    385385 
     
    458458      clop = "x"         ! no use of the mask value (require less cpu time and otherwise the model crashes) 
    459459#if defined key_diainstant 
    460       zsto = nwrite * rdt 
     460      zsto = nwrite * rn_Dt 
    461461      clop = "inst("//TRIM(clop)//")" 
    462462#else 
    463       zsto=rdt 
     463      zsto = rn_Dt 
    464464      clop = "ave("//TRIM(clop)//")" 
    465465#endif 
    466       zout = nwrite * rdt 
    467       zmax = ( nitend - nit000 + 1 ) * rdt 
     466      zout = nwrite * rn_Dt 
     467      zmax = ( nitend - nit000 + 1 ) * rn_Dt 
    468468 
    469469      ! Define indices of the horizontal output zoom and vertical limit storage 
     
    485485 
    486486         ! Compute julian date from starting date of the run 
    487          CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) 
     487         CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian ) 
    488488         zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    489489         IF(lwp)WRITE(numout,*) 
     
    507507         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    508508            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    509             &          nit000-1, zjulian, rdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
     509            &          nit000-1, zjulian, rn_Dt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
    510510         CALL histvert( nid_T, "deptht", "Vertical T levels",      &  ! Vertical grid: gdept 
    511511            &           "m", ipk, gdept_1d, nz_T, "down" ) 
     
    543543         CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu,           &  ! Horizontal grid: glamu and gphiu 
    544544            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    545             &          nit000-1, zjulian, rdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
     545            &          nit000-1, zjulian, rn_Dt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
    546546         CALL histvert( nid_U, "depthu", "Vertical U levels",      &  ! Vertical grid: gdept 
    547547            &           "m", ipk, gdept_1d, nz_U, "down" ) 
     
    556556         CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv,           &  ! Horizontal grid: glamv and gphiv 
    557557            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    558             &          nit000-1, zjulian, rdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
     558            &          nit000-1, zjulian, rn_Dt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
    559559         CALL histvert( nid_V, "depthv", "Vertical V levels",      &  ! Vertical grid : gdept 
    560560            &          "m", ipk, gdept_1d, nz_V, "down" ) 
     
    569569         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    570570            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    571             &          nit000-1, zjulian, rdt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 
     571            &          nit000-1, zjulian, rn_Dt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 
    572572         CALL histvert( nid_W, "depthw", "Vertical W levels",      &  ! Vertical grid: gdepw 
    573573            &          "m", ipk, gdepw_1d, nz_W, "down" ) 
     
    897897      clname = cdfile_name 
    898898      IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 
    899       zsto = rdt 
     899      zsto = rn_Dt 
    900900      clop = "inst(x)"           ! no use of the mask value (require less cpu time) 
    901       zout = rdt 
    902       zmax = ( nitend - nit000 + 1 ) * rdt 
     901      zout = rn_Dt 
     902      zmax = ( nitend - nit000 + 1 ) * rn_Dt 
    903903 
    904904      IF(lwp) WRITE(numout,*) 
     
    912912 
    913913      ! Compute julian date from starting date of the run 
    914       CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian )         ! time axis  
     914      CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian )         ! time axis  
    915915      zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    916916      CALL histbeg( clname, jpi, glamt, jpj, gphit,   & 
    917           1, jpi, 1, jpj, nit000-1, zjulian, rdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
     917          1, jpi, 1, jpj, nit000-1, zjulian, rn_Dt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
    918918      CALL histvert( id_i, "deptht", "Vertical T levels",   &    ! Vertical grid : gdept 
    919919          "m", jpk, gdept_1d, nz_i, "down") 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIU/cool_skin.F90

    r9598 r9923  
    6868 
    6969 
    70    SUBROUTINE diurnal_sst_coolskin_step(psqflux, pstauflux, psrho, rdt) 
     70   SUBROUTINE diurnal_sst_coolskin_step(psqflux, pstauflux, psrho, pdt) 
    7171      !!---------------------------------------------------------------------- 
    7272      !! *** ROUTINE diurnal_sst_takaya_step *** 
     
    8282      REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: pstauflux   ! Wind stress (kg/ m s^2) 
    8383      REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: psrho       ! Water density (kg/m^3) 
    84       REAL(wp), INTENT(IN) :: rdt                             ! Time-step 
     84      REAL(wp), INTENT(IN)                     :: pdt         ! Time-step (s) 
    8585      
    8686      ! Local variables 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIU/diurnal_bulk.F90

    r9168 r9923  
    7878 
    7979 
    80    SUBROUTINE diurnal_sst_takaya_step(kt, psolflux, pqflux, ptauflux, prho, p_rdt,   & 
     80   SUBROUTINE diurnal_sst_takaya_step(kt, psolflux, pqflux, ptauflux, prho, pdt,   & 
    8181            &                  pla, pthick, pcoolthick, pmu, & 
    8282            &                  p_fvel_bkginc, p_hflux_bkginc) 
     
    9898      REAL(wp), DIMENSION(jpi,jpj)          , INTENT(in) ::   ptauflux       ! wind stress  (kg/ m s^2) 
    9999      REAL(wp), DIMENSION(jpi,jpj)          , INTENT(in) ::   prho           ! water density  (kg/m^3) 
    100       REAL(wp)                              , INTENT(in) ::   p_rdt          ! time-step 
     100      REAL(wp)                              , INTENT(in) ::   pdt            ! time-step (s) 
    101101      REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) ::   pLa            ! Langmuir number 
    102102      REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) ::   pthick         ! warm layer thickness (m) 
     
    167167       
    168168      ! Increment the temperature using the implicit solution 
    169       x_dsst(:,:) = t_imp( x_dsst(:,:), p_rdt, z_abflux(:,:), z_fvel(:,:),   & 
     169      x_dsst(:,:) = t_imp( x_dsst(:,:), pdt, z_abflux(:,:), z_fvel(:,:),   & 
    170170         &                       z_fla(:,:), zmu(:,:), zthick(:,:), prho(:,:) ) 
    171171      ! 
     
    173173 
    174174    
    175    FUNCTION t_imp(p_dsst, p_rdt, p_abflux, p_fvel, & 
     175   FUNCTION t_imp(p_dsst, pdt, p_abflux, p_fvel, & 
    176176                          p_fla, pmu, pthick, prho ) 
    177177                           
     
    182182      ! Dummy variables 
    183183      REAL(wp), DIMENSION(jpi,jpj), INTENT(IN) :: p_dsst     ! Delta SST 
    184       REAL(wp), INTENT(IN)                     :: p_rdt      ! Time-step 
     184      REAL(wp), INTENT(IN)                     :: pdt        ! Time-step (s) 
    185185      REAL(wp), DIMENSION(jpi,jpj), INTENT(IN) :: p_abflux   ! Heat forcing 
    186186      REAL(wp), DIMENSION(jpi,jpj), INTENT(IN) :: p_fvel     ! Friction velocity 
     
    257257            &      ( pthick(ji,jj) * z_stabfunc ) )      
    258258           
    259             t_imp(ji,jj) = ( p_dsst(ji,jj) + p_rdt * z_term1 ) / & 
    260                            ( 1._wp - p_rdt * z_term2 ) 
     259            t_imp(ji,jj) = ( p_dsst(ji,jj) + pdt * z_term1 ) / & 
     260                           ( 1._wp - pdt * z_term2 ) 
    261261 
    262262         END DO 
    263263      END DO 
    264264       
    265       END FUNCTION t_imp 
    266  
     265   END FUNCTION t_imp 
     266 
     267   !!====================================================================== 
    267268END MODULE diurnal_bulk 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DIU/step_diu.F90

    r9598 r9923  
    55   !!====================================================================== 
    66   !! History :  3.7  ! 2015-11  (J. While)  Original code 
     7   !!---------------------------------------------------------------------- 
    78 
    89   USE diurnal_bulk    ! diurnal SST bulk routines  (diurnal_sst_takaya routine)  
     
    2728   !! Software governed by the CeCILL licence     (./LICENSE) 
    2829   !!---------------------------------------------------------------------- 
    29  
    3030   CONTAINS 
    3131 
    3232   SUBROUTINE stp_diurnal( kstp )  
    33       INTEGER, INTENT(in) ::   kstp   ! ocean time-step index  
    3433      !!----------------------------------------------------------------------  
    3534      !!                     ***  ROUTINE stp_diurnal  ***  
     
    4645      !!              -8- Outputs and diagnostics  
    4746      !!----------------------------------------------------------------------  
     47      INTEGER, INTENT(in) ::   kstp   ! ocean time-step index  
     48      ! 
    4849      INTEGER ::   jk       ! dummy loop indices 
    4950      INTEGER ::   indic    ! error indicator if < 0  
     
    5152      !! ---------------------------------------------------------------------  
    5253       
    53       IF(ln_diurnal_only) THEN 
     54      IF( ln_diurnal_only ) THEN 
    5455         indic = 0                                 ! reset to no error condition  
    5556         IF( kstp /= nit000 )   CALL day( kstp )   ! Calendar (day was already called at nit000 in day_init)  
     
    6061         ENDIF 
    6162        
    62             CALL sbc    ( kstp )                      ! Sea Boundary Conditions  
     63         CALL sbc( kstp )                          ! Sea Surface Boundary Conditions  
    6364      ENDIF 
    6465      
    65       ! Cool skin 
    6666      IF( .NOT.ln_diurnal )   CALL ctl_stop( "stp_diurnal: ln_diurnal not set" ) 
    6767          
    6868      IF( .NOT. ln_blk    )   CALL ctl_stop( "stp_diurnal: diurnal flux processing only implemented for bulk forcing" )  
    6969 
    70       CALL diurnal_sst_coolskin_step( qns, taum, rhop(:,:,1), rdt) 
     70      !                                            ! Cool skin 
     71      CALL diurnal_sst_coolskin_step( qns, taum, rhop(:,:,1), rn_Dt ) 
    7172 
    72       CALL iom_put( "sst_wl"   , x_dsst               )    ! warm layer (write out before update below). 
    73       CALL iom_put( "sst_cs"   , x_csdsst             )    ! cool skin 
     73      CALL iom_put( "sst_wl", x_dsst   )                 ! warm layer (write out before update below). 
     74      CALL iom_put( "sst_cs", x_csdsst )                 ! cool skin 
    7475 
    75       ! Diurnal warm layer model        
    76       CALL diurnal_sst_takaya_step( kstp, &  
    77       &    qsr, qns, taum, rhop(:,:,1), rdt)  
     76      !                                            ! Diurnal warm layer model        
     77      CALL diurnal_sst_takaya_step( kstp, qsr, qns, taum, rhop(:,:,1), rn_Dt )  
    7878 
    7979      IF( ln_diurnal_only ) THEN 
    80          IF( ln_diaobs )         CALL dia_obs( kstp )         ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 
     80         IF( ln_diaobs )   CALL dia_obs( kstp )    ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 
    8181      
    8282         !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  
     
    8484         !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  
    8585         IF( kstp == nit000   )   CALL iom_close( numror )     ! close input  ocean restart file  
    86          IF( lrst_oce         )   CALL rst_write    ( kstp )   ! write output ocean restart file 
     86         IF( lrst_oce         )   CALL rst_write( kstp   )     ! write output ocean restart file 
    8787      
    8888         IF( ln_timing .AND.  kstp == nit000  )   CALL timing_reset  
     
    9191   END SUBROUTINE stp_diurnal   
    9292    
     93   !!====================================================================== 
    9394END MODULE step_diu 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DOM/daymod.F90

    r9598 r9923  
    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   !!---------------------------------------------------------------------- 
     
    7272      ! 
    7373      ! max number of seconds between each restart 
    74       IF( REAL( nitend - nit000 + 1 ) * rdt > REAL( HUGE( nsec1jan000 ) ) ) THEN 
     74      IF( REAL( nitend - nit000 + 1 ) * rn_Dt > REAL( HUGE( nsec1jan000 ) ) ) THEN 
    7575         CALL ctl_stop( 'The number of seconds between each restart exceeds the integer 4 max value: 2^31-1. ',   & 
    7676            &           'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 
    7777      ENDIF 
    78       nsecd   = NINT( rday       ) 
    79       nsecd05 = NINT( 0.5 * rday ) 
    80       ndt     = NINT(       rdt ) 
    81       ndt05   = NINT( 0.5 * rdt ) 
     78      nsecd   = NINT( rday         ) 
     79      nsecd05 = NINT( 0.5 * rday   ) 
     80      ndt     = NINT(       rn_Dt ) 
     81      ndt05   = NINT( 0.5 * rn_Dt ) 
    8282 
    8383      IF( .NOT. l_offline )   CALL day_rst( nit000, 'READ' ) 
     
    239239      nsec_week  = nsec_week  + 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      !! 
     
    378378               nminute = ( nn_time0 - nhour * 100 ) 
    379379               IF( nhour*3600+nminute*60-ndt05 .lt. 0 )  ndastp=ndastp-1      ! Start hour is specified in the namelist (default 0) 
    380                adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
     380               adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    381381               ! note this is wrong if time step has changed during run 
    382382            ENDIF 
     
    387387       nminute = ( nn_time0 - nhour * 100 ) 
    388388            IF( nhour*3600+nminute*60-ndt05 .lt. 0 )  ndastp=ndastp-1      ! Start hour is specified in the namelist (default 0) 
    389             adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
     389            adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    390390         ENDIF 
    391391         IF( ABS(adatrj  - REAL(NINT(adatrj),wp)) < 0.1 / rday )   adatrj = REAL(NINT(adatrj),wp)   ! avoid truncation error 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DOM/dom_oce.F90

    r9863 r9923  
    3333   LOGICAL , PUBLIC ::   ln_meshmask    !: =T  create a mesh-mask file (mesh_mask.nc) 
    3434   REAL(wp), PUBLIC ::   rn_isfhmin     !: threshold to discriminate grounded ice to floating ice 
    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 
    3737   LOGICAL , PUBLIC ::   ln_1st_euler   !: =0 start with forward time step or not (=1) 
     
    5050   LOGICAL,  PUBLIC :: ln_bt_auto       !: Set number of barotropic iterations automatically 
    5151   INTEGER,  PUBLIC :: nn_bt_flt        !: Filter choice 
    52    INTEGER,  PUBLIC :: nn_baro          !: Number of barotropic iterations during one baroclinic step (rdt) 
     52   INTEGER,  PUBLIC :: nn_e             !: Number of external mode sub-step used at each ocean time-step 
    5353   REAL(wp), PUBLIC :: rn_bt_cmax       !: Maximum allowed courant number (used if ln_bt_auto=T) 
    5454   REAL(wp), PUBLIC :: rn_bt_alpha      !: Time stepping diffusion parameter 
    5555 
    56  
    57    !                                   !! old non-DOCTOR names still used in the model 
    58    REAL(wp), PUBLIC ::   atfp           !: asselin time filter parameter 
    59    REAL(wp), PUBLIC ::   rdt            !: time step for the dynamics and tracer (=rn_rdt) 
    60  
    6156   !                                   !!! associated variables 
    6257   LOGICAL , PUBLIC ::   l_1st_euler    !: Euler 1st time-step flag (=T if ln_restart=F or ln_1st_euler=T) 
    63    REAL(wp), PUBLIC ::   r2dt, r1_2dt   !: = 2*rdt and 1/(2*rdt) except if l_1st_euler=T) 
     58   REAL(wp), PUBLIC ::   rDt, r1_Dt     !: MLF: = 2*rn_Dt and 1/(2*rn_Dt) except if l_1st_euler=T where half the value is used 
     59   !                                    !  RK3: = rn_Dt 
    6460 
    6561   !!---------------------------------------------------------------------- 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DOM/domain.F90

    r9863 r9923  
    293293         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, ln_1st_euler,     & 
    294294         &             ln_cfmeta, ln_iscpl, ln_xios_read, nn_wxios 
    295       NAMELIST/namdom/ ln_linssh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs, ln_meshmask 
     295      NAMELIST/namdom/ ln_linssh, rn_isfhmin, rn_Dt, rn_atfp, ln_crs, ln_meshmask 
    296296#if defined key_netcdf4 
    297297      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
     
    414414         WRITE(numout,*) '      create mesh/mask file                   ln_meshmask = ', ln_meshmask 
    415415         WRITE(numout,*) '      treshold to open the isf cavity         rn_isfhmin  = ', rn_isfhmin, ' [m]' 
    416          WRITE(numout,*) '      ocean time step                         rn_rdt      = ', rn_rdt 
     416         WRITE(numout,*) '      ocean time step                         rn_dt       = ', rn_dt 
    417417         WRITE(numout,*) '      asselin time filter parameter           rn_atfp     = ', rn_atfp 
    418418         WRITE(numout,*) '      online coarsening of dynamical fields   ln_crs      = ', ln_crs 
    419419      ENDIF 
    420420      ! 
    421       !          ! conversion DOCTOR names into model names (this should disappear soon) 
    422       atfp = rn_atfp 
    423       rdt  = rn_rdt 
    424  
    425421      IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    426422         lrxios = ln_xios_read.AND.ln_rstart 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DOM/domvvl.F90

    r9863 r9923  
    117117      INTEGER ::   ji, jj, jk 
    118118      INTEGER ::   ii0, ii1, ij0, ij1 
    119       REAL(wp)::   zcoef 
     119      REAL(wp)::   zcoef, z1_Dt 
    120120      !!---------------------------------------------------------------------- 
    121121      ! 
     
    208208         IF( ln_vvl_ztilde_as_zstar ) THEN   ! z-star emulation using z-tile 
    209209            frq_rst_e3t(:,:) = 0._wp               !Ignore namelist settings 
    210             frq_rst_hdv(:,:) = 1._wp / rdt 
     210            frq_rst_hdv(:,:) = 1._wp / rn_Dt 
    211211         ENDIF 
    212212         IF ( ln_vvl_zstar_at_eqtor ) THEN   ! use z-star in vicinity of the Equator 
     213            z1_Dt = 1._wp / rn_Dt 
    213214            DO jj = 1, jpj 
    214215               DO ji = 1, jpi 
     
    216217                  IF( ABS(gphit(ji,jj)) >= 6.) THEN 
    217218                     ! values outside the equatorial band and transition zone (ztilde) 
    218                      frq_rst_e3t(ji,jj) =  2.0_wp * rpi / ( MAX( rn_rst_e3t  , rsmall ) * 86400.e0_wp ) 
    219                      frq_rst_hdv(ji,jj) =  2.0_wp * rpi / ( MAX( rn_lf_cutoff, rsmall ) * 86400.e0_wp ) 
     219                     frq_rst_e3t(ji,jj) =  2._wp * rpi / ( MAX( rn_rst_e3t  , rsmall ) * 86400._wp ) 
     220                     frq_rst_hdv(ji,jj) =  2._wp * rpi / ( MAX( rn_lf_cutoff, rsmall ) * 86400._wp ) 
    220221                  ELSEIF( ABS(gphit(ji,jj)) <= 2.5) THEN    ! Equator strip ==> z-star 
    221222                     ! values inside the equatorial band (ztilde as zstar) 
    222                      frq_rst_e3t(ji,jj) =  0.0_wp 
    223                      frq_rst_hdv(ji,jj) =  1.0_wp / rdt 
     223                     frq_rst_e3t(ji,jj) =  0._wp 
     224                     frq_rst_hdv(ji,jj) =  z1_Dt 
    224225                  ELSE                                      ! transition band (2.5 to 6 degrees N/S) 
    225226                     !                                      ! (linearly transition from z-tilde to z-star) 
    226                      frq_rst_e3t(ji,jj) = 0.0_wp + (frq_rst_e3t(ji,jj)-0.0_wp)*0.5_wp   & 
    227                         &            * (  1.0_wp - COS( rad*(ABS(gphit(ji,jj))-2.5_wp)  & 
    228                         &                                          * 180._wp / 3.5_wp ) ) 
    229                      frq_rst_hdv(ji,jj) = (1.0_wp / rdt)                                & 
    230                         &            + (  frq_rst_hdv(ji,jj)-(1.e0_wp / rdt) )*0.5_wp   & 
    231                         &            * (  1._wp  - COS( rad*(ABS(gphit(ji,jj))-2.5_wp)  & 
    232                         &                                          * 180._wp / 3.5_wp ) ) 
     227                     frq_rst_e3t(ji,jj) = 0._wp + ( frq_rst_e3t(ji,jj) - 0._wp  ) * 0.5_wp                             & 
     228                        &                       * (  1._wp - COS( rad*(ABS(gphit(ji,jj))-2.5_wp) * 180._wp / 3.5_wp )  ) 
     229                     frq_rst_hdv(ji,jj) = z1_Dt + (  frq_rst_hdv(ji,jj) - z1_Dt ) * 0.5_wp                             & 
     230                        &                       * (  1._wp - COS( rad*(ABS(gphit(ji,jj))-2.5_wp) * 180._wp / 3.5_wp )  ) 
    233231                  ENDIF 
    234232               END DO 
     
    237235               ii0 = 103   ;   ii1 = 111        
    238236               ij0 = 128   ;   ij1 = 135   ;    
    239                frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  0.0_wp 
    240                frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  1.e0_wp / rdt 
     237               frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  0._wp 
     238               frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  z1_Dt 
    241239            ENDIF 
    242240         ENDIF 
     
    345343            IF( kt > nit000 ) THEN 
    346344               DO jk = 1, jpkm1 
    347                   hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rdt * frq_rst_hdv(:,:)   & 
     345                  hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rn_Dt * frq_rst_hdv(:,:)   & 
    348346                     &          * ( hdiv_lf(:,:,jk) - e3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) ) 
    349347               END DO 
     
    607605                  DO ji = 1, jpi 
    608606                     ze3f = te3t_n(ji,jj,jk)   & 
    609                         & + atfp * ( te3t_b(ji,jj,jk) - 2.0_wp * te3t_n(ji,jj,jk) + te3t_a(ji,jj,jk) ) 
     607                        & + rn_atfp * ( te3t_b(ji,jj,jk) - 2.0_wp * te3t_n(ji,jj,jk) + te3t_a(ji,jj,jk) ) 
    610608                     te3t_b(ji,jj,jk) = ze3f 
    611609                     te3t_n(ji,jj,jk) = te3t_a(ji,jj,jk) 
     
    10181016            WRITE(numout,*) '                         rn_rst_e3t     = 0.e0' 
    10191017            WRITE(numout,*) '            hard-wired : z-tilde cutoff frequency of low-pass filter (days)' 
    1020             WRITE(numout,*) '                         rn_lf_cutoff   = 1.0/rdt' 
     1018            WRITE(numout,*) '                         rn_lf_cutoff   = 1/rn_Dt' 
    10211019         ELSE 
    10221020            WRITE(numout,*) '      z-tilde to zstar restoration timescale (days)        rn_rst_e3t   = ', rn_rst_e3t 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DOM/iscplini.F90

    r9598 r9923  
    7171      ! 
    7272      nstp_iscpl=MIN( nn_fiscpl, nitend-nit000+1 ) ! the coupling period have to be less or egal than the total number of time step 
    73       rdt_iscpl = nstp_iscpl * rn_rdt 
     73      rdt_iscpl = nstp_iscpl * rn_Dt 
    7474      ! 
    7575      IF (lwp) THEN 
     
    7979         WRITE(numout,*) ' conservation flag (ln_hsb   )            = ', ln_hsb 
    8080         WRITE(numout,*) ' nb of stp for cons (rn_fiscpl)           = ', nstp_iscpl 
    81          IF (nstp_iscpl .NE. nn_fiscpl) WRITE(numout,*) 'W A R N I N G: nb of stp for cons has been modified & 
     81         IF (nstp_iscpl /= nn_fiscpl) WRITE(numout,*) 'W A R N I N G: nb of stp for cons has been modified & 
    8282            &                                           (larger than run length)' 
    8383         WRITE(numout,*) ' coupling time step                       = ', rdt_iscpl 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DOM/phycst.F90

    r9656 r9923  
    4646   REAL(wp), PUBLIC ::   rt0_ice  = 273.05_wp        !: melting point of ice          [Kelvin] 
    4747#endif 
    48    REAL(wp), PUBLIC ::   rau0                        !: volumic mass of reference     [kg/m3] 
    49    REAL(wp), PUBLIC ::   r1_rau0                     !: = 1. / rau0                   [m3/kg] 
     48   REAL(wp), PUBLIC ::   rho0                        !: volumic mass of reference     [kg/m3] 
     49   REAL(wp), PUBLIC ::   r1_rho0                     !: = 1. / rho0                   [m3/kg] 
    5050   REAL(wp), PUBLIC ::   rcp                         !: ocean specific heat           [J/Kelvin] 
    5151   REAL(wp), PUBLIC ::   r1_rcp                      !: = 1. / rcp                    [Kelvin/J] 
    52    REAL(wp), PUBLIC ::   rau0_rcp                    !: = rau0 * rcp  
    53    REAL(wp), PUBLIC ::   r1_rau0_rcp                 !: = 1. / ( rau0 * rcp ) 
     52   REAL(wp), PUBLIC ::   rho0_rcp                    !: = rho0 * rcp  
     53   REAL(wp), PUBLIC ::   r1_rho0_rcp                 !: = 1. / ( rho0 * rcp ) 
    5454 
    5555   REAL(wp), PUBLIC ::   rhosn    =  330._wp         !: volumic mass of snow          [kg/m3] 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DOM/restart.F90

    r9863 r9923  
    148148      IF( lwxios )   CALL iom_swap( cwxios_context ) 
    149149          
    150       CALL    iom_rstput( kt, nitrst, numrow, 'rdt'    , rn_rdt           , ldxios = lwxios )   ! dynamics time step 
     150      CALL    iom_rstput( kt, nitrst, numrow, 'rdt'    , rn_Dt            , ldxios = lwxios )   ! dynamics time step 
    151151      ! 
    152152      IF( .NOT. ln_diurnal_only ) THEN 
     
    261261      IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN 
    262262         CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios ) 
    263          IF( zrdt /= rn_rdt ) THEN 
     263         IF( zrdt /= rn_Dt ) THEN 
    264264            IF(lwp) WRITE( numout,*) 
    265265            IF(lwp) WRITE( numout,*) 'rst_read:  rdt not equal to the read one' 
     
    273273      IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst, ldxios = lrxios )  
    274274      IF ( ln_diurnal_only ) THEN  
    275          IF(lwp) WRITE( numout,*) 'rst_read: ln_diurnal_only set, setting rhop=rau0' 
    276          rhop = rau0 
     275         IF(lwp) WRITE( numout,*) 'rst_read: ln_diurnal_only set, setting rhop=rho0' 
     276         rhop = rho0 
    277277         CALL iom_get( numror, jpdom_autoglo, 'tn'     , w3d, ldxios = lrxios )  
    278278         tsn(:,:,1,jp_tem) = w3d(:,:,1) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DYN/divhor.F90

    r9598 r9923  
    6363      ! 
    6464      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
    65       REAL(wp) ::   zraur, zdep   ! local scalars 
     65      REAL(wp) ::   zdep          ! local scalars 
    6666      !!---------------------------------------------------------------------- 
    6767      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DYN/dynnxt.F90

    r9863 r9923  
    8383      !!              * Apply the time filter applied and swap of the dynamics 
    8484      !!             arrays to start the next time step: 
    85       !!                (ub,vb) = (un,vn) + atfp [ (ub,vb) + (ua,va) - 2 (un,vn) ] 
     85      !!                (ub,vb) = (un,vn) + rn_atfp [ (ub,vb) + (ua,va) - 2 (un,vn) ] 
    8686      !!                (un,vn) = (ua,va). 
    8787      !!             Note that with flux form advection and non linear free surface, 
     
    156156         IF( ln_dyn_trd ) THEN                                       ! 3D output: total momentum trends 
    157157            IF( ln_dynadv_vec ) THEN  
    158                zua(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) * r1_2dt 
    159                zva(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) * r1_2dt 
     158               zua(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) * r1_Dt 
     159               zva(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) * r1_Dt 
    160160            ELSE 
    161                zua(:,:,:) = ( e3u_a(:,:,:)*ua(:,:,:) - e3u_b(:,:,:)*ub(:,:,:) ) / e3u_n(:,:,:) * r1_2dt 
    162                zva(:,:,:) = ( e3v_a(:,:,:)*va(:,:,:) - e3v_b(:,:,:)*vb(:,:,:) ) / e3v_n(:,:,:) * r1_2dt 
     161               zua(:,:,:) = ( e3u_a(:,:,:)*ua(:,:,:) - e3u_b(:,:,:)*ub(:,:,:) ) / e3u_n(:,:,:) * r1_Dt 
     162               zva(:,:,:) = ( e3v_a(:,:,:)*va(:,:,:) - e3v_b(:,:,:)*vb(:,:,:) ) / e3v_n(:,:,:) * r1_Dt 
    163163            ENDIF 
    164164            CALL iom_put( "utrd_tot", zua )                          ! total momentum trends, except the asselin filter 
     
    192192               DO jj = 1, jpj 
    193193                  DO ji = 1, jpi     
    194                      zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2._wp * un(ji,jj,jk) + ua(ji,jj,jk) ) 
    195                      zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2._wp * vn(ji,jj,jk) + va(ji,jj,jk) ) 
     194                     zuf = un(ji,jj,jk) + rn_atfp * ( ub(ji,jj,jk) - 2._wp * un(ji,jj,jk) + ua(ji,jj,jk) ) 
     195                     zvf = vn(ji,jj,jk) + rn_atfp * ( vb(ji,jj,jk) - 2._wp * vn(ji,jj,jk) + va(ji,jj,jk) ) 
    196196                     ! 
    197197                     ub(ji,jj,jk) = zuf                      ! ub <-- filtered velocity 
     
    207207            ! Before scale factor at t-points   (used as a now filtered scale factor until the swap) 
    208208            DO jk = 1, jpkm1 
    209                e3t_b(:,:,jk) = e3t_n(:,:,jk) + atfp * ( e3t_b(:,:,jk) - 2._wp * e3t_n(:,:,jk) + e3t_a(:,:,jk) ) 
     209               e3t_b(:,:,jk) = e3t_n(:,:,jk) + rn_atfp * ( e3t_b(:,:,jk) - 2._wp * e3t_n(:,:,jk) + e3t_a(:,:,jk) ) 
    210210            END DO 
    211211            ! Add volume filter correction: compatibility with tracer advection scheme 
    212212            !    => time filter + conservation correction (only at the first level) 
    213             zcoef = atfp * rdt * r1_rau0 
     213            zcoef = rn_atfp * rn_Dt * r1_rho0 
    214214 
    215215            e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
     
    252252                  DO jj = 1, jpj 
    253253                     DO ji = 1, jpi 
    254                         zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2._wp * un(ji,jj,jk) + ua(ji,jj,jk) ) 
    255                         zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2._wp * vn(ji,jj,jk) + va(ji,jj,jk) ) 
     254                        zuf = un(ji,jj,jk) + rn_atfp * ( ub(ji,jj,jk) - 2._wp * un(ji,jj,jk) + ua(ji,jj,jk) ) 
     255                        zvf = vn(ji,jj,jk) + rn_atfp * ( vb(ji,jj,jk) - 2._wp * vn(ji,jj,jk) + va(ji,jj,jk) ) 
    256256                        ! 
    257257                        ub(ji,jj,jk) = zuf                      ! ub <-- filtered velocity 
     
    279279                        zve3b = e3v_b(ji,jj,jk) * vb(ji,jj,jk) 
    280280                        ! 
    281                         zuf = ( zue3n + atfp * ( zue3b - 2._wp * zue3n  + zue3a ) ) / ze3u_f(ji,jj,jk) 
    282                         zvf = ( zve3n + atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ze3v_f(ji,jj,jk) 
     281                        zuf = ( zue3n + rn_atfp * ( zue3b - 2._wp * zue3n  + zue3a ) ) / ze3u_f(ji,jj,jk) 
     282                        zvf = ( zve3n + rn_atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ze3v_f(ji,jj,jk) 
    283283                        ! 
    284284                        ub(ji,jj,jk) = zuf                     ! ub <-- filtered velocity 
     
    349349      ENDIF 
    350350      IF( l_trddyn ) THEN                ! 3D output: asselin filter trends on momentum 
    351          zua(:,:,:) = ( ub(:,:,:) - zua(:,:,:) ) * r1_2dt 
    352          zva(:,:,:) = ( vb(:,:,:) - zva(:,:,:) ) * r1_2dt 
     351         zua(:,:,:) = ( ub(:,:,:) - zua(:,:,:) ) * r1_Dt 
     352         zva(:,:,:) = ( vb(:,:,:) - zva(:,:,:) ) * r1_Dt 
    353353         CALL trd_dyn( zua, zva, jpdyn_atf, kt ) 
    354354      ENDIF 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DYN/dynspg.F90

    r9863 r9923  
    6666      !!              ln_apr_dyn=T : the atmospheric pressure forcing is applied  
    6767      !!             as the gradient of the inverse barometer ssh: 
    68       !!                apgu = - 1/rau0 di[apr] = 0.5*grav di[ssh_ib+ssh_ibb] 
    69       !!                apgv = - 1/rau0 dj[apr] = 0.5*grav dj[ssh_ib+ssh_ibb] 
     68      !!                apgu = - 1/rho0 di[apr] = 0.5*grav di[ssh_ib+ssh_ibb] 
     69      !!                apgv = - 1/rho0 dj[apr] = 0.5*grav dj[ssh_ib+ssh_ibb] 
    7070      !!             Note that as all external forcing a time averaging over a two rdt 
    7171      !!             period is used to prevent the divergence of odd and even time step. 
     
    7474      ! 
    7575      INTEGER  ::   ji, jj, jk                   ! dummy loop indices 
    76       REAL(wp) ::   zg_2, zintp, zgrau0r, zld   ! local scalars 
     76      REAL(wp) ::   zg_2, zintp, zg_rho0, zld   ! local scalars 
    7777      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zpice 
    7878      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdu, ztrdv 
     
    110110         ENDIF 
    111111         ! 
    112          !                                    !==  tide potential forcing term  ==! 
    113          IF( .NOT.ln_dynspg_ts .AND. ( ln_tide_pot .AND. ln_tide )  ) THEN   ! N.B. added directly at sub-time-step in ts-case 
    114             ! 
    115             CALL upd_tide( kt )                      ! update tide potential 
    116             ! 
    117             DO jj = 2, jpjm1                         ! add tide potential forcing 
    118                DO ji = fs_2, fs_jpim1   ! vector opt. 
    119                   spgu(ji,jj) = spgu(ji,jj) + grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) * r1_e1u(ji,jj) 
    120                   spgv(ji,jj) = spgv(ji,jj) + grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) * r1_e2v(ji,jj) 
    121                END DO  
    122             END DO 
    123             ! 
    124             IF (ln_scal_load) THEN 
    125                zld = rn_scal_load * grav 
    126                DO jj = 2, jpjm1                    ! add scalar approximation for load potential 
    127                   DO ji = fs_2, fs_jpim1   ! vector opt. 
    128                      spgu(ji,jj) = spgu(ji,jj) + zld * ( sshn(ji+1,jj) - sshn(ji,jj) ) * r1_e1u(ji,jj) 
    129                      spgv(ji,jj) = spgv(ji,jj) + zld * ( sshn(ji,jj+1) - sshn(ji,jj) ) * r1_e2v(ji,jj) 
    130                   END DO  
    131                END DO 
     112         IF( .NOT.ln_dynspg_ts ) THEN   
     113            !                                    !==  tide potential forcing term  ==! 
     114            IF( ln_tide_pot .AND. ln_tide ) THEN      ! N.B. added directly at sub-time-step in ts-case 
     115               ! 
     116               CALL upd_tide( kt )                    ! update tide potential 
     117               ! 
     118               IF ( ln_scal_load ) THEN               
     119                  zld = rn_load * grav 
     120                  DO jj = 2, jpjm1                    ! add tide potential + scalar approximation of load potential 
     121                     DO ji = fs_2, fs_jpim1   ! vector opt. 
     122                        spgu(ji,jj) = spgu(ji,jj) + (  grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) )  & 
     123                           &                         + zld  * ( sshn     (ji+1,jj) - sshn     (ji,jj) )  ) * r1_e1u(ji,jj) 
     124                        spgv(ji,jj) = spgv(ji,jj) + (  grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) )  & 
     125                           &                         + zld  * ( sshn     (ji,jj+1) - sshn     (ji,jj) )  ) * r1_e2v(ji,jj) 
     126                     END DO  
     127                  END DO 
     128               ELSE 
     129                  DO jj = 2, jpjm1                    ! add tide potential 
     130                     DO ji = fs_2, fs_jpim1   ! vector opt. 
     131                        spgu(ji,jj) = spgu(ji,jj) + grav * ( pot_astro(ji+1,jj) - pot_astro(ji,jj) ) * r1_e1u(ji,jj) 
     132                        spgv(ji,jj) = spgv(ji,jj) + grav * ( pot_astro(ji,jj+1) - pot_astro(ji,jj) ) * r1_e2v(ji,jj) 
     133                     END DO  
     134                  END DO 
     135               ENDIF 
    132136            ENDIF 
    133137         ENDIF 
     
    136140            ALLOCATE( zpice(jpi,jpj) ) 
    137141            zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 
    138             zgrau0r     = - grav * r1_rau0 
    139             zpice(:,:) = (  zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:)  ) * zgrau0r 
     142            zg_rho0     = - grav * r1_rho0 
     143            zpice(:,:) = (  zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:)  ) * zg_rho0 
    140144            DO jj = 2, jpjm1 
    141145               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    191195      NAMELIST/namdyn_spg/ ln_dynspg_exp       , ln_dynspg_ts,   & 
    192196      &                    ln_bt_fw, ln_bt_av  , ln_bt_auto  ,   & 
    193       &                    nn_baro , rn_bt_cmax, nn_bt_flt, rn_bt_alpha 
     197      &                    nn_e    , rn_bt_cmax, nn_bt_flt, rn_bt_alpha 
    194198      !!---------------------------------------------------------------------- 
    195199      ! 
     
    227231         WRITE(numout,*) 
    228232         IF( nspg == np_EXP )   WRITE(numout,*) '   ==>>>   explicit free surface' 
    229          IF( nspg == np_TS  )   WRITE(numout,*) '   ==>>>   free surface with time splitting scheme' 
     233         IF( nspg == np_TS  )   WRITE(numout,*) '   ==>>>   split-explicit free surface' 
    230234         IF( nspg == np_NO  )   WRITE(numout,*) '   ==>>>   No surface surface pressure gradient trend in momentum Eqs.' 
    231235      ENDIF 
    232236      ! 
    233237      IF( nspg == np_TS ) THEN   ! split-explicit scheme initialisation 
    234          CALL dyn_spg_ts_init          ! do it first: set nn_baro used to allocate some arrays later on 
     238         CALL dyn_spg_ts_init          ! do it first: set nn_e used to allocate some arrays later on 
    235239      ENDIF 
    236240      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DYN/dynspg_exp.F90

    r9598 r9923  
    4949      !!              momentum trend the surface pressure gradient : 
    5050      !!                      (ua,va) = (ua,va) + (spgu,spgv) 
    51       !!              where spgu = -1/rau0 d/dx(ps) = -g/e1u di( sshn ) 
    52       !!                    spgv = -1/rau0 d/dy(ps) = -g/e2v dj( sshn ) 
     51      !!              where spgu = -1/rho0 d/dx(ps) = -g/e1u di( sshn ) 
     52      !!                    spgv = -1/rho0 d/dy(ps) = -g/e2v dj( sshn ) 
    5353      !! 
    5454      !! ** Action :   (ua,va)   trend of horizontal velocity increased by  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DYN/dynspg_ts.F90

    r9863 r9923  
    6969   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_adv , vn_adv   !: Advection vel. at "now" barocl. step 
    7070   ! 
    71    INTEGER, SAVE :: icycle      ! Number of barotropic sub-steps for each internal step nn_baro <= 2.5 nn_baro 
    72    REAL(wp),SAVE :: rdtbt       ! Barotropic time step 
     71   INTEGER, SAVE :: icycle      ! Number of barotropic sub-steps for each internal step nn_e <= 2.5*nn_e 
     72   REAL(wp),SAVE :: rDt_e       ! external mode time-step 
    7373   ! 
    7474   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:)   ::   wgtbtp1, wgtbtp2   ! 1st & 2nd weights used in time filtering of barotropic fields 
     
    8181   REAL(wp) ::   r1_4  = 0.25_wp          ! 
    8282   REAL(wp) ::   r1_2  = 0.5_wp           ! 
    83  
    84    REAL(wp) ::   r1_2dt_b, r2dt_bf               ! local scalars 
    8583    
    8684   !! * Substitutions 
     
    10199      ierr(:) = 0 
    102100      ! 
    103       ALLOCATE( wgtbtp1(3*nn_baro), wgtbtp2(3*nn_baro), zwz(jpi,jpj), STAT=ierr(1) ) 
     101      ALLOCATE( wgtbtp1(3*nn_e), wgtbtp2(3*nn_e), zwz(jpi,jpj), STAT=ierr(1) ) 
    104102      ! 
    105103      IF( ln_dynvor_een .OR. ln_dynvor_eeT )   & 
     
    150148      INTEGER  ::   ikbu, iktu, noffset   ! local integers 
    151149      INTEGER  ::   ikbv, iktv            !   -      - 
     150      INTEGER  ::   iwdg, jwdg, kwdg      ! short-hand values for the indices of the output point 
    152151      REAL(wp) ::   zx1, zx2, zu_spg, zhura, z1_hu  !   -      - 
    153152      REAL(wp) ::   zy1, zy2, zv_spg, zhvra, z1_hv  !   -      - 
    154153      REAL(wp) ::   za0, za1, za2, za3              !   -      - 
    155154      REAL(wp) ::   zmdi, zztmp            , z1_ht  !   -      - 
     155      REAL(wp) ::   zwdramp                         ! local scalar - only used if ln_wd_dl = .True.  
     156      REAL(wp) ::   zload       
    156157      REAL(wp), DIMENSION(jpi,jpj) :: zsshp2_e, zhf 
    157158      REAL(wp), DIMENSION(jpi,jpj) :: zwx, zu_trd, zu_frc, zssh_frc 
     
    161162      REAL(wp), DIMENSION(jpi,jpj) :: zCdU_u, zCdU_v   ! top/bottom stress at u- & v-points 
    162163      ! 
    163       REAL(wp) ::   zwdramp                     ! local scalar - only used if ln_wd_dl = .True.  
    164  
    165       INTEGER  :: iwdg, jwdg, kwdg   ! short-hand values for the indices of the output point 
     164 
    166165 
    167166      REAL(wp) ::   zepsilon, zgamma            !   -      - 
     
    179178      zwdramp = r_rn_wdmin1               ! simplest ramp  
    180179!     zwdramp = 1._wp / (rn_wdmin2 - rn_wdmin1) ! more general ramp 
    181       !                                         ! reciprocal of baroclinic time step  
    182       IF( l_1st_euler ) THEN   ;   r2dt_bf =          rdt 
    183       ELSE                     ;   r2dt_bf = 2.0_wp * rdt 
    184       ENDIF 
    185       r1_2dt_b = 1.0_wp / r2dt_bf  
    186180      ! 
    187181      ll_init     = ln_bt_av                    ! if no time averaging, then no specific restart  
    188182      ll_fw_start = .FALSE. 
    189183      !                                         ! time offset in steps for bdy data update 
    190       IF( .NOT.ln_bt_fw ) THEN   ;   noffset = - nn_baro 
     184      IF( .NOT.ln_bt_fw ) THEN   ;   noffset = - nn_e 
    191185      ELSE                       ;   noffset =   0  
    192186      ENDIF 
     
    459453                     zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_0(ji+1,jj) - sshn(ji,jj) - ht_0(ji,jj)) & 
    460454                                 &    / (sshn(ji+1,jj) - sshn(ji  ,jj)) ) 
    461                      zcpx(ji,jj) = max(min( zcpx(ji,jj) , 1.0_wp),0.0_wp) 
     455                     zcpx(ji,jj) = MAX(  0._wp , MIN( zcpx(ji,jj) , 1._wp )  ) 
    462456                  ELSE 
    463457                     zcpx(ji,jj) = 0._wp 
     
    536530      ! Note that the "unclipped" bottom friction parameter is used even with explicit drag 
    537531      IF( ln_wd_il ) THEN 
    538          zztmp = -1._wp / rdtbt 
     532         zztmp = -1._wp / rDt_e 
    539533         DO jj = 2, jpjm1 
    540534            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    587581         DO jj = 2, jpjm1 
    588582            DO ji = fs_2, fs_jpim1   ! vector opt. 
    589                zu_frc(ji,jj) =  zu_frc(ji,jj) + r1_rau0 * utau(ji,jj) * r1_hu_n(ji,jj) 
    590                zv_frc(ji,jj) =  zv_frc(ji,jj) + r1_rau0 * vtau(ji,jj) * r1_hv_n(ji,jj) 
     583               zu_frc(ji,jj) =  zu_frc(ji,jj) + r1_rho0 * utau(ji,jj) * r1_hu_n(ji,jj) 
     584               zv_frc(ji,jj) =  zv_frc(ji,jj) + r1_rho0 * vtau(ji,jj) * r1_hv_n(ji,jj) 
    591585            END DO 
    592586         END DO 
    593587      ELSE 
    594          zztmp = r1_rau0 * r1_2 
     588         zztmp = r1_rho0 * r1_2 
    595589         DO jj = 2, jpjm1 
    596590            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    629623      !                                         ! Surface net water flux and rivers 
    630624      IF (ln_bt_fw) THEN 
    631          zssh_frc(:,:) = r1_rau0 * ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) 
     625         zssh_frc(:,:) = r1_rho0 * ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) 
    632626      ELSE 
    633          zztmp = r1_rau0 * r1_2 
     627         zztmp = r1_rho0 * r1_2 
    634628         zssh_frc(:,:) = zztmp * (  emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:)   & 
    635629                &                 + fwfisf(:,:) + fwfisf_b(:,:)                     ) 
     
    818812         ENDIF 
    819813#endif 
    820          IF( ln_wd_il )   CALL wad_lmt_bt(zwx, zwy, sshn_e, zssh_frc, rdtbt) 
     814         IF( ln_wd_il )   CALL wad_lmt_bt(zwx, zwy, sshn_e, zssh_frc, rDt_e) 
    821815 
    822816         IF ( ln_wd_dl ) THEN  
     
    864858            END DO 
    865859         END DO 
    866          ssha_e(:,:) = (  sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * ssmask(:,:) 
     860         ssha_e(:,:) = (  sshn_e(:,:) - rDt_e * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * ssmask(:,:) 
    867861          
    868862         CALL lbc_lnk( ssha_e, 'T',  1._wp ) 
     
    10681062         ENDIF  
    10691063         ! 
    1070          ! Surface pressure trend: 
     1064         ! Surface pressure trend 
     1065         IF( ln_scal_load ) THEN   ;   zload = 1._wp 
     1066         ELSE                      ;   zload = 1._wp - rn_load 
     1067         ENDIF 
    10711068         IF( ln_wd_il ) THEN 
    10721069           DO jj = 2, jpjm1 
     
    10751072                 zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 
    10761073                 zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 
    1077                  zwx(ji,jj) = (1._wp - rn_scal_load) * zu_spg * zcpx(ji,jj)  
    1078                  zwy(ji,jj) = (1._wp - rn_scal_load) * zv_spg * zcpy(ji,jj) 
     1074                 zwx(ji,jj) = zload * zu_spg * zcpx(ji,jj)  
     1075                 zwy(ji,jj) = zload * zv_spg * zcpy(ji,jj) 
    10791076              END DO 
    10801077           END DO 
     
    10851082                 zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 
    10861083                 zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 
    1087                  zwx(ji,jj) = (1._wp - rn_scal_load) * zu_spg 
    1088                  zwy(ji,jj) = (1._wp - rn_scal_load) * zv_spg 
     1084                 zwx(ji,jj) = zload * zu_spg 
     1085                 zwy(ji,jj) = zload * zv_spg 
    10891086              END DO 
    10901087           END DO 
     
    10971094               DO ji = fs_2, fs_jpim1   ! vector opt. 
    10981095                  ua_e(ji,jj) = (                                 un_e(ji,jj)   &  
    1099                             &     + rdtbt * (                      zwx(ji,jj)   & 
     1096                            &     + rDt_e * (                      zwx(ji,jj)   & 
    11001097                            &                                 + zu_trd(ji,jj)   & 
    11011098                            &                                 + zu_frc(ji,jj) ) &  
     
    11031100 
    11041101                  va_e(ji,jj) = (                                 vn_e(ji,jj)   & 
    1105                             &     + rdtbt * (                      zwy(ji,jj)   & 
     1102                            &     + rDt_e * (                      zwy(ji,jj)   & 
    11061103                            &                                 + zv_trd(ji,jj)   & 
    11071104                            &                                 + zv_frc(ji,jj) ) & 
     
    11101107!jth implicit bottom friction: 
    11111108                  IF ( ll_wd ) THEN ! revert to explicit for bit comparison tests in non wad runs 
    1112                      ua_e(ji,jj) =  ua_e(ji,jj) /(1.0 -   rdtbt * zCdU_u(ji,jj) * hur_e(ji,jj)) 
    1113                      va_e(ji,jj) =  va_e(ji,jj) /(1.0 -   rdtbt * zCdU_v(ji,jj) * hvr_e(ji,jj)) 
     1109                     ua_e(ji,jj) =  ua_e(ji,jj) /(1.0 -   rDt_e * zCdU_u(ji,jj) * hur_e(ji,jj)) 
     1110                     va_e(ji,jj) =  va_e(ji,jj) /(1.0 -   rDt_e * zCdU_v(ji,jj) * hvr_e(ji,jj)) 
    11141111                  ENDIF 
    11151112 
     
    11281125 
    11291126                  ua_e(ji,jj) = (                hu_e(ji,jj)  *   un_e(ji,jj)   &  
    1130                             &     + rdtbt * ( zhust_e(ji,jj)  *    zwx(ji,jj)   &  
     1127                            &     + rDt_e * ( zhust_e(ji,jj)  *    zwx(ji,jj)   &  
    11311128                            &               + zhup2_e(ji,jj)  * zu_trd(ji,jj)   & 
    11321129                            &               +    hu_n(ji,jj)  * zu_frc(ji,jj) ) & 
     
    11341131 
    11351132                  va_e(ji,jj) = (                hv_e(ji,jj)  *   vn_e(ji,jj)   & 
    1136                             &     + rdtbt * ( zhvst_e(ji,jj)  *    zwy(ji,jj)   & 
     1133                            &     + rDt_e * ( zhvst_e(ji,jj)  *    zwy(ji,jj)   & 
    11371134                            &               + zhvp2_e(ji,jj)  * zv_trd(ji,jj)   & 
    11381135                            &               +    hv_n(ji,jj)  * zv_frc(ji,jj) ) & 
     
    12021199         zwy(:,:) = vn_adv(:,:) 
    12031200         IF( .NOT.l_1st_euler ) THEN 
    1204             un_adv(:,:) = r1_2 * ( ub2_b(:,:) + zwx(:,:) - atfp * un_bf(:,:) ) 
    1205             vn_adv(:,:) = r1_2 * ( vb2_b(:,:) + zwy(:,:) - atfp * vn_bf(:,:) ) 
     1201            un_adv(:,:) = r1_2 * ( ub2_b(:,:) + zwx(:,:) - rn_atfp * un_bf(:,:) ) 
     1202            vn_adv(:,:) = r1_2 * ( vb2_b(:,:) + zwy(:,:) - rn_atfp * vn_bf(:,:) ) 
    12061203            ! 
    12071204            ! Update corrective fluxes for next time step: 
    1208             un_bf(:,:)  = atfp * un_bf(:,:) + (zwx(:,:) - ub2_b(:,:)) 
    1209             vn_bf(:,:)  = atfp * vn_bf(:,:) + (zwy(:,:) - vb2_b(:,:)) 
     1205            un_bf(:,:)  = rn_atfp * un_bf(:,:) + (zwx(:,:) - ub2_b(:,:)) 
     1206            vn_bf(:,:)  = rn_atfp * vn_bf(:,:) + (zwy(:,:) - vb2_b(:,:)) 
    12101207         ELSE 
    12111208            un_bf(:,:) = 0._wp 
     
    12221219      IF( ln_dynadv_vec .OR. ln_linssh ) THEN 
    12231220         DO jk=1,jpkm1 
    1224             ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * r1_2dt_b 
    1225             va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * r1_2dt_b 
     1221            ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * r1_Dt 
     1222            va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * r1_Dt 
    12261223         END DO 
    12271224      ELSE 
     
    12291226         DO jj = 1, jpjm1 
    12301227            DO ji = 1, jpim1      ! NO Vector Opt. 
    1231                zsshu_a(ji,jj) = r1_2 * ssumask(ji,jj)  * r1_e1e2u(ji,jj) & 
    1232                   &              * ( e1e2t(ji  ,jj) * ssha(ji  ,jj)      & 
    1233                   &              +   e1e2t(ji+1,jj) * ssha(ji+1,jj) ) 
    1234                zsshv_a(ji,jj) = r1_2 * ssvmask(ji,jj)  * r1_e1e2v(ji,jj) & 
    1235                   &              * ( e1e2t(ji,jj  ) * ssha(ji,jj  )      & 
    1236                   &              +   e1e2t(ji,jj+1) * ssha(ji,jj+1) ) 
     1228               zsshu_a(ji,jj) = r1_2 * ssumask(ji,jj)  * r1_e1e2u(ji,jj) * (   e1e2t(ji  ,jj) * ssha(ji  ,jj)   & 
     1229                  &                                                          + e1e2t(ji+1,jj) * ssha(ji+1,jj)   ) 
     1230               zsshv_a(ji,jj) = r1_2 * ssvmask(ji,jj)  * r1_e1e2v(ji,jj) * (   e1e2t(ji,jj  ) * ssha(ji,jj  )   & 
     1231                  &                                                          + e1e2t(ji,jj+1) * ssha(ji,jj+1) ) 
    12371232            END DO 
    12381233         END DO 
     
    12401235         ! 
    12411236         DO jk=1,jpkm1 
    1242             ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * r1_2dt_b 
    1243             va(:,:,jk) = va(:,:,jk) + r1_hv_n(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * r1_2dt_b 
     1237            ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * r1_Dt 
     1238            va(:,:,jk) = va(:,:,jk) + r1_hv_n(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * r1_Dt 
    12441239         END DO 
    12451240         ! Save barotropic velocities not transport: 
     
    13061301      LOGICAL                       , INTENT(in   ) ::   ll_fw          ! forward time splitting =.true. 
    13071302      INTEGER                       , INTENT(inout) ::   jpit           ! cycle length     
    1308       REAL(wp), DIMENSION(3*nn_baro), INTENT(inout) ::   zwgt1, zwgt2   ! Primary & Secondary weights 
     1303      REAL(wp), DIMENSION(3*nn_e), INTENT(inout) ::   zwgt1, zwgt2   ! Primary & Secondary weights 
    13091304      ! 
    13101305      INTEGER ::  jic, jn, ji                      ! temporary integers 
     
    13161311      ! 
    13171312      ! Set time index when averaged value is requested 
    1318       IF ( ll_fw ) THEN   ;   jic =     nn_baro 
    1319       ELSE                ;   jic = 2 * nn_baro 
     1313      IF ( ll_fw ) THEN   ;   jic =     nn_e 
     1314      ELSE                ;   jic = 2 * nn_e 
    13201315      ENDIF 
    13211316 
     
    13231318      ! 
    13241319      IF (ll_av) THEN         !* Define simple boxcar window for primary weights  
    1325          !                    !  (width = nn_baro, centered around jic)      
     1320         !                    !  (width = nn_e, centered around jic)      
    13261321         SELECT CASE ( nn_bt_flt ) 
    13271322         CASE( 0 )  ! No averaging 
     
    13291324            jpit = jic 
    13301325            ! 
    1331          CASE( 1 )  ! Boxcar, width = nn_baro 
    1332             DO jn = 1, 3*nn_baro 
    1333                za1 = ABS(float(jn-jic))/float(nn_baro)  
     1326         CASE( 1 )  ! Boxcar, width = nn_e 
     1327            DO jn = 1, 3*nn_e 
     1328               za1 = ABS(float(jn-jic))/float(nn_e)  
    13341329               IF ( za1 < 0.5_wp ) THEN 
    13351330                  zwgt1(jn) = 1._wp 
     
    13381333            END DO 
    13391334            ! 
    1340          CASE( 2 )  ! Boxcar, width = 2 * nn_baro 
    1341             DO jn = 1, 3*nn_baro 
    1342                za1 = ABS(float(jn-jic))/float(nn_baro)  
     1335         CASE( 2 )  ! Boxcar, width = 2 * nn_e 
     1336            DO jn = 1, 3*nn_e 
     1337               za1 = ABS(float(jn-jic))/float(nn_e)  
    13431338                  IF ( za1 < 1._wp ) THEN 
    13441339                     zwgt1(jn) = 1._wp 
     
    14741469 
    14751470      ! Estimate number of iterations to satisfy a max courant number= rn_bt_cmax 
    1476       IF( ln_bt_auto )   nn_baro = CEILING( rdt / rn_bt_cmax * zcmax) 
     1471      IF( ln_bt_auto )   nn_e = CEILING( rn_Dt / rn_bt_cmax * zcmax) 
    14771472       
    1478       rdtbt = rdt / REAL( nn_baro , wp ) 
    1479       zcmax = zcmax * rdtbt 
     1473      rDt_e = rn_Dt / REAL( nn_e , wp ) 
     1474      zcmax = zcmax * rDt_e 
    14801475      ! Print results 
    14811476      IF(lwp) WRITE(numout,*) 
     
    14831478      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 
    14841479      IF( ln_bt_auto ) THEN 
    1485          IF(lwp) WRITE(numout,*) '     ln_ts_auto =.true. Automatically set nn_baro ' 
     1480         IF(lwp) WRITE(numout,*) '     ln_ts_auto =.true. Automatically set nn_e ' 
    14861481         IF(lwp) WRITE(numout,*) '     Max. courant number allowed: ', rn_bt_cmax 
    14871482      ELSE 
    1488          IF(lwp) WRITE(numout,*) '     ln_ts_auto=.false.: Use nn_baro in namelist   nn_baro = ', nn_baro 
     1483         IF(lwp) WRITE(numout,*) '     ln_ts_auto=.false.: Use nn_e in namelist   nn_e = ', nn_e 
    14891484      ENDIF 
    14901485 
    14911486      IF(ln_bt_av) THEN 
    1492          IF(lwp) WRITE(numout,*) '     ln_bt_av =.true.  ==> Time averaging over nn_baro time steps is on ' 
     1487         IF(lwp) WRITE(numout,*) '     ln_bt_av =.true.  ==> Time averaging over nn_e time steps is on ' 
    14931488      ELSE 
    14941489         IF(lwp) WRITE(numout,*) '     ln_bt_av =.false. => No time averaging of barotropic variables ' 
     
    15101505      SELECT CASE ( nn_bt_flt ) 
    15111506         CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '           Dirac' 
    1512          CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = nn_baro' 
    1513          CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = 2*nn_baro'  
     1507         CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = nn_e' 
     1508         CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = 2*nn_e'  
    15141509         CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1, or 2' ) 
    15151510      END SELECT 
    15161511      ! 
    15171512      IF(lwp) WRITE(numout,*) ' ' 
    1518       IF(lwp) WRITE(numout,*) '     nn_baro = ', nn_baro 
    1519       IF(lwp) WRITE(numout,*) '     Barotropic time step [s] is :', rdtbt 
    1520       IF(lwp) WRITE(numout,*) '     Maximum Courant number is   :', zcmax 
     1513      IF(lwp) WRITE(numout,*) '     nn_e = ', nn_e 
     1514      IF(lwp) WRITE(numout,*) '     external mode time step is : rDt_e', rDt_e, ' [s]' 
     1515      IF(lwp) WRITE(numout,*) '     Maximum Courant number  is :      ', zcmax 
    15211516      ! 
    15221517      IF(lwp) WRITE(numout,*)    '     Time diffusion parameter rn_bt_alpha: ', rn_bt_alpha 
     
    15291524      ENDIF 
    15301525      IF( zcmax>0.9_wp ) THEN 
    1531          CALL ctl_stop( 'dynspg_ts ERROR: Maximum Courant number is greater than 0.9: Inc. nn_baro !' )           
     1526         CALL ctl_stop( 'dynspg_ts ERROR: Maximum Courant number is greater than 0.9: Inc. nn_e !' )           
    15321527      ENDIF 
    15331528      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DYN/dynzdf.F90

    r9863 r9923  
    9090      ENDIF 
    9191      ! 
    92       z2dt_2 = r2dt * 0.5_wp        !* =rdt except in 1st Euler time step where it is equal to rdt/2 
     92      z2dt_2 = rDt * 0.5_wp        !* =rn_Dt except in 1st Euler time step where it is equal to rn_Dt/2 
    9393      ! 
    9494      ! 
     
    108108      IF( ln_dynadv_vec .OR. ln_linssh ) THEN   ! applied on velocity 
    109109         DO jk = 1, jpkm1 
    110             ua(:,:,jk) = ( ub(:,:,jk) + r2dt * ua(:,:,jk) ) * umask(:,:,jk) 
    111             va(:,:,jk) = ( vb(:,:,jk) + r2dt * va(:,:,jk) ) * vmask(:,:,jk) 
     110            ua(:,:,jk) = ( ub(:,:,jk) + rDt * ua(:,:,jk) ) * umask(:,:,jk) 
     111            va(:,:,jk) = ( vb(:,:,jk) + rDt * va(:,:,jk) ) * vmask(:,:,jk) 
    112112         END DO 
    113113      ELSE                                      ! applied on thickness weighted velocity 
    114114         DO jk = 1, jpkm1 
    115             ua(:,:,jk) = ( e3u_b(:,:,jk)*ub(:,:,jk) + r2dt * e3u_n(:,:,jk)*ua(:,:,jk) ) / e3u_a(:,:,jk) * umask(:,:,jk) 
    116             va(:,:,jk) = ( e3v_b(:,:,jk)*vb(:,:,jk) + r2dt * e3v_n(:,:,jk)*va(:,:,jk) ) / e3v_a(:,:,jk) * vmask(:,:,jk) 
     115            ua(:,:,jk) = ( e3u_b(:,:,jk)*ub(:,:,jk) + rDt * e3u_n(:,:,jk)*ua(:,:,jk) ) / e3u_a(:,:,jk) * umask(:,:,jk) 
     116            va(:,:,jk) = ( e3v_b(:,:,jk)*vb(:,:,jk) + rDt * e3v_n(:,:,jk)*va(:,:,jk) ) / e3v_a(:,:,jk) * vmask(:,:,jk) 
    117117         END DO 
    118118      ENDIF 
     
    160160               DO ji = fs_2, fs_jpim1   ! vector opt. 
    161161                  ze3ua =  ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk)   ! after scale factor at T-point 
    162                   zzwi = - r2dt * ( 0.5 * ( avm(ji+1,jj,jk  ) + avm(ji,jj,jk  ) ) + akzu(ji,jj,jk  ) )   & 
     162                  zzwi = - rDt * ( 0.5 * ( avm(ji+1,jj,jk  ) + avm(ji,jj,jk  ) ) + akzu(ji,jj,jk  ) )   & 
    163163                     &            / ( ze3ua * e3uw_n(ji,jj,jk  ) ) * wumask(ji,jj,jk  ) 
    164                   zzws = - r2dt * ( 0.5 * ( avm(ji+1,jj,jk+1) + avm(ji,jj,jk+1) ) + akzu(ji,jj,jk+1) )   & 
     164                  zzws = - rDt * ( 0.5 * ( avm(ji+1,jj,jk+1) + avm(ji,jj,jk+1) ) + akzu(ji,jj,jk+1) )   & 
    165165                     &            / ( ze3ua * e3uw_n(ji,jj,jk+1) ) * wumask(ji,jj,jk+1) 
    166166                  zwi(ji,jj,jk) = zzwi 
     
    244244         DO ji = fs_2, fs_jpim1   ! vector opt. 
    245245            ze3ua =  ( 1._wp - r_vvl ) * e3u_n(ji,jj,1) + r_vvl * e3u_a(ji,jj,1)  
    246             ua(ji,jj,1) = ua(ji,jj,1) + z2dt_2 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( ze3ua * rau0 ) * umask(ji,jj,1) 
     246            ua(ji,jj,1) = ua(ji,jj,1) + z2dt_2 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( ze3ua * rho0 ) * umask(ji,jj,1) 
    247247         END DO 
    248248      END DO 
     
    277277               DO ji = fs_2, fs_jpim1   ! vector opt. 
    278278                  ze3va =  ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk)   ! after scale factor at T-point 
    279                   zzwi = - r2dt * ( 0.5 * ( avm(ji,jj+1,jk  ) + avm(ji,jj,jk  ) ) + akzv(ji,jj,jk  ) )   & 
     279                  zzwi = - rDt * ( 0.5 * ( avm(ji,jj+1,jk  ) + avm(ji,jj,jk  ) ) + akzv(ji,jj,jk  ) )   & 
    280280                     &            / ( ze3va * e3vw_n(ji,jj,jk  ) ) * wvmask(ji,jj,jk  ) 
    281                   zzws = - r2dt * ( 0.5 * ( avm(ji,jj+1,jk+1) + avm(ji,jj,jk+1) ) + akzv(ji,jj,jk+1) )   & 
     281                  zzws = - rDt * ( 0.5 * ( avm(ji,jj+1,jk+1) + avm(ji,jj,jk+1) ) + akzv(ji,jj,jk+1) )   & 
    282282                     &            / ( ze3va * e3vw_n(ji,jj,jk+1) ) * wvmask(ji,jj,jk+1) 
    283283                  zwi(ji,jj,jk) = zzwi * wvmask(ji,jj,jk  ) 
     
    359359         DO ji = fs_2, fs_jpim1   ! vector opt.           
    360360            ze3va =  ( 1._wp - r_vvl ) * e3v_n(ji,jj,1) + r_vvl * e3v_a(ji,jj,1)  
    361             va(ji,jj,1) = va(ji,jj,1) + z2dt_2 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( ze3va * rau0 ) * vmask(ji,jj,1) 
     361            va(ji,jj,1) = va(ji,jj,1) + z2dt_2 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( ze3va * rho0 ) * vmask(ji,jj,1) 
    362362         END DO 
    363363      END DO 
     
    385385      IF( l_trddyn ) THEN                        ! save the vertical diffusive trends for further diagnostics 
    386386         IF( ln_dynadv_vec .OR. ln_linssh ) THEN   ! applied on velocity 
    387             ztrdu(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) * r1_2dt - ztrdu(:,:,:) 
    388             ztrdv(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) * r1_2dt - ztrdv(:,:,:) 
     387            ztrdu(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) * r1_Dt - ztrdu(:,:,:) 
     388            ztrdv(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) * r1_Dt - ztrdv(:,:,:) 
    389389         ELSE                                      ! applied on thickness weighted velocity 
    390             ztrdu(:,:,:) = ( e3u_a(:,:,:)*ua(:,:,:) - e3u_b(:,:,:)*ub(:,:,:) ) / e3u_n(:,:,:) * r1_2dt - ztrdu(:,:,:) 
    391             ztrdv(:,:,:) = ( e3v_a(:,:,:)*va(:,:,:) - e3v_b(:,:,:)*vb(:,:,:) ) / e3v_n(:,:,:) * r1_2dt - ztrdv(:,:,:) 
     390            ztrdu(:,:,:) = ( e3u_a(:,:,:)*ua(:,:,:) - e3u_b(:,:,:)*ub(:,:,:) ) / e3u_n(:,:,:) * r1_Dt - ztrdu(:,:,:) 
     391            ztrdv(:,:,:) = ( e3v_a(:,:,:)*va(:,:,:) - e3v_b(:,:,:)*vb(:,:,:) ) / e3v_n(:,:,:) * r1_Dt - ztrdv(:,:,:) 
    392392         ENDIF 
    393393         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt ) 
     
    440440      ! 
    441441      IF( ln_dynadv_vec .OR. ln_linssh ) THEN   ! applied on velocity 
    442          ptrdu(:,:,:) = (              ua(:,:,:) -              ub(:,:,:) )                * r1_2dt - ptrdu(:,:,:) 
    443          ptrdv(:,:,:) = (              va(:,:,:) -              vb(:,:,:) )                * r1_2dt - ptrdv(:,:,:) 
     442         ptrdu(:,:,:) = (              ua(:,:,:) -              ub(:,:,:) )                * r1_Dt - ptrdu(:,:,:) 
     443         ptrdv(:,:,:) = (              va(:,:,:) -              vb(:,:,:) )                * r1_Dt - ptrdv(:,:,:) 
    444444      ELSE                                      ! applied on thickness weighted velocity 
    445          ptrdu(:,:,:) = ( e3u_a(:,:,:)*ua(:,:,:) - e3u_b(:,:,:)*ub(:,:,:) ) / e3u_n(:,:,:) * r1_2dt - ptrdu(:,:,:) 
    446          ptrdv(:,:,:) = ( e3v_a(:,:,:)*va(:,:,:) - e3v_b(:,:,:)*vb(:,:,:) ) / e3v_n(:,:,:) * r1_2dt - ptrdv(:,:,:) 
     445         ptrdu(:,:,:) = ( e3u_a(:,:,:)*ua(:,:,:) - e3u_b(:,:,:)*ub(:,:,:) ) / e3u_n(:,:,:) * r1_Dt - ptrdu(:,:,:) 
     446         ptrdv(:,:,:) = ( e3v_a(:,:,:)*va(:,:,:) - e3v_b(:,:,:)*vb(:,:,:) ) / e3v_n(:,:,:) * r1_Dt - ptrdv(:,:,:) 
    447447      ENDIF 
    448448      CALL trd_dyn( ptrdu, ptrdv, jpdyn_zdf, kt ) 
     
    494494            END DO 
    495495         END DO 
    496          zzz= - 0.5_wp* rau0           ! caution sign minus here 
     496         zzz= - 0.5_wp* rho0           ! caution sign minus here 
    497497         z2d(:,:) = zzz * z2d(:,:)  
    498498         CALL lbc_lnk( z2d,'T', 1. ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DYN/sshwzv.F90

    r9863 r9923  
    6969      !  
    7070      INTEGER  ::   jk         ! dummy loop indice 
    71       REAL(wp) ::   z1_2rau0   ! local scalars 
     71      REAL(wp) ::   z1_2rho0   ! local scalars 
    7272      REAL(wp), DIMENSION(jpi,jpj) ::   zhdiv   ! 2D workspace 
    7373      !!---------------------------------------------------------------------- 
     
    8181      ENDIF 
    8282      ! 
    83       z1_2rau0 = 0.5_wp * r1_rau0 
     83      z1_2rho0 = 0.5_wp * r1_rho0 
    8484 
    8585      !                                           !------------------------------! 
     
    8787      !                                           !------------------------------! 
    8888 
    89       IF(ln_wd_il)   CALL wad_lmt( sshb, z1_2rau0 * (emp_b(:,:) + emp(:,:)), r2dt ) 
     89      IF(ln_wd_il)   CALL wad_lmt( sshb, z1_2rho0 * (emp_b(:,:) + emp(:,:)), rDt ) 
    9090 
    9191      CALL div_hor( kt )                               ! Horizontal divergence 
     
    9999      ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations. 
    100100      !  
    101       ssha(:,:) = (  sshb(:,:) - r2dt * ( z1_2rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
     101      ssha(:,:) = (  sshb(:,:) - rDt * ( z1_2rho0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
    102102      ! 
    103103#if defined key_agrif 
     
    174174            ! computation of w 
    175175            wn(:,:,jk) = wn(:,:,jk+1) - (  e3t_n(:,:,jk) * hdivn(:,:,jk) + zhdiv(:,:,jk)    & 
    176                &                         + r1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )     ) * tmask(:,:,jk) 
     176               &                         + r1_Dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )      ) * tmask(:,:,jk) 
    177177         END DO 
    178178         !          IF( ln_vvl_layer ) wn(:,:,:) = 0.e0 
     
    182182            ! computation of w 
    183183            wn(:,:,jk) = wn(:,:,jk+1) - (  e3t_n(:,:,jk) * hdivn(:,:,jk)                 & 
    184                &                         + r1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )  ) * tmask(:,:,jk) 
     184               &                         + r1_Dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )  ) * tmask(:,:,jk) 
    185185         END DO 
    186186      ENDIF 
     
    194194#if defined key_agrif  
    195195      IF( .NOT. AGRIF_Root() ) THEN  
    196          IF ((nbondi ==  1).OR.(nbondi == 2)) wn(nlci-1 , :     ,:) = 0.e0      ! east  
    197          IF ((nbondi == -1).OR.(nbondi == 2)) wn(2      , :     ,:) = 0.e0      ! west  
    198          IF ((nbondj ==  1).OR.(nbondj == 2)) wn(:      ,nlcj-1 ,:) = 0.e0      ! north  
    199          IF ((nbondj == -1).OR.(nbondj == 2)) wn(:      ,2      ,:) = 0.e0      ! south  
     196         IF ( nbondi ==  1 .OR. nbondi == 2 )   wn(nlci-1 ,   :   ,:) = 0._wp    ! east  
     197         IF ( nbondi == -1 .OR. nbondi == 2 )   wn(   2   ,   :   ,:) = 0._wp    ! west  
     198         IF ( nbondj ==  1 .OR. nbondj == 2 )   wn(   :   ,nlcj-1 ,:) = 0._wp    ! north  
     199         IF ( nbondj == -1 .OR. nbondj == 2 )   wn(   :   ,   2   ,:) = 0._wp    ! south  
    200200      ENDIF  
    201201#endif  
     
    216216      !! ** Method  : - apply Asselin time fiter to now ssh (excluding the forcing 
    217217      !!              from the filter, see Leclair and Madec 2010) and swap : 
    218       !!                sshn = ssha + atfp * ( sshb -2 sshn + ssha ) 
    219       !!                            - atfp * rdt * ( emp_b - emp ) / rau0 
     218      !!                sshn = ssha + rn_atfp * ( sshb -2 sshn + ssha ) 
     219      !!                            - rn_atfp * rn_Dt * ( emp_b - emp ) / rho0 
    220220      !!                sshn = ssha 
    221221      !! 
     
    245245         ! 
    246246         !                                   ! before <-- now filtered 
    247          sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) 
     247         sshb(:,:) = sshn(:,:) + rn_atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) 
    248248         IF( .NOT.ln_linssh ) THEN           ! before <-- with forcing removed 
    249             zcoef = atfp * rdt * r1_rau0 
     249            zcoef = rn_atfp * rn_Dt * r1_rho0 
    250250            sshb(:,:) = sshb(:,:) - zcoef * (     emp_b(:,:) - emp   (:,:)   & 
    251251               &                             -    rnf_b(:,:) + rnf   (:,:)   & 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/FLO/flo4rk.F90

    r9598 r9923  
    131131         ! computation of Runge-Kutta factor 
    132132         DO jfl = 1, jpnfl 
    133             zrkxfl(jfl,jind) = rdt*zufl(jfl) 
    134             zrkyfl(jfl,jind) = rdt*zvfl(jfl) 
    135             zrkzfl(jfl,jind) = rdt*zwfl(jfl) 
     133            zrkxfl(jfl,jind) = rn_Dt*zufl(jfl) 
     134            zrkyfl(jfl,jind) = rn_Dt*zvfl(jfl) 
     135            zrkzfl(jfl,jind) = rn_Dt*zwfl(jfl) 
    136136         END DO 
    137137         IF( jind /= 4 ) THEN 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/FLO/floblk.F90

    r9598 r9923  
    234234            ! test to know if the "age" of the float is not bigger than the  
    235235            ! time step 
    236             IF( zagenewfl(jfl) > rdt ) THEN 
    237                zttfl(jfl) = (rdt-zagefl(jfl)) / zvol 
    238                zagenewfl(jfl) = rdt 
     236            IF( zagenewfl(jfl) > rn_Dt ) THEN 
     237               zttfl(jfl) = (rn_Dt-zagefl(jfl)) / zvol 
     238               zagenewfl(jfl) = rn_Dt 
    239239            ENDIF 
    240240             
     
    341341         ifin = 1 
    342342         DO jfl = 1, jpnfl 
    343             IF( zagefl(jfl) < rdt )   ifin = 0 
     343            IF( zagefl(jfl) < rn_Dt )   ifin = 0 
    344344            tpifl(jfl) = zgifl(jfl) + 0.5 
    345345            tpjfl(jfl) = zgjfl(jfl) + 0.5 
     
    348348         ifin = 1 
    349349         DO jfl = 1, jpnfl 
    350             IF( zagefl(jfl) < rdt )   ifin = 0 
     350            IF( zagefl(jfl) < rn_Dt )   ifin = 0 
    351351            tpifl(jfl) = zgifl(jfl) + 0.5 
    352352            tpjfl(jfl) = zgjfl(jfl) + 0.5 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/FLO/flowri.F90

    r9598 r9923  
    125125               ztem(jfl) = tsn(iafloc,ibfloc,icfl,jp_tem) 
    126126               zsal (jfl) = tsn(iafloc,ibfloc,icfl,jp_sal) 
    127                zrho (jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rau0 
     127               zrho (jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rho0 
    128128 
    129129            ENDIF 
     
    145145            ztem(jfl) = tsn(iafloc,ibfloc,icfl,jp_tem) 
    146146            zsal(jfl) = tsn(iafloc,ibfloc,icfl,jp_sal) 
    147             zrho(jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rau0 
     147            zrho(jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rho0 
    148148           
    149149         ENDIF 
     
    248248            !------------------------------- 
    249249            irec =  INT( (kt-nn_it000+1)/nn_writefl ) +1 
    250             ztime = ( kt-nn_it000 + 1 ) * rdt 
     250            ztime = ( kt-nn_it000 + 1 ) * rn_Dt 
    251251 
    252252            CALL flioputv( numflo , 'time_counter', ztime , start=(/irec/) ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ICB/icbini.F90

    r9598 r9923  
    5858      !!              - setup either test icebergs or calving file 
    5959      !!---------------------------------------------------------------------- 
    60       REAL(wp), INTENT(in) ::   pdt   ! iceberg time-step (rdt*nn_fsbc) 
     60      REAL(wp), INTENT(in) ::   pdt   ! iceberg time-step (rn_Dt*nn_fsbc) 
    6161      INTEGER , INTENT(in) ::   kt    ! time step number 
    6262      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ICB/icbtrj.F90

    r9598 r9923  
    6969      !!---------------------------------------------------------------------- 
    7070 
     71!!gm we could probably use the daymod calculation here.... 
     72!!               ===>>> TO BE checked by someone 
     73 
    7174      ! compute initial time step date 
    7275      CALL ju2ymds( fjulday, iyear, imonth, iday, zsec ) 
     
    7477 
    7578      ! compute end time step date 
    76       zfjulday = fjulday + rdt / rday * REAL( nitend - nit000 + 1 , wp) 
     79      zfjulday = fjulday + rn_Dt / rday * REAL( nitend - nit000 + 1 , wp) 
    7780      IF( ABS(zfjulday - REAL(NINT(zfjulday),wp)) < 0.1 / rday )   zfjulday = REAL(NINT(zfjulday),wp)   ! avoid truncation error 
    7881      CALL ju2ymds( zfjulday, iyear, imonth, iday, zsec ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/IOM/iom.F90

    r9802 r9923  
    239239      ! 
    240240      ! end file definition 
    241       dtime%second = rdt 
     241      dtime%second = rn_Dt 
    242242      CALL xios_set_timestep( dtime ) 
    243243      CALL xios_close_context_definition() 
     
    23582358            idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
    23592359            DO WHILE ( idx /= 0 )  
    2360                cldate = iom_sdate( fjulday - rdt / rday ) 
     2360               cldate = iom_sdate( fjulday - rn_Dt / rday ) 
    23612361               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+11:LEN_TRIM(clname)) 
    23622362               idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
     
    23652365            idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 
    23662366            DO WHILE ( idx /= 0 )  
    2367                cldate = iom_sdate( fjulday - rdt / rday, ldfull = .TRUE. ) 
     2367               cldate = iom_sdate( fjulday - rn_Dt / rday, ldfull = .TRUE. ) 
    23682368               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+15:LEN_TRIM(clname)) 
    23692369               idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 
     
    23722372            idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 
    23732373            DO WHILE ( idx /= 0 )  
    2374                cldate = iom_sdate( fjulday + rdt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. ) 
     2374               cldate = iom_sdate( fjulday + rn_Dt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. ) 
    23752375               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+9:LEN_TRIM(clname)) 
    23762376               idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 
     
    23792379            idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 
    23802380            DO WHILE ( idx /= 0 )  
    2381                cldate = iom_sdate( fjulday + rdt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. ) 
     2381               cldate = iom_sdate( fjulday + rn_Dt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. ) 
    23822382               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+13:LEN_TRIM(clname)) 
    23832383               idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/LDF/ldfdyn.F90

    r9598 r9923  
    408408            zcmsmag = (rn_csmc/rpi)**2                                              ! (C_smag/pi)^2 
    409409            zstabf_lo  = rn_minfac * rn_minfac / ( 2._wp * 4._wp * zcmsmag )        ! lower limit stability factor scaling 
    410             zstabf_up  = rn_maxfac / ( 4._wp * zcmsmag * 2._wp * rdt )              ! upper limit stability factor scaling 
     410            zstabf_up  = rn_maxfac / ( 4._wp * zcmsmag * 2._wp * rn_Dt )            ! upper limit stability factor scaling 
    411411            IF( ln_dynldf_blp ) zstabf_lo = ( 16._wp / 9._wp ) * zstabf_lo          ! provide |U|L^3/12 lower limit instead  
    412412            !                                                                       ! of |U|L^3/16 in blp case 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/LDF/ldftra.F90

    r9737 r9923  
    852852      ! 
    853853      ! 
    854       zztmp = 0.5_wp * rau0 * rcp  
     854      zztmp = 0.5_wp * rho0_rcp 
    855855      IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') ) THEN 
    856856        zw2d(:,:)   = 0._wp  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/OBS/diaobs.F90

    r9656 r9923  
    539539      ENDIF 
    540540 
    541       idaystp = NINT( rday / rdt ) 
     541      idaystp = NINT( rday / rn_Dt ) 
    542542 
    543543      !----------------------------------------------------------------------- 
     
    630630 
    631631      ENDIF 
    632  
     632      ! 
    633633   END SUBROUTINE dia_obs 
     634 
    634635 
    635636   SUBROUTINE dia_obs_wri 
     
    651652      !!        !  15-08  (M. Martin) Combined writing for prof and surf types 
    652653      !!---------------------------------------------------------------------- 
    653       !! * Modules used 
    654654      USE obs_rot_vel          ! Rotation of velocities 
    655655 
    656656      IMPLICIT NONE 
    657657 
    658       !! * Local declarations 
    659658      INTEGER :: jtype                    ! Data set loop variable 
    660659      INTEGER :: jo, jvar, jk 
    661       REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
    662          & zu, & 
    663          & zv 
     660      REAL(wp), DIMENSION(:), ALLOCATABLE ::   zu, zv 
    664661 
    665662      !----------------------------------------------------------------------- 
     
    771768      !!        !  2014-09  (D. Lea) New generic routine now deals with arbitrary initial time of day 
    772769      !!---------------------------------------------------------------------- 
    773       USE phycst, ONLY : &            ! Physical constants 
    774          & rday 
    775       USE dom_oce, ONLY : &           ! Ocean space and time domain variables 
    776          & rdt 
     770      USE phycst , ONLY :   rday    ! Physical constants 
     771      USE dom_oce, ONLY :   rn_Dt   ! Ocean space and time domain variables 
    777772 
    778773      IMPLICIT NONE 
    779774 
    780       !! * Arguments 
    781       REAL(KIND=dp), INTENT(OUT) :: ddobs                        ! Date in YYYYMMDD.HHMMSS 
    782       INTEGER :: kstp 
    783  
    784       !! * Local declarations 
     775      REAL(KIND=dp), INTENT(  out) ::   ddobs   ! Date in YYYYMMDD.HHMMSS 
     776      INTEGER      , INTENT(in   ) ::   kstp 
     777 
    785778      INTEGER :: iyea        ! date - (year, month, day, hour, minute) 
    786779      INTEGER :: imon 
     
    805798      !! Compute number of days + number of hours + min since initial time 
    806799      !!---------------------------------------------------------------------- 
    807       zdayfrc = kstp * rdt / rday 
     800      zdayfrc = kstp * rn_Dt / rday 
    808801      zdayfrc = zdayfrc - aint(zdayfrc) 
    809802      imin = imin + int( zdayfrc * 24 * 60 )  
     
    816809        iday=iday+1 
    817810      END DO  
    818       iday = iday + kstp * rdt / rday  
     811      iday = iday + kstp * rn_Dt / rday  
    819812 
    820813      !----------------------------------------------------------------------- 
     
    842835   END SUBROUTINE calc_date 
    843836 
     837 
    844838   SUBROUTINE ini_date( ddobsini ) 
    845839      !!---------------------------------------------------------------------- 
     
    859853      !!        !  2014-09  (D. Lea) Change to call generic routine calc_date 
    860854      !!---------------------------------------------------------------------- 
    861  
    862855      IMPLICIT NONE 
    863  
    864       !! * Arguments 
    865       REAL(KIND=dp), INTENT(OUT) :: ddobsini                   ! Initial date in YYYYMMDD.HHMMSS 
    866  
     856      ! 
     857      REAL(KIND=dp), INTENT(out) ::   ddobsini   ! Initial date in YYYYMMDD.HHMMSS 
     858      !!---------------------------------------------------------------------- 
     859      ! 
    867860      CALL calc_date( nit000 - 1, ddobsini ) 
    868  
     861      ! 
    869862   END SUBROUTINE ini_date 
     863 
    870864 
    871865   SUBROUTINE fin_date( ddobsfin ) 
     
    10111005    END SUBROUTINE obs_setinterpopts 
    10121006 
     1007   !!====================================================================== 
    10131008END MODULE diaobs 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/OBS/obs_prep.F90

    r9598 r9923  
    610610      !!        !  2010-05  (D. Lea) Fix in leap year calculation for NEMO vn3.2 
    611611      !!---------------------------------------------------------------------- 
    612       !! * Modules used 
    613       USE dom_oce, ONLY : &  ! Geographical information 
    614          & rdt 
    615       USE phycst, ONLY : &   ! Physical constants 
    616          & rday,  &              
    617          & rmmss, &              
    618          & rhhmm                         
    619       !! * Arguments 
     612      USE dom_oce, ONLY :   rn_Dt                ! Geographical information 
     613      USE phycst , ONLY :   rday, rmmss, rhhmm   ! Physical constants 
     614 
    620615      INTEGER, INTENT(IN) :: kcycle     ! Current cycle 
    621616      INTEGER, INTENT(IN) :: kyea0      ! Initial date coordinates 
     
    632627         & kobshou,  & 
    633628         & kobsmin 
    634       INTEGER, DIMENSION(kobsno), INTENT(INOUT) :: & 
    635          & kobsqc           ! Quality control flag 
    636       INTEGER, DIMENSION(kobsno), INTENT(OUT) :: & 
    637          & kobsstp          ! Number of time steps up to the  
    638                             ! observation time 
    639  
    640       !! * Local declarations 
     629      INTEGER, DIMENSION(kobsno), INTENT(inout) ::   kobsqc    ! Quality control flag 
     630      INTEGER, DIMENSION(kobsno), INTENT(  out) ::   kobsstp   ! Number of time steps up to the observation time 
     631      ! 
    641632      INTEGER :: jyea 
    642633      INTEGER :: jmon 
     
    661652 
    662653      ! Intialize the number of time steps per day 
    663       idaystp = NINT( rday / rdt ) 
     654      idaystp = NINT( rday / rn_Dt ) 
    664655 
    665656      !--------------------------------------------------------------------- 
     
    731722 
    732723         ! Add in the number of time steps to the observation minute 
    733          zminstp = rmmss / rdt 
     724         zminstp = rmmss / rn_Dt 
    734725         zhoustp = rhhmm * zminstp 
    735726 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/fldread.F90

    r9807 r9923  
    180180      ! Note that shifting time to be centrered in the middle of sbc time step impacts only nsec_* variables of the calendar  
    181181      IF( present(kit) ) THEN   ! ignore kn_fsbc in this case 
    182          isecsbc = nsec_year + nsec1jan000 + (kit+it_offset)*NINT( rdt/REAL(nn_baro,wp) ) 
     182         isecsbc = nsec_year + nsec1jan000 + (kit+it_offset)*NINT( rn_Dt/REAL(nn_e,wp) ) 
    183183      ELSE                      ! middle of sbc time step 
    184          isecsbc = nsec_year + nsec1jan000 + NINT(0.5 * REAL(kn_fsbc - 1,wp) * rdt) + it_offset * NINT(rdt) 
     184         isecsbc = nsec_year + nsec1jan000 + NINT(0.5 * REAL(kn_fsbc - 1,wp) * rn_Dt) + it_offset * NINT(rn_Dt) 
    185185      ENDIF 
    186186      imf = SIZE( sd ) 
     
    213213               CALL fld_rec( kn_fsbc, sd(jf), kt_offset = it_offset, kit = kit )    ! update after record informations 
    214214 
    215                ! if kn_fsbc*rdt is larger than nfreqh (which is kind of odd), 
     215               ! if kn_fsbc*rn_Dt is larger than nfreqh (which is kind of odd), 
    216216               ! it is possible that the before value is no more the good one... we have to re-read it 
    217217               ! if before is not the last record of the file currently opened and after is the first record to be read 
     
    234234               IF( sd(jf)%ln_tint ) THEN 
    235235                   
    236                   ! if kn_fsbc*rdt is larger than nfreqh (which is kind of odd), 
     236                  ! if kn_fsbc*rn_Dt is larger than nfreqh (which is kind of odd), 
    237237                  ! it is possible that the before value is no more the good one... we have to re-read it 
    238238                  ! if before record is not just just before the after record... 
     
    267267                     ! year/month/week/day file to be not present. If the run continue further than the current 
    268268                     ! year/month/week/day, next year/month/week/day file must exist 
    269                      isecend = nsec_year + nsec1jan000 + (nitend - kt) * NINT(rdt)   ! second at the end of the run 
    270                      llstop = isecend > sd(jf)%nrec_a(2)                                   ! read more than 1 record of next year 
     269                     isecend = nsec_year + nsec1jan000 + (nitend - kt) * NINT(rn_Dt)   ! second at the end of the run 
     270                     llstop = isecend > sd(jf)%nrec_a(2)                                ! read more than 1 record of next year 
    271271                     ! we suppose that the date of next file is next day (should be ok even for weekly files...) 
    272272                     CALL fld_clopn( sd(jf), nyear  + COUNT((/llnxtyr /))                                           ,         & 
     
    485485      ENDIF 
    486486      IF( PRESENT(kt_offset) )   it_offset = kt_offset 
    487       IF( PRESENT(kit) ) THEN   ;   it_offset = ( kit + it_offset ) * NINT( rdt/REAL(nn_baro,wp) ) 
    488       ELSE                      ;   it_offset =         it_offset   * NINT(       rdt            ) 
     487      IF( PRESENT(kit) ) THEN   ;   it_offset = ( kit + it_offset ) * NINT( rn_Dt / REAL(nn_e,wp) ) 
     488      ELSE                      ;   it_offset =         it_offset   * NINT( rn_Dt                 ) 
    489489      ENDIF 
    490490      ! 
     
    563563         ELSE                                           ;   ztmp = REAL(nsec_year ,wp)  ! since 00h on Jan 1 of the current year 
    564564         ENDIF 
    565          ztmp = ztmp + 0.5 * REAL(kn_fsbc - 1, wp) * rdt + REAL( it_offset, wp )        ! centrered in the middle of sbc time step 
    566          ztmp = ztmp + 0.01 * rdt                                                       ! avoid truncation error  
     565         ztmp = ztmp + 0.5 * REAL(kn_fsbc - 1, wp) * rn_Dt + REAL( it_offset, wp )      ! centrered in the middle of sbc time step 
     566         ztmp = ztmp + 0.01 * rn_Dt                                                     ! avoid truncation error  
    567567         IF( sdjf%ln_tint ) THEN                ! time interpolation, shift by 1/2 record 
    568568            ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcapr.F90

    r9598 r9923  
    3636    
    3737   REAL(wp) ::   tarea                ! whole domain mean masked ocean surface 
    38    REAL(wp) ::   r1_grau              ! = 1.e0 / (grav * rau0) 
     38   REAL(wp) ::   r1_rhog              ! = 1 / (rho0*grav) 
    3939    
    4040   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_apr   ! structure of input fields (file informations, fields read) 
     
    100100      ENDIF 
    101101      ! 
    102       r1_grau = 1.e0 / (grav * rau0)               !* constant for optimization 
     102      r1_rhog = 1._wp / (rho0*grav)                !* constant for optimization 
    103103      ! 
    104104      !                                            !* control check 
     
    144144         ! 
    145145         !                                                  !* Patm related forcing at kt 
    146          ssh_ib(:,:) = - ( sf_apr(1)%fnow(:,:,1) - rn_pref ) * r1_grau    ! equivalent ssh (inverse barometer) 
     146         ssh_ib(:,:) = - ( sf_apr(1)%fnow(:,:,1) - rn_pref ) * r1_rhog    ! equivalent ssh (inverse barometer) 
    147147         apr   (:,:) =     sf_apr(1)%fnow(:,:,1)                        ! atmospheric pressure 
    148148         ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcblk.F90

    r9767 r9923  
    225225         ALLOCATE( sf(ifpr)%fnow(jpi,jpj,1) ) 
    226226         IF( slf_i(ifpr)%ln_tint )   ALLOCATE( sf(ifpr)%fdta(jpi,jpj,1,2) ) 
    227          IF( slf_i(ifpr)%nfreqh > 0. .AND. MOD( 3600. * slf_i(ifpr)%nfreqh , REAL(nn_fsbc) * rdt) /= 0. )   & 
    228             &  CALL ctl_warn( 'sbc_blk_init: sbcmod timestep rdt*nn_fsbc is NOT a submultiple of atmospheric forcing frequency.',   & 
    229             &                 '               This is not ideal. You should consider changing either rdt or nn_fsbc value...' ) 
     227         IF( slf_i(ifpr)%nfreqh > 0. .AND. MOD( 3600. * slf_i(ifpr)%nfreqh , REAL(nn_fsbc) * rn_Dt) /= 0. )   & 
     228            &  CALL ctl_warn( 'sbc_blk_init: sbcmod timestep rn_Dt*nn_fsbc is NOT a submultiple of atmos. forcing frequency.',   & 
     229            &                 '               This is not ideal. You should consider changing either rn_Dt or nn_fsbc value...' ) 
    230230 
    231231      END DO 
     
    323323      ! 
    324324      !                                            ! compute the surface ocean fluxes using bulk formulea 
    325       IF( MOD( kt - 1, nn_fsbc ) == 0 )   CALL blk_oce( kt, sf, sst_m, ssu_m, ssv_m ) 
     325      IF( MOD( kt-1, nn_fsbc ) == 0 )   CALL blk_oce( kt, sf, sst_m, ssu_m, ssv_m ) 
    326326 
    327327#if defined key_cice 
    328       IF( MOD( kt - 1, nn_fsbc ) == 0 )   THEN 
     328      IF( MOD( kt-1, nn_fsbc ) == 0 )   THEN 
    329329         qlw_ice(:,:,1)   = sf(jp_qlw )%fnow(:,:,1) 
    330330         IF( ln_dm2dc ) THEN ; qsr_ice(:,:,1) = sbc_dcy( sf(jp_qsr)%fnow(:,:,1) ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbccpl.F90

    r9767 r9923  
    193193 
    194194   REAL(wp) ::   rpref = 101000._wp   ! reference atmospheric pressure[N/m2]  
    195    REAL(wp) ::   r1_grau              ! = 1.e0 / (grav * rau0)  
     195   REAL(wp) ::   r1_rhog              ! = 1 / (rho0*grav)  
    196196 
    197197   INTEGER , ALLOCATABLE, SAVE, DIMENSION(:) ::   nrcvinfo           ! OASIS info argument 
     
    11001100      LOGICAL  ::   llnewtx, llnewtau      ! update wind stress components and module?? 
    11011101      INTEGER  ::   ji, jj, jn             ! dummy loop indices 
    1102       INTEGER  ::   isec                   ! number of seconds since nit000 (assuming rdt did not change since nit000) 
     1102      INTEGER  ::   isec                   ! number of seconds since nit000 (assuming rn_Dt did not change since nit000) 
    11031103      REAL(wp) ::   zcumulneg, zcumulpos   ! temporary scalars      
    11041104      REAL(wp) ::   zcoef                  ! temporary scalar 
     
    11141114      !                                                      ! Receive all the atmos. fields (including ice information) 
    11151115      !                                                      ! ======================================================= ! 
    1116       isec = ( kt - nit000 ) * NINT( rdt )                      ! date of exchanges 
     1116      isec = ( kt - nit000 ) * NINT( rn_Dt )                   ! date of exchanges 
    11171117      DO jn = 1, jprcv                                          ! received fields sent by the atmosphere 
    11181118         IF( srcv(jn)%laction )   CALL cpl_rcv( jn, isec, frcv(jn)%z3, xcplmask(:,:,1:nn_cplmodel), nrcvinfo(jn) ) 
     
    12591259          IF( kt /= nit000 )   ssh_ibb(:,:) = ssh_ib(:,:)    !* Swap of ssh_ib fields  
    12601260 
    1261           r1_grau = 1.e0 / (grav * rau0)               !* constant for optimization  
    1262           ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rpref ) * r1_grau    ! equivalent ssh (inverse barometer)  
     1261          r1_rhog = 1.e0 / (grav * rho0)               !* constant for optimization  
     1262          ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rpref ) * r1_rhog    ! equivalent ssh (inverse barometer)  
    12631263          apr   (:,:) =     frcv(jpr_mslp)%z3(:,:,1)                         !atmospheric pressure  
    12641264     
     
    20472047      !!---------------------------------------------------------------------- 
    20482048      ! 
    2049       isec = ( kt - nit000 ) * NINT( rdt )        ! date of exchanges 
     2049      isec = ( kt - nit000 ) * NINT( rn_Dt )        ! date of exchanges 
    20502050 
    20512051      zfr_l(:,:) = 1.- fr_i(:,:) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcdcy.F90

    r9598 r9923  
    8888 
    8989      ! When are we during the day (from 0 to 1) 
    90       zlo = ( REAL(nsec_day, wp) - 0.5_wp * rdt ) / rday 
    91       zup = zlo + ( REAL(nn_fsbc, wp)     * rdt ) / rday 
     90      zlo = ( REAL(nsec_day, wp) - 0.5_wp * rn_Dt ) / rday 
     91      zup = zlo + ( REAL(nn_fsbc, wp)     * rn_Dt ) / rday 
    9292      !                                           
    9393      IF( nday_qsr == -1 ) THEN       ! first time step only   
     
    187187         END DO   
    188188         ! 
    189          ztmp = rday / ( rdt * REAL(nn_fsbc, wp) ) 
     189         ztmp = rday / ( rn_Dt * REAL(nn_fsbc, wp) ) 
    190190         rscal(:,:) = rscal(:,:) * ztmp 
    191191         ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcfwb.F90

    r9598 r9923  
    123123         ENDIF    
    124124         !                                         ! Update fwfold if new year start 
    125          ikty = 365 * 86400 / rdt                  !!bug  use of 365 days leap year or 360d year !!!!!!! 
     125         ikty = 365 * 86400 / rn_Dt         !!bug  use of 365 days leap year or 360d year !!!!!!! 
    126126         IF( MOD( kt, ikty ) == 0 ) THEN 
    127127            a_fwb_b = a_fwb                           ! mean sea level taking into account the ice+snow 
    128128                                                      ! sum over the global domain 
    129             a_fwb   = glob_sum( e1e2t(:,:) * ( sshn(:,:) + snwice_mass(:,:) * r1_rau0 ) ) 
     129            a_fwb   = glob_sum( e1e2t(:,:) * ( sshn(:,:) + snwice_mass(:,:) * r1_rho0 ) ) 
    130130            a_fwb   = a_fwb * 1.e+3 / ( area * rday * 365. )     ! convert in Kg/m3/s = mm/s 
    131131!!gm        !                                                      !!bug 365d year  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcice_cice.F90

    r9598 r9923  
    1313   USE dom_oce         ! ocean space and time domain 
    1414   USE domvvl 
    15    USE phycst, only : rcp, rau0, r1_rau0, rhosn, rhoic 
     15   USE phycst   , ONLY : rcp, rho0, r1_rho0, rhosn, rhoic 
    1616   USE in_out_manager  ! I/O manager 
    1717   USE iom, ONLY : iom_put,iom_use              ! I/O manager library !!Joakim edit 
     
    227227      IF( .NOT.ln_rstart ) THEN 
    228228         IF( ln_ice_embd ) THEN            ! embedded sea-ice: deplete the initial ssh below sea-ice area 
    229             sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 
    230             sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 
     229            sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rho0 
     230            sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rho0 
    231231 
    232232!!gm This should be put elsewhere....   (same remark for limsbc) 
     
    422422! Freezing/melting potential 
    423423! Calculated over NEMO leapfrog timestep (hence 2*dt) 
    424       nfrzmlt(:,:) = rau0 * rcp * e3t_m(:,:) * ( Tocnfrz-sst_m(:,:) ) / ( 2.0*dt ) 
     424      nfrzmlt(:,:) = rho0 * rcp * e3t_m(:,:) * ( Tocnfrz-sst_m(:,:) ) / ( 2.0*dt ) 
    425425 
    426426      ztmp(:,:) = nfrzmlt(:,:) 
     
    459459         zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 
    460460          ! 
    461          zpice(:,:) = ssh_m(:,:) + (  zintn * snwice_mass(:,:) +  zintb * snwice_mass_b(:,:)  ) * r1_rau0 
     461         zpice(:,:) = ssh_m(:,:) + (  zintn * snwice_mass(:,:) +  zintb * snwice_mass_b(:,:)  ) * r1_rho0 
    462462          ! 
    463463         ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcisf.F90

    r9728 r9923  
    5454   REAL(wp), PUBLIC, SAVE ::   rcpi     = 2000.0_wp     !: specific heat of ice shelf             [J/kg/K] 
    5555   REAL(wp), PUBLIC, SAVE ::   rkappa   = 1.54e-6_wp    !: heat diffusivity through the ice-shelf [m2/s] 
    56    REAL(wp), PUBLIC, SAVE ::   rhoisf   = 920.0_wp      !: volumic mass of ice shelf              [kg/m3] 
     56   REAL(wp), PUBLIC, SAVE ::   rho_isf  = 920.0_wp      !: volumic mass of ice shelf              [kg/m3] 
    5757   REAL(wp), PUBLIC, SAVE ::   tsurf    = -20.0_wp      !: air temperature on top of ice shelf    [C] 
    5858   REAL(wp), PUBLIC, SAVE ::   rlfusisf = 0.334e6_wp    !: latent heat of fusion of ice shelf     [J/kg] 
     
    144144         ! compute tsc due to isf 
    145145         ! isf melting implemented as a volume flux and we assume that melt water is at 0 PSU. 
    146          ! WARNING water add at temp = 0C, need to add a correction term (fwfisf * tfreez / rau0). 
     146         ! WARNING water add at temp = 0C, need to add a correction term (fwfisf * tfreez / rho0). 
    147147         ! compute freezing point beneath ice shelf (or top cell if nn_isf = 3) 
    148148         DO jj = 1,jpj 
     
    153153         CALL eos_fzp( stbl(:,:), zt_frz(:,:), zdep(:,:) ) 
    154154          
    155          risf_tsc(:,:,jp_tem) = qisf(:,:) * r1_rau0_rcp - fwfisf(:,:) * zt_frz(:,:) * r1_rau0 ! 
     155         risf_tsc(:,:,jp_tem) = qisf(:,:) * r1_rho0_rcp - fwfisf(:,:) * zt_frz(:,:) * r1_rho0 ! 
    156156         risf_tsc(:,:,jp_sal) = 0.0_wp 
    157157 
     
    160160         ! output 
    161161         IF( iom_use('iceshelf_cea') )   CALL iom_put( 'iceshelf_cea', -fwfisf(:,:)                      )   ! isf mass flux 
    162          IF( iom_use('hflx_isf_cea') )   CALL iom_put( 'hflx_isf_cea', risf_tsc(:,:,jp_tem) * rau0 * rcp )   ! isf sensible+latent heat (W/m2) 
     162         IF( iom_use('hflx_isf_cea') )   CALL iom_put( 'hflx_isf_cea', risf_tsc(:,:,jp_tem) * rho0 * rcp )   ! isf sensible+latent heat (W/m2) 
    163163         IF( iom_use('qlatisf' ) )       CALL iom_put( 'qlatisf'     , qisf(:,:)                         )   ! isf latent heat 
    164164         IF( iom_use('fwfisf'  ) )       CALL iom_put( 'fwfisf'      , fwfisf(:,:)                       )   ! isf mass flux (opposite sign) 
     
    452452               ! 2. ------------Net heat flux and fresh water flux due to the ice shelf 
    453453               ! For those corresponding to zonal boundary     
    454                qisf(ji,jj) = - rau0 * rcp * rn_gammat0 * risfLeff(ji,jj) * e1t(ji,jj) * zt_ave  & 
     454               qisf(ji,jj) = - rho0 * rcp * rn_gammat0 * risfLeff(ji,jj) * e1t(ji,jj) * zt_ave  & 
    455455                           & * r1_e1e2t(ji,jj) * tmask(ji,jj,jk) 
    456456              
     
    500500         zlamb1 =-0.0564_wp 
    501501         zlamb2 = 0.0773_wp 
    502          zlamb3 =-7.8633e-8 * grav * rau0 
     502         zlamb3 =-7.8633e-8 * grav * rho0 
    503503      ELSE                  ! linearisation from table 4 (Asay-Davis et al., 2015) 
    504504         zlamb1 =-0.0573_wp 
    505505         zlamb2 = 0.0832_wp 
    506          zlamb3 =-7.53e-8 * grav * rau0 
     506         zlamb3 =-7.53e-8 * grav * rho0 
    507507      ENDIF 
    508508      ! 
     
    526526            DO jj = 1, jpj 
    527527               DO ji = 1, jpi 
    528                   zhtflx(ji,jj) =   zgammat(ji,jj)*rcp*rau0*(ttbl(ji,jj)-zfrz(ji,jj)) 
     528                  zhtflx(ji,jj) =   zgammat(ji,jj)*rcp*rho0*(ttbl(ji,jj)-zfrz(ji,jj)) 
    529529                  zfwflx(ji,jj) = - zhtflx(ji,jj)/rlfusisf 
    530530               END DO 
     
    544544               DO ji = 1, jpi 
    545545                  ! compute coeficient to solve the 2nd order equation 
    546                   zeps1 = rcp*rau0*zgammat(ji,jj) 
    547                   zeps2 = rlfusisf*rau0*zgammas(ji,jj) 
    548                   zeps3 = rhoisf*rcpi*rkappa/MAX(risfdep(ji,jj),zeps) 
     546                  zeps1 = rcp*rho0*zgammat(ji,jj) 
     547                  zeps2 = rlfusisf*rho0*zgammas(ji,jj) 
     548                  zeps3 = rho_isf*rcpi*rkappa/MAX(risfdep(ji,jj),zeps) 
    549549                  zeps4 = zlamb2+zlamb3*risfdep(ji,jj) 
    550550                  zeps6 = zeps4-ttbl(ji,jj) 
     
    567567                  ! zhtflx is upward heat flux (out of ocean) 
    568568                  ! compute the upward water and heat flux (eq. 28 and eq. 29) 
    569                   zfwflx(ji,jj) = rau0 * zgammas(ji,jj) * (zsfrz-stbl(ji,jj)) / MAX(zsfrz,zeps) 
    570                   zhtflx(ji,jj) = zgammat(ji,jj) * rau0 * rcp * (ttbl(ji,jj) - zfrz(ji,jj) )  
     569                  zfwflx(ji,jj) = rho0 * zgammas(ji,jj) * (zsfrz-stbl(ji,jj)) / MAX(zsfrz,zeps) 
     570                  zhtflx(ji,jj) = zgammat(ji,jj) * rho0 * rcp * (ttbl(ji,jj) - zfrz(ji,jj) )  
    571571               END DO 
    572572            END DO 
     
    890890               DO jk = ikt, ikb - 1 
    891891                  phdivn(ji,jj,jk) = phdivn(ji,jj,jk) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj) ) & 
    892                     &              * r1_hisf_tbl(ji,jj) * r1_rau0 * zfact 
     892                    &              * r1_hisf_tbl(ji,jj) * r1_rho0 * zfact 
    893893               END DO 
    894894               ! level partially include in ice shelf boundary layer  
    895895               phdivn(ji,jj,ikb) = phdivn(ji,jj,ikb) + ( fwfisf(ji,jj) & 
    896                     &            + fwfisf_b(ji,jj) ) * r1_hisf_tbl(ji,jj) * r1_rau0 * zfact * ralpha(ji,jj)  
     896                    &            + fwfisf_b(ji,jj) ) * r1_hisf_tbl(ji,jj) * r1_rho0 * zfact * ralpha(ji,jj)  
    897897         END DO 
    898898      END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcmod.F90

    r9656 r9923  
    177177      ! 
    178178      IF( .NOT.ln_usr ) THEN     ! the model calendar needs some specificities (except in user defined case) 
    179          IF( MOD( rday , rdt ) /= 0. )   CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 
    180          IF( MOD( rday , 2.  ) /= 0. )   CALL ctl_stop( 'the number of second of in a day must be an even number'    ) 
    181          IF( MOD( rdt  , 2.  ) /= 0. )   CALL ctl_stop( 'the time step (in second) must be an even number'           ) 
     179         IF( MOD( rday  , rn_Dt ) /= 0. )   CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 
     180         IF( MOD( rday  ,  2.  ) /= 0. )   CALL ctl_stop( 'the number of second of in a day must be an even number'    ) 
     181         IF( MOD( rn_Dt,   2.   ) /= 0. )   CALL ctl_stop( 'the time step (in second) must be an even number'           ) 
    182182      ENDIF 
    183183      !                       !**  check option consistency 
     
    288288      !     SAS time-step has to be declared in OASIS (mandatory) -> nn_fsbc has to be modified accordingly 
    289289      IF( nn_components /= jp_iam_nemo ) THEN 
    290          IF( nn_components == jp_iam_opa )   nn_fsbc = cpl_freq('O_SFLX') / NINT(rdt) 
    291          IF( nn_components == jp_iam_sas )   nn_fsbc = cpl_freq('I_SFLX') / NINT(rdt) 
     290         IF( nn_components == jp_iam_opa )   nn_fsbc = cpl_freq('O_SFLX') / NINT(rn_Dt) 
     291         IF( nn_components == jp_iam_sas )   nn_fsbc = cpl_freq('I_SFLX') / NINT(rn_Dt) 
    292292         ! 
    293293         IF(lwp)THEN 
     
    306306      ENDIF 
    307307      ! 
    308       IF( MOD( rday, REAL(nn_fsbc, wp) * rdt ) /= 0 )   & 
     308      IF( MOD( rday, REAL(nn_fsbc, wp) * rn_Dt ) /= 0 )   & 
    309309         &  CALL ctl_warn( 'sbc_init : nn_fsbc is NOT a multiple of the number of time steps in a day' ) 
    310310      ! 
    311       IF( ln_dm2dc .AND. NINT(rday) / ( nn_fsbc * NINT(rdt) ) < 8  )   & 
     311      IF( ln_dm2dc .AND. NINT(rday) / ( nn_fsbc * NINT(rn_Dt) ) < 8  )   & 
    312312         &   CALL ctl_warn( 'sbc_init : diurnal cycle for qsr: the sampling of the diurnal cycle is too small...' ) 
    313313      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcrnf.F90

    r9727 r9923  
    116116      IF(   ln_rnf_sal   )   CALL fld_read ( kt, nn_fsbc, sf_s_rnf )    ! idem for runoffs salinity    if required 
    117117      ! 
    118       IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN 
     118      IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN 
    119119         ! 
    120120         IF( .NOT. l_rnfcpl )   rnf(:,:) = rn_rfact * ( sf_rnf(1)%fnow(:,:,1) ) * tmask(:,:,1)       ! updated runoff value at time step kt 
     
    122122         !                                                           ! set temperature & salinity content of runoffs 
    123123         IF( ln_rnf_tem ) THEN                                       ! use runoffs temperature data 
    124             rnf_tsc(:,:,jp_tem) = ( sf_t_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rau0 
     124            rnf_tsc(:,:,jp_tem) = ( sf_t_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rho0 
    125125            CALL eos_fzp( sss_m(:,:), ztfrz(:,:) ) 
    126126            WHERE( sf_t_rnf(1)%fnow(:,:,1) == -999._wp )             ! if missing data value use SST as runoffs temperature 
    127                rnf_tsc(:,:,jp_tem) = sst_m(:,:) * rnf(:,:) * r1_rau0 
     127               rnf_tsc(:,:,jp_tem) = sst_m(:,:) * rnf(:,:) * r1_rho0 
    128128            END WHERE 
    129129            WHERE( sf_t_rnf(1)%fnow(:,:,1) == -222._wp )             ! where fwf comes from melting of ice shelves or iceberg 
    130                rnf_tsc(:,:,jp_tem) = ztfrz(:,:) * rnf(:,:) * r1_rau0 - rnf(:,:) * rlfusisf * r1_rau0_rcp 
     130               rnf_tsc(:,:,jp_tem) = ztfrz(:,:) * rnf(:,:) * r1_rho0 - rnf(:,:) * rlfusisf * r1_rho0_rcp 
    131131            END WHERE 
    132132         ELSE                                                        ! use SST as runoffs temperature 
    133133            !CEOD River is fresh water so must at least be 0 unless we consider ice 
    134             rnf_tsc(:,:,jp_tem) = MAX(sst_m(:,:),0.0_wp) * rnf(:,:) * r1_rau0 
     134            rnf_tsc(:,:,jp_tem) = MAX(sst_m(:,:),0.0_wp) * rnf(:,:) * r1_rho0 
    135135         ENDIF 
    136136         !                                                           ! use runoffs salinity data 
    137          IF( ln_rnf_sal )   rnf_tsc(:,:,jp_sal) = ( sf_s_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rau0 
     137         IF( ln_rnf_sal )   rnf_tsc(:,:,jp_sal) = ( sf_s_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rho0 
    138138         !                                                           ! else use S=0 for runoffs (done one for all in the init) 
    139139         IF( iom_use('runoffs') )        CALL iom_put( 'runoffs'     , rnf(:,:)                         )   ! output runoff mass flux 
    140          IF( iom_use('hflx_rnf_cea') )   CALL iom_put( 'hflx_rnf_cea', rnf_tsc(:,:,jp_tem) * rau0 * rcp )   ! output runoff sensible heat (W/m2) 
     140         IF( iom_use('hflx_rnf_cea') )   CALL iom_put( 'hflx_rnf_cea', rnf_tsc(:,:,jp_tem) * rho0 * rcp )   ! output runoff sensible heat (W/m2) 
    141141      ENDIF 
    142142      ! 
     
    198198               DO ji = 1, jpi 
    199199                  DO jk = 1, nk_rnf(ji,jj) 
    200                      phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rau0 / h_rnf(ji,jj) 
     200                     phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / h_rnf(ji,jj) 
    201201                  END DO 
    202202               END DO 
     
    211211                  !                          ! apply the runoff input flow 
    212212                  DO jk = 1, nk_rnf(ji,jj) 
    213                      phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rau0 / h_rnf(ji,jj) 
     213                     phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / h_rnf(ji,jj) 
    214214                  END DO 
    215215               END DO 
     
    218218      ELSE                       !==   runoff put only at the surface   ==! 
    219219         h_rnf (:,:)   = e3t_n (:,:,1)        ! update h_rnf to be depth of top box 
    220          phdivn(:,:,1) = phdivn(:,:,1) - ( rnf(:,:) + rnf_b(:,:) ) * zfact * r1_rau0 / e3t_n(:,:,1) 
     220         phdivn(:,:,1) = phdivn(:,:,1) - ( rnf(:,:) + rnf_b(:,:) ) * zfact * r1_rho0 / e3t_n(:,:,1) 
    221221      ENDIF 
    222222      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbcssm.F90

    r9598 r9923  
    106106            frq_m(:,:) = zcoef * fraqsr_1lev(:,:) 
    107107            !                                             ! ---------------------------------------- ! 
    108          ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN      !   Initialisation: New mean computation   ! 
     108         ELSEIF( MOD( kt-2, nn_fsbc ) == 0 ) THEN         !   Initialisation: New mean computation   ! 
    109109            !                                             ! ---------------------------------------- ! 
    110110            ssu_m(:,:) = 0._wp     ! reset to zero ocean mean sbc fields 
     
    135135 
    136136         !                                                ! ---------------------------------------- ! 
    137          IF( MOD( kt - 1 , nn_fsbc ) == 0 ) THEN          !   Mean value at each nn_fsbc time-step   ! 
     137         IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN             !   Mean value at each nn_fsbc time-step   ! 
    138138            !                                             ! ---------------------------------------- ! 
    139139            zcoef = 1. / REAL( nn_fsbc, wp ) 
     
    263263         CALL iom_set_rstw_var_active('frq_m') 
    264264      ENDIF 
    265  
     265      ! 
    266266   END SUBROUTINE sbc_ssm_init 
    267267 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/sbctide.F90

    r9598 r9923  
    4848      !!---------------------------------------------------------------------- 
    4949       
    50       IF( nsec_day == NINT(0.5_wp * rdt) .OR. kt == nit000 ) THEN      ! start a new day 
     50      IF( nsec_day == NINT(0.5_wp * rn_Dt) .OR. kt == nit000 ) THEN      ! start a new day 
    5151         ! 
    5252         IF( kt == nit000 )THEN 
     
    7272         ! Temporarily set nsec_day to beginning of day. 
    7373         nsec_day_orig = nsec_day 
    74          IF ( nsec_day /= NINT(0.5_wp * rdt) ) THEN  
    75             kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt 
    76             nsec_day = NINT(0.5_wp * rdt) 
     74         IF ( nsec_day /= NINT(0.5_wp * rn_Dt) ) THEN  
     75            kt_tide = kt - (nsec_day - 0.5_wp * rn_Dt) / rn_Dt 
     76            nsec_day = NINT(0.5_wp * rn_Dt) 
    7777         ELSE 
    7878            kt_tide = kt  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/tideini.F90

    r9598 r9923  
    2020   PUBLIC 
    2121 
    22    REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   omega_tide   !: 
    23    REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   v0tide       !: 
    24    REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   utide        !: 
    25    REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ftide        !: 
     22   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   omega_tide   !:  
     23   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   v0tide       !:  
     24   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   utide        !:  
     25   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ftide        !:  
    2626 
    27    LOGICAL , PUBLIC ::   ln_tide         !: 
    28    LOGICAL , PUBLIC ::   ln_tide_pot     !: 
    29    LOGICAL , PUBLIC ::   ln_read_load    !: 
    30    LOGICAL , PUBLIC ::   ln_scal_load    !: 
    31    LOGICAL , PUBLIC ::   ln_tide_ramp    !: 
    32    INTEGER , PUBLIC ::   nb_harmo        !: 
    33    INTEGER , PUBLIC ::   kt_tide         !: 
    34    REAL(wp), PUBLIC ::   rdttideramp     !: 
    35    REAL(wp), PUBLIC ::   rn_scal_load    !: 
    36    CHARACTER(lc), PUBLIC ::   cn_tide_load   !:  
     27   !                                        !!* nam_tide namelist * 
     28   LOGICAL , PUBLIC ::   ln_tide             !: Use tidal components 
     29   LOGICAL , PUBLIC ::   ln_tide_pot         !: Apply astronomical potential 
     30   LOGICAL , PUBLIC ::   ln_read_load        !: Read load potential from file 
     31   CHARACTER(lc), PUBLIC ::   cn_tide_load      !: associated file name 
     32   LOGICAL , PUBLIC ::   ln_scal_load        !: Use a scalar approximation for load potential 
     33   REAL(wp), PUBLIC ::      rn_load             !: SSH fraction used in scalar approximation 
     34   LOGICAL , PUBLIC ::   ln_tide_ramp        !: Apply ramp on tides at startup 
     35   REAL(wp), PUBLIC ::      rn_ramp             !: Duration of ramp [days] 
     36   INTEGER , PUBLIC ::   nb_harmo            !: number of tidal harmonique used 
     37   INTEGER , PUBLIC ::   kt_tide             !: ??? 
    3738 
    38    INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !: 
     39   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !: ??? 
    3940 
    4041   !!---------------------------------------------------------------------- 
     
    5253      CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname 
    5354      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    54       ! 
     55      !! 
    5556      NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_scal_load, ln_read_load, cn_tide_load, & 
    56                   &     ln_tide_ramp, rn_scal_load, rdttideramp, clname 
     57                  &     ln_tide_ramp, rn_load, rn_ramp, clname 
    5758      !!---------------------------------------------------------------------- 
    5859      ! 
     
    7677            WRITE(numout,*) '         Apply astronomical potential            ln_tide_pot  = ', ln_tide_pot 
    7778            WRITE(numout,*) '         Use scalar approx. for load potential   ln_scal_load = ', ln_scal_load 
     79            WRITE(numout,*) '            SSH fraction used in scal. approx.      rn_load   = ', rn_load 
    7880            WRITE(numout,*) '         Read load potential from file           ln_read_load = ', ln_read_load 
    7981            WRITE(numout,*) '         Apply ramp on tides at startup          ln_tide_ramp = ', ln_tide_ramp 
    80             WRITE(numout,*) '         Fraction of SSH used in scal. approx.   rn_scal_load = ', rn_scal_load 
    81             WRITE(numout,*) '         Duration (days) of ramp                 rdttideramp  = ', rdttideramp 
     82            WRITE(numout,*) '         Duration of ramp                           rn_ramp   = ', rn_ramp, ' [days]' 
    8283         ENDIF 
    8384      ELSE 
    84          rn_scal_load = 0._wp  
    85  
     85         rn_load = 0._wp  
     86         ! 
    8687         IF(lwp) WRITE(numout,*) 
    8788         IF(lwp) WRITE(numout,*) 'tide_init : tidal components not used (ln_tide = F)' 
     
    9293      CALL tide_init_Wave 
    9394      ! 
    94       nb_harmo=0 
     95      nb_harmo = 0 
    9596      DO jk = 1, jpmax_harmo 
    9697         DO ji = 1,jpmax_harmo 
     
    108109      IF( ln_scal_load.AND.ln_read_load ) & 
    109110          &   CALL ctl_stop('Choose between ln_scal_load and ln_read_load') 
    110       IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   & 
    111          &   CALL ctl_stop('rdttideramp must be lower than run duration') 
    112       IF( ln_tide_ramp.AND.(rdttideramp<0.) ) & 
    113          &   CALL ctl_stop('rdttideramp must be positive') 
     111      IF( ln_tide_ramp.AND.((nitend-nit000+1)*rn_Dt/rday < rn_ramp) )   & 
     112         &   CALL ctl_stop('rn_ramp must be lower than run duration') 
     113      IF( ln_tide_ramp.AND.(rn_ramp<0.) ) & 
     114         &   CALL ctl_stop('rn_ramp must be positive') 
    114115      ! 
    115116      ALLOCATE( ntide(nb_harmo) ) 
     
    123124      END DO 
    124125      ! 
    125       ALLOCATE( omega_tide(nb_harmo), v0tide    (nb_harmo),   & 
    126          &      utide     (nb_harmo), ftide     (nb_harmo)  ) 
     126      ALLOCATE( omega_tide(nb_harmo), v0tide(nb_harmo),   & 
     127         &      utide     (nb_harmo), ftide (nb_harmo)  ) 
    127128      kt_tide = nit000 
    128129      ! 
    129       IF (.NOT.ln_scal_load ) rn_scal_load = 0._wp 
     130      IF (.NOT.ln_scal_load )   rn_load = 0._wp 
    130131      ! 
    131132   END SUBROUTINE tide_init 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/SBC/updtide.F90

    r9598 r9923  
    66   !! History :  9.0  !  07  (O. Le Galloudec)  Original code 
    77   !!---------------------------------------------------------------------- 
    8    !!   upd_tide       : update tidal potential 
     8 
    99   !!---------------------------------------------------------------------- 
    10    USE oce             ! ocean dynamics and tracers variables 
    11    USE dom_oce         ! ocean space and time domain 
    12    USE in_out_manager  ! I/O units 
    13    USE phycst          ! physical constant 
    14    USE sbctide         ! tide potential variable 
    15    USE tideini, ONLY: ln_tide_ramp, rdttideramp 
     10   !!   upd_tide      : update tidal potential 
     11   !!---------------------------------------------------------------------- 
     12   USE oce            ! ocean dynamics and tracers variables 
     13   USE dom_oce        ! ocean space and time domain 
     14   USE in_out_manager ! I/O units 
     15   USE phycst         ! physical constant 
     16   USE sbctide        ! tide potential variable 
     17   USE tideini , ONLY : ln_tide_ramp, rn_ramp 
    1618 
    1719   IMPLICIT NONE 
     
    3739      !! ** Action  :   pot_astro   actronomical potential 
    3840      !!----------------------------------------------------------------------       
    39       INTEGER, INTENT(in)           ::   kt      ! ocean time-step index 
    40       INTEGER, INTENT(in), OPTIONAL ::   kit     ! external mode sub-time-step index (lk_dynspg_ts=T) 
    41       INTEGER, INTENT(in), OPTIONAL ::   time_offset ! time offset in number  
    42                                                      ! of internal steps             (lk_dynspg_ts=F) 
    43                                                      ! of external steps             (lk_dynspg_ts=T) 
     41      INTEGER, INTENT(in)           ::   kt          ! ocean time-step index 
     42      INTEGER, INTENT(in), OPTIONAL ::   kit         ! external mode sub-time-step index (lk_dynspg_ts=T) 
     43      INTEGER, INTENT(in), OPTIONAL ::   time_offset ! time offset in number  of internal steps (lk_dynspg_ts=F) 
     44      !                                              !                        of external steps (lk_dynspg_ts=T) 
    4445      ! 
     46      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    4547      INTEGER  ::   joffset      ! local integer 
    46       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    4748      REAL(wp) ::   zt, zramp    ! local scalar 
    4849      REAL(wp), DIMENSION(nb_harmo) ::   zwt  
     
    5051      ! 
    5152      !                               ! tide pulsation at model time step (or sub-time-step) 
    52       zt = ( kt - kt_tide ) * rdt 
     53      zt = ( kt - kt_tide ) * rn_Dt 
    5354      ! 
    5455      joffset = 0 
     
    5657      ! 
    5758      IF( PRESENT( kit ) )   THEN 
    58          zt = zt + ( kit +  joffset - 1 ) * rdt / REAL( nn_baro, wp ) 
     59         zt = zt + ( kit +  joffset - 1 ) * rn_Dt / REAL( nn_e, wp ) 
    5960      ELSE 
    60          zt = zt + joffset * rdt 
     61         zt = zt + joffset * rn_Dt 
    6162      ENDIF 
    6263      ! 
     
    6970      ! 
    7071      IF( ln_tide_ramp ) THEN         ! linear increase if asked 
    71          zt = ( kt - nit000 ) * rdt 
    72          IF( PRESENT( kit ) )   zt = zt + ( kit + joffset -1) * rdt / REAL( nn_baro, wp ) 
    73          zramp = MIN(  MAX( zt / (rdttideramp*rday) , 0._wp ) , 1._wp  ) 
     72         zt = ( kt - nit000 ) * rn_Dt 
     73         IF( PRESENT( kit ) )   zt = zt + ( kit + joffset -1) * rn_Dt / REAL( nn_e, wp ) 
     74         zramp = MIN(  MAX( 0._wp , zt / (rn_ramp*rday) ) , 1._wp  ) 
    7475         pot_astro(:,:) = zramp * pot_astro(:,:) 
    7576      ENDIF 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/eosbn2.F90

    r9757 r9923  
    190190      !!                   ***  ROUTINE eos_insitu  *** 
    191191      !! 
    192       !! ** Purpose :   Compute the in situ density (ratio rho/rau0) from 
     192      !! ** Purpose :   Compute the in situ density (ratio rho/rho0) from 
    193193      !!       potential temperature and salinity using an equation of state 
    194194      !!       selected in the nameos namelist 
    195195      !! 
    196       !! ** Method  :   prd(t,s,z) = ( rho(t,s,z) - rau0 ) / rau0 
     196      !! ** Method  :   prd(t,s,z) = ( rho(t,s,z) - rho0 ) / rho0 
    197197      !!         with   prd    in situ density anomaly      no units 
    198198      !!                t      TEOS10: CT or EOS80: PT      Celsius 
     
    200200      !!                z      depth                        meters 
    201201      !!                rho    in situ density              kg/m^3 
    202       !!                rau0   reference density            kg/m^3 
     202      !!                rho0   reference density            kg/m^3 
    203203      !! 
    204204      !!     ln_teos10 : polynomial TEOS-10 equation of state is used for rho(t,s,z). 
     
    209209      !! 
    210210      !!     ln_seos : simplified equation of state 
    211       !!              prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / rau0 
     211      !!              prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / rho0 
    212212      !!              linear case function of T only: rn_alpha<>0, other coefficients = 0 
    213213      !!              linear eos function of T and S: rn_alpha and rn_beta<>0, other coefficients=0 
     
    268268                  zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    269269                  ! 
    270                   prd(ji,jj,jk) = (  zn * r1_rau0 - 1._wp  ) * ztm  ! density anomaly (masked) 
     270                  prd(ji,jj,jk) = (  zn * r1_rho0 - 1._wp  ) * ztm  ! density anomaly (masked) 
    271271                  ! 
    272272               END DO 
     
    288288                     &  - rn_nu * zt * zs 
    289289                     !                                  
    290                   prd(ji,jj,jk) = zn * r1_rau0 * ztm                ! density anomaly (masked) 
     290                  prd(ji,jj,jk) = zn * r1_rho0 * ztm                ! density anomaly (masked) 
    291291               END DO 
    292292            END DO 
     
    306306      !!                  ***  ROUTINE eos_insitu_pot  *** 
    307307      !! 
    308       !! ** Purpose :   Compute the in situ density (ratio rho/rau0) and the 
     308      !! ** Purpose :   Compute the in situ density (ratio rho/rho0) and the 
    309309      !!      potential volumic mass (Kg/m3) from potential temperature and 
    310310      !!      salinity fields using an equation of state selected in the 
     
    388388                        prhop(ji,jj,jk) = prhop(ji,jj,jk) + zn0_sto(jsmp)                      ! potential density referenced at the surface 
    389389                        ! 
    390                         prd(ji,jj,jk) = prd(ji,jj,jk) + (  zn_sto(jsmp) * r1_rau0 - 1._wp  )   ! density anomaly (masked) 
     390                        prd(ji,jj,jk) = prd(ji,jj,jk) + (  zn_sto(jsmp) * r1_rho0 - 1._wp  )   ! density anomaly (masked) 
    391391                     END DO 
    392392                     prhop(ji,jj,jk) = 0.5_wp * prhop(ji,jj,jk) * ztm / nn_sto_eos 
     
    432432                     prhop(ji,jj,jk) = zn0 * ztm                           ! potential density referenced at the surface 
    433433                     ! 
    434                      prd(ji,jj,jk) = (  zn * r1_rau0 - 1._wp  ) * ztm      ! density anomaly (masked) 
     434                     prd(ji,jj,jk) = (  zn * r1_rho0 - 1._wp  ) * ztm      ! density anomaly (masked) 
    435435                  END DO 
    436436               END DO 
     
    451451                     &  + rn_b0 * ( 1._wp - 0.5_wp*rn_lambda2*zs ) * zs   & 
    452452                     &  - rn_nu * zt * zs 
    453                   prhop(ji,jj,jk) = ( rau0 + zn ) * ztm 
     453                  prhop(ji,jj,jk) = ( rho0 + zn ) * ztm 
    454454                  !                                                     ! density anomaly (masked) 
    455455                  zn = zn - ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zh 
    456                   prd(ji,jj,jk) = zn * r1_rau0 * ztm 
     456                  prd(ji,jj,jk) = zn * r1_rho0 * ztm 
    457457                  ! 
    458458               END DO 
     
    473473      !!                  ***  ROUTINE eos_insitu_2d  *** 
    474474      !! 
    475       !! ** Purpose :   Compute the in situ density (ratio rho/rau0) from 
     475      !! ** Purpose :   Compute the in situ density (ratio rho/rho0) from 
    476476      !!      potential temperature and salinity using an equation of state 
    477477      !!      selected in the nameos namelist. * 2D field case 
     
    528528               zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    529529               ! 
    530                prd(ji,jj) = zn * r1_rau0 - 1._wp               ! unmasked in situ density anomaly 
     530               prd(ji,jj) = zn * r1_rho0 - 1._wp               ! unmasked in situ density anomaly 
    531531               ! 
    532532            END DO 
     
    548548                  &  - rn_nu * zt * zs 
    549549                  ! 
    550                prd(ji,jj) = zn * r1_rau0               ! unmasked in situ density anomaly 
     550               prd(ji,jj) = zn * r1_rho0               ! unmasked in situ density anomaly 
    551551               ! 
    552552            END DO 
     
    616616                  zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    617617                  ! 
    618                   pab(ji,jj,jk,jp_tem) = zn * r1_rau0 * ztm 
     618                  pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm 
    619619                  ! 
    620620                  ! beta 
     
    637637                  zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    638638                  ! 
    639                   pab(ji,jj,jk,jp_sal) = zn / zs * r1_rau0 * ztm 
     639                  pab(ji,jj,jk,jp_sal) = zn / zs * r1_rho0 * ztm 
    640640                  ! 
    641641               END DO 
     
    654654                  ! 
    655655                  zn  = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 
    656                   pab(ji,jj,jk,jp_tem) = zn * r1_rau0 * ztm   ! alpha 
     656                  pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm   ! alpha 
    657657                  ! 
    658658                  zn  = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 
    659                   pab(ji,jj,jk,jp_sal) = zn * r1_rau0 * ztm   ! beta 
     659                  pab(ji,jj,jk,jp_sal) = zn * r1_rho0 * ztm   ! beta 
    660660                  ! 
    661661               END DO 
     
    729729               zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    730730               ! 
    731                pab(ji,jj,jp_tem) = zn * r1_rau0 
     731               pab(ji,jj,jp_tem) = zn * r1_rho0 
    732732               ! 
    733733               ! beta 
     
    750750               zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    751751               ! 
    752                pab(ji,jj,jp_sal) = zn / zs * r1_rau0 
     752               pab(ji,jj,jp_sal) = zn / zs * r1_rho0 
    753753               ! 
    754754               ! 
     
    768768               ! 
    769769               zn  = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 
    770                pab(ji,jj,jp_tem) = zn * r1_rau0   ! alpha 
     770               pab(ji,jj,jp_tem) = zn * r1_rho0   ! alpha 
    771771               ! 
    772772               zn  = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 
    773                pab(ji,jj,jp_sal) = zn * r1_rau0   ! beta 
     773               pab(ji,jj,jp_sal) = zn * r1_rho0   ! beta 
    774774               ! 
    775775            END DO 
     
    841841         zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    842842         ! 
    843          pab(jp_tem) = zn * r1_rau0 
     843         pab(jp_tem) = zn * r1_rho0 
    844844         ! 
    845845         ! beta 
     
    862862         zn  = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 
    863863         ! 
    864          pab(jp_sal) = zn / zs * r1_rau0 
     864         pab(jp_sal) = zn / zs * r1_rho0 
    865865         ! 
    866866         ! 
     
    873873         ! 
    874874         zn  = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 
    875          pab(jp_tem) = zn * r1_rau0   ! alpha 
     875         pab(jp_tem) = zn * r1_rho0   ! alpha 
    876876         ! 
    877877         zn  = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 
    878          pab(jp_sal) = zn * r1_rau0   ! beta 
     878         pab(jp_sal) = zn * r1_rho0   ! beta 
    879879         ! 
    880880      CASE DEFAULT 
     
    11041104      !! ** Method  :   PE is defined analytically as the vertical  
    11051105      !!                   primitive of EOS times -g integrated between 0 and z>0. 
    1106       !!                pen is the nonlinear bsq-PE anomaly: pen = ( PE - rau0 gz ) / rau0 gz - rd 
     1106      !!                pen is the nonlinear bsq-PE anomaly: pen = ( PE - rho0 gz ) / rho0 gz - rd 
    11071107      !!                                                      = 1/z * /int_0^z rd dz - rd  
    11081108      !!                                where rd is the density anomaly (see eos_rhd function) 
    11091109      !!                ab_pe are partial derivatives of PE anomaly with respect to T and S: 
    1110       !!                    ab_pe(1) = - 1/(rau0 gz) * dPE/dT + drd/dT = - d(pen)/dT 
    1111       !!                    ab_pe(2) =   1/(rau0 gz) * dPE/dS + drd/dS =   d(pen)/dS 
     1110      !!                    ab_pe(1) = - 1/(rho0 gz) * dPE/dT + drd/dT = - d(pen)/dT 
     1111      !!                    ab_pe(2) =   1/(rho0 gz) * dPE/dS + drd/dS =   d(pen)/dS 
    11121112      !! 
    11131113      !! ** Action  : - pen         : PE anomaly given at T-points 
     
    11561156                  zn  = ( zn2 * zh + zn1 ) * zh + zn0 
    11571157                  ! 
    1158                   ppen(ji,jj,jk)  = zn * zh * r1_rau0 * ztm 
     1158                  ppen(ji,jj,jk)  = zn * zh * r1_rho0 * ztm 
    11591159                  ! 
    11601160                  ! alphaPE non-linear anomaly 
     
    11711171                  zn  = ( zn2 * zh + zn1 ) * zh + zn0 
    11721172                  !                               
    1173                   pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_rau0 * ztm 
     1173                  pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_rho0 * ztm 
    11741174                  ! 
    11751175                  ! betaPE non-linear anomaly 
     
    11861186                  zn  = ( zn2 * zh + zn1 ) * zh + zn0 
    11871187                  !                               
    1188                   pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_rau0 * ztm 
     1188                  pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_rho0 * ztm 
    11891189                  ! 
    11901190               END DO 
     
    12011201                  zh  = gdept_n(ji,jj,jk)              ! depth in meters  at t-point 
    12021202                  ztm = tmask(ji,jj,jk)                ! tmask 
    1203                   zn  = 0.5_wp * zh * r1_rau0 * ztm 
     1203                  zn  = 0.5_wp * zh * r1_rho0 * ztm 
    12041204                  !                                    ! Potential Energy 
    12051205                  ppen(ji,jj,jk) = ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zn 
     
    12481248      IF(lwm) WRITE( numond, nameos ) 
    12491249      ! 
    1250       rau0        = 1026._wp                 !: volumic mass of reference     [kg/m3] 
     1250      rho0        = 1026._wp                 !: volumic mass of reference     [kg/m3] 
    12511251      rcp         = 3991.86795711963_wp      !: heat capacity     [J/K] 
    12521252      ! 
     
    16571657            WRITE(numout,*) '   ==>>>   use of simplified eos:    ' 
    16581658            WRITE(numout,*) '              rhd(dT=T-10,dS=S-35,Z) = [-a0*(1+lambda1/2*dT+mu1*Z)*dT ' 
    1659             WRITE(numout,*) '                                       + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / rau0' 
     1659            WRITE(numout,*) '                                       + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / rho0' 
    16601660            WRITE(numout,*) '              with the following coefficients :' 
    16611661            WRITE(numout,*) '                 thermal exp. coef.    rn_a0      = ', rn_a0 
     
    16761676      END SELECT 
    16771677      ! 
    1678       rau0_rcp    = rau0 * rcp  
    1679       r1_rau0     = 1._wp / rau0 
     1678      rho0_rcp    = rho0 * rcp  
     1679      r1_rho0     = 1._wp / rho0 
    16801680      r1_rcp      = 1._wp / rcp 
    1681       r1_rau0_rcp = 1._wp / rau0_rcp  
     1681      r1_rho0_rcp = 1._wp / rho0_rcp  
    16821682      ! 
    16831683      IF(lwp) THEN 
     
    16941694      IF(lwp) WRITE(numout,*) 
    16951695      IF(lwp) WRITE(numout,*) '   Associated physical constant' 
    1696       IF(lwp) WRITE(numout,*) '      volumic mass of reference           rau0  = ', rau0   , ' kg/m^3' 
    1697       IF(lwp) WRITE(numout,*) '      1. / rau0                        r1_rau0  = ', r1_rau0, ' m^3/kg' 
     1696      IF(lwp) WRITE(numout,*) '      volumic mass of reference           rho0  = ', rho0   , ' kg/m^3' 
     1697      IF(lwp) WRITE(numout,*) '      1. / rho0                        r1_rho0  = ', r1_rho0, ' m^3/kg' 
    16981698      IF(lwp) WRITE(numout,*) '      ocean specific heat                 rcp   = ', rcp    , ' J/Kelvin' 
    1699       IF(lwp) WRITE(numout,*) '      rau0 * rcp                       rau0_rcp = ', rau0_rcp 
    1700       IF(lwp) WRITE(numout,*) '      1. / ( rau0 * rcp )           r1_rau0_rcp = ', r1_rau0_rcp 
     1699      IF(lwp) WRITE(numout,*) '      rho0 * rcp                       rho0_rcp = ', rho0_rcp 
     1700      IF(lwp) WRITE(numout,*) '      1. / ( rho0 * rcp )           r1_rho0_rcp = ', r1_rho0_rcp 
    17011701      ! 
    17021702   END SUBROUTINE eos_init 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/traadv.F90

    r9863 r9923  
    8787      INTEGER ::   jk   ! dummy loop index 
    8888      REAL(wp), DIMENSION(jpi,jpj,jpk)        :: zun, zvn, zwn   ! 3D workspace 
    89       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrdt, ztrds 
     89      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::   ztrd 
    9090      !!---------------------------------------------------------------------- 
    9191      ! 
     
    133133      ! 
    134134      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    135          ALLOCATE( ztrdt(jpi,jpj,jpk), ztrds(jpi,jpj,jpk) ) 
    136          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    137          ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     135         ALLOCATE( ztrd(jpi,jpj,jpk,jpts) ) 
     136         ztrd(:,:,:,:) = tsa(:,:,:,:) 
    138137      ENDIF 
    139138      ! 
     
    141140      ! 
    142141      CASE ( np_CEN )                                 ! Centered scheme : 2nd / 4th order 
    143          CALL tra_adv_cen    ( kt, nit000, 'TRA',         zun, zvn, zwn     , tsn, tsa, jpts, nn_cen_h, nn_cen_v ) 
     142         CALL tra_adv_cen    ( kt, nit000, 'TRA',      zun, zvn, zwn     , tsn, tsa, jpts, nn_cen_h, nn_cen_v ) 
    144143      CASE ( np_FCT )                                 ! FCT scheme      : 2nd / 4th order 
    145          CALL tra_adv_fct    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v ) 
     144         CALL tra_adv_fct    ( kt, nit000, 'TRA', rDt, zun, zvn, zwn, tsb, tsn, tsa, jpts, nn_fct_h, nn_fct_v ) 
    146145      CASE ( np_MUS )                                 ! MUSCL 
    147          CALL tra_adv_mus    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb,      tsa, jpts        , ln_mus_ups )  
     146         CALL tra_adv_mus    ( kt, nit000, 'TRA', rDt, zun, zvn, zwn, tsb,      tsa, jpts        , ln_mus_ups )  
    148147      CASE ( np_UBS )                                 ! UBS 
    149          CALL tra_adv_ubs    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_ubs_v   ) 
     148         CALL tra_adv_ubs    ( kt, nit000, 'TRA', rDt, zun, zvn, zwn, tsb, tsn, tsa, jpts        , nn_ubs_v   ) 
    150149      CASE ( np_QCK )                                 ! QUICKEST 
    151          CALL tra_adv_qck    ( kt, nit000, 'TRA', r2dt, zun, zvn, zwn, tsb, tsn, tsa, jpts                     ) 
     150         CALL tra_adv_qck    ( kt, nit000, 'TRA', rDt, zun, zvn, zwn, tsb, tsn, tsa, jpts                     ) 
    152151      ! 
    153152      END SELECT 
     
    155154      IF( l_trdtra )   THEN                      ! save the advective trends for further diagnostics 
    156155         DO jk = 1, jpkm1 
    157             ztrdt(:,:,jk) = tsa(:,:,jk,jp_tem) - ztrdt(:,:,jk) 
    158             ztrds(:,:,jk) = tsa(:,:,jk,jp_sal) - ztrds(:,:,jk) 
     156            ztrd(:,:,jk,:) = tsa(:,:,jk,:) - ztrd(:,:,jk,:) 
    159157         END DO 
    160          CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrdt ) 
    161          CALL trd_tra( kt, 'TRA', jp_sal, jptra_totad, ztrds ) 
    162          DEALLOCATE( ztrdt, ztrds ) 
     158         CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrd(:,:,:,jp_tem) ) 
     159         CALL trd_tra( kt, 'TRA', jp_sal, jptra_totad, ztrd(:,:,:,jp_sal) ) 
     160         DEALLOCATE( ztrd ) 
    163161      ENDIF 
    164162      !                                              ! print mean trends (used for debugging) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/traadv_fct.F90

    r9598 r9923  
    2020   USE diaptr         ! poleward transport diagnostics 
    2121   USE diaar5         ! AR5 diagnostics 
    22    USE phycst  , ONLY : rau0_rcp 
    2322   ! 
    2423   USE in_out_manager ! I/O manager 
     
    131130                  zwx(ji,jj,jk) = 0.5 * ( zfp_ui * ptb(ji,jj,jk,jn) + zfm_ui * ptb(ji+1,jj  ,jk,jn) ) 
    132131                  zwy(ji,jj,jk) = 0.5 * ( zfp_vj * ptb(ji,jj,jk,jn) + zfm_vj * ptb(ji  ,jj+1,jk,jn) ) 
     132!!gm faster coding ?   ===>>> to be tested : 
     133!                  zwx(ji,jj,jk) = MAX( pun(ji,jj,jk) , 0._wp ) * ptb(ji  ,jj,jk,jn)   & 
     134!                     &          + MIN( pun(ji,jj,jk) , 0._wp ) * ptb(ji+1,jj,jk,jn) 
     135!                  zwy(ji,jj,jk) = MAX( pvn(ji,jj,jk) , 0._wp ) * ptb(ji,jj  ,jk,jn)   & 
     136!                     &          + MIN( pvn(ji,jj,jk) , 0._wp ) * ptb(ji,jj+1,jk,jn) 
     137!!gm 
     138                   
    133139               END DO 
    134140            END DO 
     
    141147                  zfm_wk = pwn(ji,jj,jk) - ABS( pwn(ji,jj,jk) ) 
    142148                  zwz(ji,jj,jk) = 0.5 * ( zfp_wk * ptb(ji,jj,jk,jn) + zfm_wk * ptb(ji,jj,jk-1,jn) ) * wmask(ji,jj,jk) 
     149!!gm faster coding ?   ===>>> to be tested : 
     150!                  zwx(ji,jj,jk) = MAX( pwn(ji,jj,jk) , 0._wp ) * pwn(ji,jj,jk  ,jn)   & 
     151!                     &          + MIN( pwn(ji,jj,jk) , 0._wp ) * pwn(ji,jj,jk-1,jn) 
     152!!gm 
    143153               END DO 
    144154            END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/trabbc.F90

    r9598 r9923  
    6464      !!       ocean bottom can be computed once and is added to the temperature 
    6565      !!       trend juste above the bottom at each time step: 
    66       !!            ta = ta + Qsf / (rau0 rcp e3T) for k= mbkt 
     66      !!            ta = ta + Qsf / (rho0 rcp e3T) for k= mbkt 
    6767      !!       Where Qsf is the geothermal heat flux. 
    6868      !! 
     
    7676      ! 
    7777      INTEGER  ::   ji, jj    ! dummy loop indices 
    78       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt   ! 3D workspace 
     78      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrd   ! 3D workspace 
    7979      !!---------------------------------------------------------------------- 
    8080      ! 
     
    8282      ! 
    8383      IF( l_trdtra )   THEN         ! Save the input temperature trend 
    84          ALLOCATE( ztrdt(jpi,jpj,jpk) ) 
    85          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     84         ALLOCATE( ztrd(jpi,jpj,jpk) ) 
     85         ztrd(:,:,:) = tsa(:,:,:,jp_tem) 
    8686      ENDIF 
    8787      !                             !  Add the geothermal trend on temperature 
     
    9595      ! 
    9696      IF( l_trdtra ) THEN        ! Send the trend for diagnostics 
    97          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    98          CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrdt ) 
    99          DEALLOCATE( ztrdt ) 
     97         ztrd(:,:,:) = tsa(:,:,:,jp_tem) - ztrd(:,:,:) 
     98         CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrd ) 
     99         DEALLOCATE( ztrd ) 
    100100      ENDIF 
    101101      ! 
     
    157157         ALLOCATE( qgh_trd0(jpi,jpj) )    ! allocation 
    158158         ! 
    159          SELECT CASE ( nn_geoflx )        ! geothermal heat flux / (rauO * Cp) 
     159         SELECT CASE ( nn_geoflx )        ! geothermal heat flux / (rhoO * Cp) 
    160160         ! 
    161161         CASE ( 1 )                          !* constant flux 
    162162            IF(lwp) WRITE(numout,*) '   ==>>>   constant heat flux  =   ', rn_geoflx_cst 
    163             qgh_trd0(:,:) = r1_rau0_rcp * rn_geoflx_cst 
     163            qgh_trd0(:,:) = r1_rho0_rcp * rn_geoflx_cst 
    164164            ! 
    165165         CASE ( 2 )                          !* variable geothermal heat flux : read the geothermal fluxes in mW/m2 
     
    178178 
    179179            CALL fld_read( nit000, 1, sf_qgh )                         ! Read qgh data 
    180             qgh_trd0(:,:) = r1_rau0_rcp * sf_qgh(1)%fnow(:,:,1) * 1.e-3 ! conversion in W/m2 
     180            qgh_trd0(:,:) = r1_rho0_rcp * sf_qgh(1)%fnow(:,:,1) * 1.e-3 ! conversion in W/m2 
    181181            ! 
    182182         CASE DEFAULT 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/trabbl.F90

    r9598 r9923  
    103103      INTEGER, INTENT( in ) ::   kt   ! ocean time-step 
    104104      ! 
    105       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds 
     105      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrd 
    106106      !!---------------------------------------------------------------------- 
    107107      ! 
     
    109109      ! 
    110110      IF( l_trdtra )   THEN                         !* Save the T-S input trends 
    111          ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 
    112          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    113          ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     111         ALLOCATE( ztrd(jpi,jpj,jpk,jpts) ) 
     112         ztrd(:,:,:,:) = tsa(:,:,:,:) 
    114113      ENDIF 
    115114 
     
    143142 
    144143      IF( l_trdtra )   THEN                      ! send the trends for further diagnostics 
    145          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    146          ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    147          CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbl, ztrdt ) 
    148          CALL trd_tra( kt, 'TRA', jp_sal, jptra_bbl, ztrds ) 
    149          DEALLOCATE( ztrdt, ztrds ) 
     144         ztrd(:,:,:,:) = tsa(:,:,:,:) - ztrd(:,:,:,:) 
     145         CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbl, ztrd(:,:,:,jp_tem) ) 
     146         CALL trd_tra( kt, 'TRA', jp_sal, jptra_bbl, ztrd(:,:,:,jp_sal) ) 
     147         DEALLOCATE( ztrd ) 
    150148      ENDIF 
    151149      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/tradmp.F90

    r9598 r9923  
    9494      INTEGER ::   ji, jj, jk, jn   ! dummy loop indices 
    9595      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts)     ::  zts_dta 
    96       REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  ztrdts 
     96      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  ztrd 
    9797      !!---------------------------------------------------------------------- 
    9898      ! 
     
    100100      ! 
    101101      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    102          ALLOCATE( ztrdts(jpi,jpj,jpk,jpts) )  
    103          ztrdts(:,:,:,:) = tsa(:,:,:,:)  
     102         ALLOCATE( ztrd(jpi,jpj,jpk,jpts) )  
     103         ztrd(:,:,:,:) = tsa(:,:,:,:)  
    104104      ENDIF 
    105105      !                           !==  input T-S data at kt  ==! 
     
    150150      ! 
    151151      IF( l_trdtra )   THEN       ! trend diagnostic 
    152          ztrdts(:,:,:,:) = tsa(:,:,:,:) - ztrdts(:,:,:,:) 
    153          CALL trd_tra( kt, 'TRA', jp_tem, jptra_dmp, ztrdts(:,:,:,jp_tem) ) 
    154          CALL trd_tra( kt, 'TRA', jp_sal, jptra_dmp, ztrdts(:,:,:,jp_sal) ) 
    155          DEALLOCATE( ztrdts )  
     152         ztrd(:,:,:,:) = tsa(:,:,:,:) - ztrd(:,:,:,:) 
     153         CALL trd_tra( kt, 'TRA', jp_tem, jptra_dmp, ztrd(:,:,:,jp_tem) ) 
     154         CALL trd_tra( kt, 'TRA', jp_sal, jptra_dmp, ztrd(:,:,:,jp_sal) ) 
     155         DEALLOCATE( ztrd )  
    156156      ENDIF 
    157157      !                           ! Control print 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/traldf_iso.F90

    r9863 r9923  
    185185                     DO ji = 1, fs_jpim1 
    186186                        ze3w_2 = e3w_n(ji,jj,jk) * e3w_n(ji,jj,jk) 
    187                         zcoef0 = r2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
    188                         akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_2dt 
     187                        zcoef0 = rDt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     188                        akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_Dt 
    189189                     END DO 
    190190                  END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/traldf_triad.F90

    r9863 r9923  
    198198                     DO ji = 1, fs_jpim1 
    199199                        ze3w_2 = e3w_n(ji,jj,jk) * e3w_n(ji,jj,jk) 
    200                         zcoef0 = r2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
    201                         akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_2dt 
     200                        zcoef0 = rDt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     201                        akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_Dt 
    202202                     END DO 
    203203                  END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/tramle.F90

    r9598 r9923  
    4141 
    4242   REAL(wp) ::   r5_21 = 5.e0 / 21.e0   ! factor used in mle streamfunction computation 
    43    REAL(wp) ::   rb_c                   ! ML buoyancy criteria = g rho_c /rau0 where rho_c is defined in zdfmld 
     43   REAL(wp) ::   rb_c                   ! ML buoyancy criteria = g rho_c /rho0 where rho_c is defined in zdfmld 
    4444   REAL(wp) ::   rc_f                   ! MLE coefficient (= rn_ce / (5 km * fo) ) in nn_mle=1 case 
    4545 
     
    115115               zc = e3t_n(ji,jj,jk) * REAL( MIN( MAX( 0, inml_mle(ji,jj)-jk ) , 1  )  )    ! zc being 0 outside the ML t-points 
    116116               zmld(ji,jj) = zmld(ji,jj) + zc 
    117                zbm (ji,jj) = zbm (ji,jj) + zc * (rau0 - rhop(ji,jj,jk) ) * r1_rau0 
     117               zbm (ji,jj) = zbm (ji,jj) + zc * (rho0 - rhop(ji,jj,jk) ) * r1_rho0 
    118118               zn2 (ji,jj) = zn2 (ji,jj) + zc * (rn2(ji,jj,jk)+rn2(ji,jj,jk+1))*0.5_wp 
    119119            END DO 
     
    302302      IF( ln_mle ) THEN                ! MLE initialisation 
    303303         ! 
    304          rb_c = grav * rn_rho_c_mle /rau0        ! Mixed Layer buoyancy criteria 
     304         rb_c = grav * rn_rho_c_mle /rho0        ! Mixed Layer buoyancy criteria 
    305305         IF(lwp) WRITE(numout,*) 
    306306         IF(lwp) WRITE(numout,*) '      ML buoyancy criteria = ', rb_c, ' m/s2 ' 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/tranpc.F90

    r9863 r9923  
    7171      REAL(wp), DIMENSION(jpi,jpj,jpk     ) ::   zn2          ! N^2  
    7272      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) ::   zab          ! alpha and beta 
    73       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds   ! 3D workspace 
     73      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrd   ! 4D workspace 
    7474      ! 
    7575      LOGICAL, PARAMETER :: l_LB_debug = .FALSE. ! set to true if you want to follow what is 
     
    8282      IF( MOD( kt, nn_npc ) == 0 ) THEN 
    8383         ! 
    84          IF( l_trdtra )   THEN                    !* Save initial after fields 
    85             ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 
    86             ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
    87             ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     84         IF( l_trdtra )   THEN                    !* Save input after fields 
     85            ALLOCATE( ztrd(jpi,jpj,jpk,jpts) ) 
     86            ztrd(:,:,:,:) = tsa(:,:,:,:)  
    8887         ENDIF 
    8988         ! 
     
    301300         ! 
    302301         IF( l_trdtra ) THEN         ! send the Non penetrative mixing trends for diagnostic 
    303             ztrdt(:,:,:) = ( tsa(:,:,:,jp_tem) - ztrdt(:,:,:) ) * r1_2dt 
    304             ztrds(:,:,:) = ( tsa(:,:,:,jp_sal) - ztrds(:,:,:) ) * r1_2dt 
    305             CALL trd_tra( kt, 'TRA', jp_tem, jptra_npc, ztrdt ) 
    306             CALL trd_tra( kt, 'TRA', jp_sal, jptra_npc, ztrds ) 
    307             DEALLOCATE( ztrdt, ztrds ) 
     302            ztrd(:,:,:,:) = ( tsa(:,:,:,:) - ztrd(:,:,:,:) ) * r1_Dt 
     303            CALL trd_tra( kt, 'TRA', jp_tem, jptra_npc, ztrd(:,:,:,jp_tem) ) 
     304            CALL trd_tra( kt, 'TRA', jp_sal, jptra_npc, ztrd(:,:,:,jp_sal) ) 
     305            DEALLOCATE( ztrd ) 
    308306         ENDIF 
    309307         ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/tranxt.F90

    r9863 r9923  
    9090      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    9191      REAL(wp) ::   zfact            ! local scalars 
    92       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds 
     92      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::   ztrd   ! 4D workspace 
    9393      !!---------------------------------------------------------------------- 
    9494      ! 
     
    112112  
    113113      IF( l_trdtra )   THEN               ! trends computation initialisation 
    114          ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 
    115          ztrdt(:,:,jpk) = 0._wp 
    116          ztrds(:,:,jpk) = 0._wp 
     114         ALLOCATE( ztrd(jpi,jpj,jpk,jpts) ) 
     115         ztrd(:,:,jpk,:) = 0._wp 
    117116         IF( ln_traldf_iso ) THEN              ! diagnose the "pure" Kz diffusive trend  
    118             CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdfp, ztrdt ) 
    119             CALL trd_tra( kt, 'TRA', jp_sal, jptra_zdfp, ztrds ) 
     117            CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdfp, ztrd(:,:,:,jp_tem) ) 
     118            CALL trd_tra( kt, 'TRA', jp_sal, jptra_zdfp, ztrd(:,:,:,jp_sal) ) 
    120119         ENDIF 
    121120         ! total trend for the non-time-filtered variables.  
    122          zfact = 1.0 / rdt 
     121         zfact = 1.0 / rn_Dt 
    123122         ! G Nurser 23 Mar 2017. Recalculate trend as Delta(e3t*T)/e3tn; e3tn cancel from tsn terms 
    124          DO jk = 1, jpkm1 
    125             ztrdt(:,:,jk) = ( tsa(:,:,jk,jp_tem)*e3t_a(:,:,jk) / e3t_n(:,:,jk) - tsn(:,:,jk,jp_tem)) * zfact 
    126             ztrds(:,:,jk) = ( tsa(:,:,jk,jp_sal)*e3t_a(:,:,jk) / e3t_n(:,:,jk) - tsn(:,:,jk,jp_sal)) * zfact 
    127          END DO 
    128          CALL trd_tra( kt, 'TRA', jp_tem, jptra_tot, ztrdt ) 
    129          CALL trd_tra( kt, 'TRA', jp_sal, jptra_tot, ztrds ) 
    130          IF( ln_linssh ) THEN       ! linear sea surface height only 
    131             ! Store now fields before applying the Asselin filter  
    132             ! in order to calculate Asselin filter trend later. 
    133             ztrdt(:,:,:) = tsn(:,:,:,jp_tem)  
    134             ztrds(:,:,:) = tsn(:,:,:,jp_sal) 
     123         DO jn = 1, jpts 
     124            DO jk = 1, jpkm1 
     125               ztrd(:,:,jk,jn) = ( tsa(:,:,jk,jn)*e3t_a(:,:,jk) / e3t_n(:,:,jk) - tsn(:,:,jk,jn)) * zfact 
     126            END DO 
     127         END DO 
     128         CALL trd_tra( kt, 'TRA', jp_tem, jptra_tot, ztrd(:,:,:,jp_tem) ) 
     129         CALL trd_tra( kt, 'TRA', jp_sal, jptra_tot, ztrd(:,:,:,jp_sal) ) 
     130         IF( ln_linssh ) THEN       ! linear sea surface height only Store now fields before applying  
     131            !                       ! the Asselin filter in order to calculate Asselin filter trend later. 
     132            ztrd(:,:,:,:) = tsn(:,:,:,:)  
    135133         ENDIF 
    136134      ENDIF 
     
    144142         IF (l_trdtra .AND. .NOT. ln_linssh ) THEN   ! Zero Asselin filter contribution must be explicitly written out since for vvl 
    145143            !                                        ! Asselin filter is output by tra_nxt_vvl that is not called on this time step 
    146             ztrdt(:,:,:) = 0._wp 
    147             ztrds(:,:,:) = 0._wp 
    148             CALL trd_tra( kt, 'TRA', jp_tem, jptra_atf, ztrdt ) 
    149             CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrds ) 
     144            ztrd(:,:,:,:) = 0._wp 
     145            CALL trd_tra( kt, 'TRA', jp_tem, jptra_atf, ztrd(:,:,:,jp_tem) ) 
     146            CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrd(:,:,:,jp_sal) ) 
    150147         END IF 
    151148         ! 
    152149      ELSE                          ! Leap-Frog + Asselin filter time stepping 
    153150         ! 
    154          IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nit000,      'TRA', tsb, tsn, tsa, jpts )  ! linear free surface  
    155          ELSE                   ;   CALL tra_nxt_vvl( kt, nit000, rdt, 'TRA', tsb, tsn, tsa,   & 
    156            &                                                                sbc_tsc, sbc_tsc_b, jpts )  ! non-linear free surface 
    157          ENDIF 
    158          ! 
    159 !!gm 
    160 !         CALL lbc_lnk_multi( tsb(:,:,:,jp_tem), 'T', 1., tsb(:,:,:,jp_sal), 'T', 1., & 
    161 !            &                tsn(:,:,:,jp_tem), 'T', 1., tsn(:,:,:,jp_sal), 'T', 1., & 
    162 !            &                tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1.  ) 
    163 !!gm 
     151         IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nit000,       'TRA', tsb, tsn, tsa, jpts )  ! linear free surface  
     152         ELSE                   ;   CALL tra_nxt_vvl( kt, nit000, rn_Dt,'TRA', tsb, tsn, tsa,   & 
     153           &                                                               sbc_tsc, sbc_tsc_b, jpts )  ! non-linear free surface 
     154         ENDIF 
     155         ! 
    164156         CALL lbc_lnk_multi( tsb, 'T', 1., tsn, 'T', 1., tsa, 'T', 1.  ) 
    165 !!gm 
    166157         ! 
    167158      ENDIF      
    168159      ! 
    169160      IF( l_trdtra .AND. ln_linssh ) THEN      ! trend of the Asselin filter (tb filtered - tb)/dt      
    170          zfact = 1._wp / r2dt              
    171161         DO jk = 1, jpkm1 
    172             ztrdt(:,:,jk) = ( tsb(:,:,jk,jp_tem) - ztrdt(:,:,jk) ) * zfact 
    173             ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact 
    174          END DO 
    175          CALL trd_tra( kt, 'TRA', jp_tem, jptra_atf, ztrdt ) 
    176          CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrds ) 
     162            ztrd(:,:,jk,:) = ( tsb(:,:,jk,:) - ztrd(:,:,jk,:) ) * r1_Dt 
     163         END DO 
     164         CALL trd_tra( kt, 'TRA', jp_tem, jptra_atf, ztrd(:,:,:,jp_tem) ) 
     165         CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrd(:,:,:,jp_sal) ) 
    177166      END IF 
    178       IF( l_trdtra )   DEALLOCATE( ztrdt , ztrds ) 
     167      IF( l_trdtra )   DEALLOCATE( ztrd ) 
    179168      ! 
    180169      !                        ! control print 
     
    225214                  ztd = pta(ji,jj,jk,jn) - 2._wp * ztn + ptb(ji,jj,jk,jn)  ! time laplacian on tracers 
    226215                  ! 
    227                   ptb(ji,jj,jk,jn) = ztn + atfp * ztd                      ! ptb <-- filtered ptn  
     216                  ptb(ji,jj,jk,jn) = ztn + rn_atfp * ztd                   ! ptb <-- filtered ptn  
    228217                  ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)                      ! ptn <-- pta 
    229218               END DO 
     
    236225 
    237226 
    238    SUBROUTINE tra_nxt_vvl( kt, kit000, p2dt, cdtype, ptb, ptn, pta, psbc_tc, psbc_tc_b, kjpt ) 
     227   SUBROUTINE tra_nxt_vvl( kt, kit000, pdt, cdtype, ptb, ptn, pta, psbc_tc, psbc_tc_b, kjpt ) 
    239228      !!---------------------------------------------------------------------- 
    240229      !!                   ***  ROUTINE tra_nxt_vvl  *** 
     
    245234      !! ** Method  : - Apply a thickness weighted Asselin time filter on now fields. 
    246235      !!              - swap tracer fields to prepare the next time_step. 
    247       !!             tb  = ( e3t_n*tn + atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] ) 
    248       !!                  /( e3t_n    + atfp*[ e3t_b    - 2 e3t_n    + e3t_a    ] ) 
     236      !!             tb  = ( e3t_n*tn + rn_atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] ) 
     237      !!                  /( e3t_n    + rn_atfp*[ e3t_b    - 2 e3t_n    + e3t_a    ] ) 
    249238      !!             tn  = ta  
    250239      !! 
     
    253242      INTEGER                              , INTENT(in   ) ::  kt        ! ocean time-step index 
    254243      INTEGER                              , INTENT(in   ) ::  kit000    ! first time step index 
    255       REAL(wp)                             , INTENT(in   ) ::  p2dt      ! time-step 
     244      REAL(wp)                             , INTENT(in   ) ::  pdt       ! time-step 
    256245      CHARACTER(len=3)                     , INTENT(in   ) ::  cdtype    ! =TRA or TRC (tracer indicator) 
    257246      INTEGER                              , INTENT(in   ) ::  kjpt      ! number of tracers 
     
    287276      IF( ( l_trdtra .AND. cdtype == 'TRA' ) .OR. ( l_trdtrc .AND. cdtype == 'TRC' ) )   THEN 
    288277         ALLOCATE( ztrd_atf(jpi,jpj,jpk,kjpt) ) 
    289          ztrd_atf(:,:,:,:) = 0.0_wp 
    290       ENDIF 
    291       zfact = 1._wp / r2dt 
    292       zfact1 = atfp * p2dt 
    293       zfact2 = zfact1 * r1_rau0 
    294       DO jn = 1, kjpt       
     278         ztrd_atf(:,:,:,:) = 0._wp 
     279      ENDIF 
     280      ! 
     281      zfact = r1_Dt 
     282      zfact1 = rn_atfp * pdt 
     283      zfact2 = zfact1 * r1_rho0 
     284      DO jn = 1, kjpt 
    295285         DO jk = 1, jpkm1 
    296286            DO jj = 2, jpjm1 
     
    307297                  ztc_d  = ztc_a  - 2. * ztc_n  + ztc_b 
    308298                  ! 
    309                   ze3t_f = ze3t_n + atfp * ze3t_d 
    310                   ztc_f  = ztc_n  + atfp * ztc_d 
     299                  ze3t_f = ze3t_n + rn_atfp * ze3t_d 
     300                  ztc_f  = ztc_n  + rn_atfp * ztc_d 
    311301                  ! 
    312302                  IF( jk == mikt(ji,jj) ) THEN           ! first level  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/traqsr.F90

    r9863 r9923  
    8787      !!         I(k) = Qsr*( rn_abs*EXP(z(k)/rn_si0) + (1.-rn_abs)*EXP(z(k)/rn_si1) ) 
    8888      !!         The temperature trend associated with the solar radiation penetration  
    89       !!         is given by : zta = 1/e3t dk[ I ] / (rau0*Cp) 
     89      !!         is given by : zta = 1/e3t dk[ I ] / (rho0*Cp) 
    9090      !!         At the bottom, boudary condition for the radiation is no flux : 
    9191      !!      all heat which has not been absorbed in the above levels is put 
     
    112112      REAL(wp) ::   zlogc, zlogc2, zlogc3  
    113113      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   :: zekb, zekg, zekr 
    114       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 
     114      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrd 
    115115      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zetot, zchl3d 
    116116      !!---------------------------------------------------------------------- 
     
    125125      ! 
    126126      IF( l_trdtra ) THEN      ! trends diagnostic: save the input temperature trend 
    127          ALLOCATE( ztrdt(jpi,jpj,jpk) )  
    128          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     127         ALLOCATE( ztrd(jpi,jpj,jpk) )  
     128         ztrd(:,:,:) = tsa(:,:,:,jp_tem) 
    129129      ENDIF 
    130130      ! 
     
    153153         ! 
    154154         DO jk = 1, nksr 
    155             qsr_hc(:,:,jk) = r1_rau0_rcp * ( etot3(:,:,jk) - etot3(:,:,jk+1) ) 
     155            qsr_hc(:,:,jk) = r1_rho0_rcp * ( etot3(:,:,jk) - etot3(:,:,jk+1) ) 
    156156         END DO 
    157157         ! 
     
    233233            DO jj = 2, jpjm1 
    234234               DO ji = fs_2, fs_jpim1 
    235                   qsr_hc(ji,jj,jk) = r1_rau0_rcp * ( zea(ji,jj,jk) - zea(ji,jj,jk+1) ) 
     235                  qsr_hc(ji,jj,jk) = r1_rho0_rcp * ( zea(ji,jj,jk) - zea(ji,jj,jk+1) ) 
    236236               END DO 
    237237            END DO 
     
    242242      CASE( np_2BD  )            !==  2-bands fluxes  ==! 
    243243         ! 
    244          zz0 =        rn_abs   * r1_rau0_rcp      ! surface equi-partition in 2-bands 
    245          zz1 = ( 1. - rn_abs ) * r1_rau0_rcp 
     244         zz0 =        rn_abs   * r1_rho0_rcp      ! surface equi-partition in 2-bands 
     245         zz1 = ( 1. - rn_abs ) * r1_rho0_rcp 
    246246         DO jk = 1, nksr                          ! solar heat absorbed at T-point in the top 400m  
    247247            DO jj = 2, jpjm1 
     
    269269      DO jj = 2, jpjm1  
    270270         DO ji = fs_2, fs_jpim1   ! vector opt. 
    271             IF( qsr(ji,jj) /= 0._wp ) THEN   ;   fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rau0_rcp * qsr(ji,jj) ) 
     271            IF( qsr(ji,jj) /= 0._wp ) THEN   ;   fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rho0_rcp * qsr(ji,jj) ) 
    272272            ELSE                             ;   fraqsr_1lev(ji,jj) = 1._wp 
    273273            ENDIF 
     
    280280         zetot(:,:,nksr+1:jpk) = 0._wp     ! below ~400m set to zero 
    281281         DO jk = nksr, 1, -1 
    282             zetot(:,:,jk) = zetot(:,:,jk+1) + qsr_hc(:,:,jk) * rau0_rcp 
     282            zetot(:,:,jk) = zetot(:,:,jk+1) + qsr_hc(:,:,jk) * rho0_rcp 
    283283         END DO          
    284284         CALL iom_put( 'qsr3d', zetot )   ! 3D distribution of shortwave Radiation 
     
    294294      ! 
    295295      IF( l_trdtra ) THEN     ! qsr tracers trends saved for diagnostics 
    296          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    297          CALL trd_tra( kt, 'TRA', jp_tem, jptra_qsr, ztrdt ) 
    298          DEALLOCATE( ztrdt )  
     296         ztrd(:,:,:) = tsa(:,:,:,jp_tem) - ztrd(:,:,:) 
     297         CALL trd_tra( kt, 'TRA', jp_tem, jptra_qsr, ztrd ) 
     298         DEALLOCATE( ztrd )  
    299299      ENDIF 
    300300      !                       ! print mean trends (used for debugging) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/trasbc.F90

    r9598 r9923  
    7878      INTEGER  ::   ikt, ikb                    ! local integers 
    7979      REAL(wp) ::   zfact, z1_e3t, zdep, ztim   ! local scalar 
    80       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::  ztrdt, ztrds 
     80      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::   ztrd   ! 4D workspace 
    8181      !!---------------------------------------------------------------------- 
    8282      ! 
     
    8989      ENDIF 
    9090      ! 
    91       IF( l_trdtra ) THEN                    !* Save ta and sa trends 
    92          ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) )  
    93          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    94          ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     91      IF( l_trdtra ) THEN                    !* Save input tsa trends 
     92         ALLOCATE( ztrd(jpi,jpj,jpk,jpts) )  
     93         ztrd(:,:,:,:) = tsa(:,:,:,:) 
    9594      ENDIF 
    9695      ! 
     
    9897      IF( .NOT.ln_traqsr ) THEN     ! no solar radiation penetration 
    9998         qns(:,:) = qns(:,:) + qsr(:,:)      ! total heat flux in qns 
    100          qsr(:,:) = 0._wp                     ! qsr set to zero 
     99         qsr(:,:) = 0._wp                    ! qsr set to zero 
    101100      ENDIF 
    102101 
     
    127126            IF ( ll_wd ) THEN     ! If near WAD point limit the flux for now 
    128127               IF ( sshn(ji,jj) + ht_0(ji,jj) >  2._wp * rn_wdmin1 ) THEN 
    129                   sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj)   ! non solar heat flux 
     128                  sbc_tsc(ji,jj,jp_tem) = r1_rho0_rcp * qns(ji,jj)   ! non solar heat flux 
    130129               ELSE IF ( sshn(ji,jj) + ht_0(ji,jj) >  rn_wdmin1 ) THEN 
    131                   sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj) & 
     130                  sbc_tsc(ji,jj,jp_tem) = r1_rho0_rcp * qns(ji,jj) & 
    132131                       &                * tanh ( 5._wp * ( ( sshn(ji,jj) + ht_0(ji,jj) -  rn_wdmin1 ) * r_rn_wdmin1 ) ) 
    133132               ELSE 
     
    135134               ENDIF 
    136135            ELSE  
    137                sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj)   ! non solar heat flux 
     136               sbc_tsc(ji,jj,jp_tem) = r1_rho0_rcp * qns(ji,jj)   ! non solar heat flux 
    138137            ENDIF 
    139138 
    140             sbc_tsc(ji,jj,jp_sal) = r1_rau0     * sfx(ji,jj)   ! salt flux due to freezing/melting 
     139            sbc_tsc(ji,jj,jp_sal) = r1_rho0     * sfx(ji,jj)   ! salt flux due to freezing/melting 
    141140         END DO 
    142141      END DO 
     
    144143         DO jj = 2, jpj                         !==>> add concentration/dilution effect due to constant volume cell 
    145144            DO ji = fs_2, fs_jpim1   ! vector opt. 
    146                sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rau0 * emp(ji,jj) * tsn(ji,jj,1,jp_tem) 
    147                sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rau0 * emp(ji,jj) * tsn(ji,jj,1,jp_sal) 
     145               sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rho0 * emp(ji,jj) * tsn(ji,jj,1,jp_tem) 
     146               sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rho0 * emp(ji,jj) * tsn(ji,jj,1,jp_sal) 
    148147            END DO 
    149148         END DO                                 !==>> output c./d. term 
     
    272271 
    273272      IF( l_trdtra )   THEN                      ! save the horizontal diffusive trends for further diagnostics 
    274          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    275          ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    276          CALL trd_tra( kt, 'TRA', jp_tem, jptra_nsr, ztrdt ) 
    277          CALL trd_tra( kt, 'TRA', jp_sal, jptra_nsr, ztrds ) 
    278          DEALLOCATE( ztrdt , ztrds )  
     273         ztrd(:,:,:,:) = tsa(:,:,:,:) - ztrd(:,:,:,:) 
     274         CALL trd_tra( kt, 'TRA', jp_tem, jptra_nsr, ztrd(:,:,:,jp_tem) ) 
     275         CALL trd_tra( kt, 'TRA', jp_sal, jptra_nsr, ztrd(:,:,:,jp_sal) ) 
     276         DEALLOCATE( ztrd )  
    279277      ENDIF 
    280278      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRA/trazdf.F90

    r9863 r9923  
    6464      ENDIF 
    6565      ! 
    66       IF( l_trdtra )   THEN                  !* Save ta and sa trends 
     66      IF( l_trdtra )   THEN                  !* Save input tsa  trend 
    6767         ALLOCATE( ztrd(jpi,jpj,jpk,jpts) ) 
    6868         ztrd(:,:,:,:) = tsa(:,:,:,:) 
     
    7070      ! 
    7171      !                                      !* compute lateral mixing trend and add it to the general trend 
    72       CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt, tsb, tsa, jpts )  
     72      CALL tra_zdf_imp( kt, nit000, 'TRA', rDt, tsb, tsa, jpts )  
    7373 
    7474!!gm WHY here !   and I don't like that ! 
     
    8282         DO jts = 1, jpts 
    8383            DO jk = 1, jpkm1 
    84                ztrd(:,:,jk,jts) = ( ( tsa(:,:,jk,jts)*e3t_a(:,:,jk) - tsb(:,:,jk,jts)*e3t_b(:,:,jk) ) / (e3t_n(:,:,jk)*r2dt) )   & 
     84               ztrd(:,:,jk,jts) = ( ( tsa(:,:,jk,jts)*e3t_a(:,:,jk) - tsb(:,:,jk,jts)*e3t_b(:,:,jk) ) / (e3t_n(:,:,jk)*rDt) )   & 
    8585                  &            - ztrd(:,:,jk,jts) 
    8686            END DO 
     
    175175               DO jj = 2, jpjm1 
    176176                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    177 !!gm BUG  I think, use e3w_a instead of e3w_n, not sure of that 
    178177                     zwi(ji,jj,jk) = - p2dt * zwt(ji,jj,jk  ) / e3w_n(ji,jj,jk  ) 
    179178                     zws(ji,jj,jk) = - p2dt * zwt(ji,jj,jk+1) / e3w_n(ji,jj,jk+1) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRD/trddyn.F90

    r9598 r9923  
    142142                              !                                    ! wind stress trends 
    143143                              ALLOCATE( z2dx(jpi,jpj) , z2dy(jpi,jpj) ) 
    144                               z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u_n(:,:,1) * rau0 ) 
    145                               z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v_n(:,:,1) * rau0 ) 
     144                              z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u_n(:,:,1) * rho0 ) 
     145                              z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v_n(:,:,1) * rho0 ) 
    146146                              CALL iom_put( "utrd_tau", z2dx ) 
    147147                              CALL iom_put( "vtrd_tau", z2dy ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRD/trdglo.F90

    r9598 r9923  
    7575      INTEGER ::   ji, jj, jk      ! dummy loop indices 
    7676      INTEGER ::   ikbu, ikbv      ! local integers 
    77       REAL(wp)::   zvm, zvt, zvs, z1_2rau0   ! local scalars 
     77      REAL(wp)::   zvm, zvt, zvs, z1_2rho0   ! local scalars 
    7878      REAL(wp), DIMENSION(jpi,jpj)  :: ztswu, ztswv, z2dx, z2dy   ! 2D workspace  
    7979      !!---------------------------------------------------------------------- 
     
    132132            !                  
    133133            IF( ktrd == jpdyn_zdf ) THEN      ! zdf trend: compute separately the surface forcing trend 
    134                z1_2rau0 = 0.5_wp / rau0 
     134               z1_2rho0 = 0.5_wp / rho0 
    135135               DO jj = 1, jpjm1 
    136136                  DO ji = 1, jpim1 
    137137                     zvt = ( utau_b(ji,jj) + utau(ji,jj) ) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk)   & 
    138                         &                                                     * z1_2rau0       * e1e2u(ji,jj) 
     138                        &                                                     * z1_2rho0       * e1e2u(ji,jj) 
    139139                     zvs = ( vtau_b(ji,jj) + vtau(ji,jj) ) * tmask_i(ji,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk)   & 
    140                         &                                                     * z1_2rau0       * e1e2v(ji,jj) 
     140                        &                                                     * z1_2rho0       * e1e2v(ji,jj) 
    141141                     umo(jpdyn_tau) = umo(jpdyn_tau) + zvt 
    142142                     vmo(jpdyn_tau) = vmo(jpdyn_tau) + zvs 
     
    150150!               ! 
    151151!               IF( ln_drgimp ) THEN                   ! implicit drag case: compute separately the bottom friction  
    152 !                  z1_2rau0 = 0.5_wp / rau0 
     152!                  z1_2rho0 = 0.5_wp / rho0 
    153153!                  DO jj = 1, jpjm1 
    154154!                     DO ji = 1, jpim1 
     
    211211         CALL eos( tsn, rhd, rhop )       ! now potential density 
    212212 
    213          zcof = 0.5_wp / rau0             ! Density flux at w-point 
     213         zcof = 0.5_wp / rho0             ! Density flux at w-point 
    214214         zkz(:,:,1) = 0._wp 
    215215         DO jk = 2, jpk 
     
    217217         END DO 
    218218          
    219          zcof   = 0.5_wp / rau0           ! Density flux at u and v-points 
     219         zcof   = 0.5_wp / rho0           ! Density flux at u and v-points 
    220220         DO jk = 1, jpkm1 
    221221            DO jj = 1, jpjm1 
     
    363363 9546    FORMAT(' 0 < horizontal diffusion                                  : ', e20.13) 
    364364 9547    FORMAT(' 0 < vertical diffusion                                    : ', e20.13) 
    365  9548    FORMAT(' pressure gradient u2 = - 1/rau0 u.dz(rhop)                : ', e20.13, '  u.dz(rhop) =', e20.13) 
     365 9548    FORMAT(' pressure gradient u2 = - 1/rho0 u.dz(rho)                 : ', e20.13, '  u.dz(rho) =', e20.13) 
    366366         ! 
    367367         ! Save potential to kinetic energy conversion for next time step 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRD/trdken.F90

    r9598 r9923  
    103103         DO jj = 2, jpj 
    104104            DO ji = 2, jpi 
    105                zke(ji,jj,jk) = 0.5_wp * rau0 *( un(ji  ,jj,jk) * putrd(ji  ,jj,jk) * bu(ji  ,jj,jk)  & 
     105               zke(ji,jj,jk) = 0.5_wp * rho0 *( un(ji  ,jj,jk) * putrd(ji  ,jj,jk) * bu(ji  ,jj,jk)  & 
    106106                  &                           + un(ji-1,jj,jk) * putrd(ji-1,jj,jk) * bu(ji-1,jj,jk)  & 
    107107                  &                           + vn(ji,jj  ,jk) * pvtrd(ji,jj  ,jk) * bv(ji,jj  ,jk)  & 
     
    127127                           DO jj = 2, jpj 
    128128                              DO ji = 2, jpi 
    129                                  zke2d(ji,jj) = r1_rau0 * 0.5_wp * (   z2dx(ji,jj) + z2dx(ji-1,jj)   & 
     129                                 zke2d(ji,jj) = r1_rho0 * 0.5_wp * (   z2dx(ji,jj) + z2dx(ji-1,jj)   & 
    130130                                 &                                   + z2dy(ji,jj) + z2dy(ji,jj-1)   ) * r1_bt(ji,jj,1) 
    131131                              END DO 
     
    184184                    ! 
    185185                    CALL ken_p2k( kt , zke ) 
    186                       CALL iom_put( "ketrd_convP2K", zke )     ! conversion -rau*g*w 
     186                      CALL iom_put( "ketrd_convP2K", zke )     ! conversion -rho*g*w 
    187187         ! 
    188188      END SELECT 
     
    197197      !! ** Purpose :   compute rate of conversion from potential to kinetic energy 
    198198      !! 
    199       !! ** Method  : - compute conv defined as -rau*g*w on T-grid points 
     199      !! ** Method  : - compute conv defined as -rho*g*w on T-grid points 
    200200      !!  
    201201      !! ** Work only for full steps and partial steps (ln_hpg_zco or ln_hpg_zps) 
     
    211211      ! 
    212212      ! Local constant initialization  
    213       zcoef = - rau0 * grav * 0.5_wp       
     213      zcoef = - rho0 * grav * 0.5_wp       
    214214       
    215215      !  Surface value (also valid in partial step case) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRD/trdtra.F90

    r9863 r9923  
    245245 
    246246      !                   ! Potential ENergy trends 
    247       IF( ln_PE_trd  )   CALL trd_pen( ptrdx, ptrdy, ktrd, kt, r2dt ) 
     247      IF( ln_PE_trd  )   CALL trd_pen( ptrdx, ptrdy, ktrd, kt, rDt ) 
    248248 
    249249      !                   ! Mixed layer trends for active tracers 
     
    278278         CASE ( jptra_atf )        ;   CALL trd_mxl_zint( ptrdx, ptrdy, jpmxl_atf, '3D' )   ! asselin time filter (last trend) 
    279279                                   ! 
    280                                        CALL trd_mxl( kt, r2dt )                             ! trends: Mixed-layer (output) 
     280                                       CALL trd_mxl( kt, rDt )                              ! trends: Mixed-layer (output) 
    281281         END SELECT 
    282282         ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/TRD/trdvor.F90

    r9598 r9923  
    105105         DO jj = 2, jpjm1                                                             ! wind stress trends 
    106106            DO ji = fs_2, fs_jpim1   ! vector opt. 
    107                ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u_n(ji,jj,1) * rau0 ) 
    108                ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v_n(ji,jj,1) * rau0 ) 
     107               ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u_n(ji,jj,1) * rho0 ) 
     108               ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v_n(ji,jj,1) * rho0 ) 
    109109            END DO 
    110110         END DO 
     
    385385         ! III.1 compute total trend 
    386386         ! ------------------------ 
    387          zmean = 1._wp / (  REAL( nmoydpvor, wp ) * 2._wp * rdt  ) 
     387         zmean = 1._wp / (  REAL( nmoydpvor, wp ) * 2._wp * rn_Dt  ) 
    388388         vor_avrtot(:,:) = (  vor_avr(:,:) - vor_avrbn(:,:) + vor_avrb(:,:) - vor_avrbb(:,:) ) * zmean 
    389389 
     
    504504      ENDIF 
    505505#if defined key_diainstant 
    506       zsto = nwrite*rdt 
     506      zsto = nwrite * rn_Dt 
    507507      clop = "inst("//TRIM(clop)//")" 
    508508#else 
    509       zsto = rdt 
     509      zsto = rn_Dt 
    510510      clop = "ave("//TRIM(clop)//")" 
    511511#endif 
    512       zout = nn_trd*rdt 
     512      zout = nn_trd * rn_Dt 
    513513 
    514514      IF(lwp) WRITE(numout,*) '               netCDF initialization' 
     
    516516      ! II.2 Compute julian date from starting date of the run 
    517517      ! ------------------------ 
    518       CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) 
     518      CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian ) 
    519519      zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    520520      IF(lwp) WRITE(numout,*)' '   
     
    528528      IF(lwp) WRITE(numout,*) ' Name of NETCDF file ', clhstnam 
    529529      CALL histbeg( clhstnam, jpi, glamf, jpj, gphif,1, jpi,   &  ! Horizontal grid : glamt and gphit 
    530          &          1, jpj, nit000-1, zjulian, rdt, nh_t, nidvor, domain_id=nidom, snc4chunks=snc4set ) 
     530         &          1, jpj, nit000-1, zjulian, rn_Dt, nh_t, nidvor, domain_id=nidom, snc4chunks=snc4set ) 
    531531      CALL wheneq( jpi*jpj, fmask, 1, 1., ndexvor1, ndimvor1 )    ! surface 
    532532 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/USR/usrdef_sbc.F90

    r9598 r9923  
    8888 
    8989      ! current day (in hours) since january the 1st of the current year 
    90       ztime = REAL( kt ) * rdt / (rmmss * rhhmm)   &       !  total incrementation (in hours) 
     90      ztime = REAL( kt ) * rn_Dt / (rmmss * rhhmm)   &     !  total incrementation (in hours) 
    9191         &      - (nyear  - 1) * rjjhh * zyydd             !  minus years since beginning of experiment (in hours) 
    9292 
     
    155155      !accumulates days of previous months of this year 
    156156      ! day (in hours) since january the 1st 
    157       ztime = FLOAT( kt ) * rdt / (rmmss * rhhmm)  &  ! incrementation in hour 
    158          &     - (nyear - 1) * rjjhh * zyydd          !  - nber of hours the precedent years 
     157      ztime    = REAL( kt ) * rn_Dt / (rmmss * rhhmm)  &   ! incrementation in hour 
     158         &     - (nyear - 1) * rjjhh * zyydd               !  - nber of hours the precedent years 
    159159      ztimemax = ((5.*30.)+21.)* 24.               ! 21th june     in hours 
    160160      ztimemin = ztimemax + rjjhh * zyydd / 2      ! 21th december in hours 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ZDF/zdfddm.F90

    r9598 r9923  
    77   !!   NEMO     1.0  ! 2002-06  (G. Madec)  F90: Free form and module 
    88   !!            3.3  ! 2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase 
    9    !!            3.6  ! 2013-04  (G. Madec, F. Roquet) zrau compute locally using interpolation of alpha & beta 
     9   !!            3.6  ! 2013-04  (G. Madec, F. Roquet) zrho compute locally using interpolation of alpha & beta 
    1010   !!            4.0  !  2017-04  (G. Madec)  remove CPP ddm key & avm at t-point only  
    1111   !!---------------------------------------------------------------------- 
     
    7979      REAL(wp) ::   zavft, zavfs    !   -      - 
    8080      REAL(wp) ::   zavdt, zavds    !   -      - 
    81       REAL(wp), DIMENSION(jpi,jpj) ::   zrau, zmsks, zmskf, zmskd1, zmskd2, zmskd3 
     81      REAL(wp), DIMENSION(jpi,jpj) ::   zrho, zmsks, zmskf, zmskd1, zmskd2, zmskd3 
    8282      !!---------------------------------------------------------------------- 
    8383      ! 
     
    9191!!gm                            and many acces in memory 
    9292          
    93          DO jj = 1, jpj                !==  R=zrau = (alpha / beta) (dk[t] / dk[s])  ==! 
     93         DO jj = 1, jpj                !==  R=zrho = (alpha / beta) (dk[t] / dk[s])  ==! 
    9494            DO ji = 1, jpi 
    9595               zrw =   ( gdepw_n(ji,jj,jk  ) - gdept_n(ji,jj,jk) )   & 
     
    105105               zds = zbw * ( tsn(ji,jj,jk-1,jp_sal) - tsn(ji,jj,jk,jp_sal) )  
    106106               IF( ABS( zds) <= 1.e-20_wp )   zds = 1.e-20_wp 
    107                zrau(ji,jj) = MAX(  1.e-20, zdt / zds  )    ! only retains positive value of zrau 
     107               zrho(ji,jj) = MAX(  1.e-20, zdt / zds  )    ! only retains positive value of zrho 
    108108            END DO 
    109109         END DO 
     
    116116               ENDIF 
    117117               ! salt fingering indicator: msksf=1 if R>1; 0 elsewhere             
    118                IF( zrau(ji,jj) <= 1.             ) THEN   ;   zmskf(ji,jj) = 0._wp 
     118               IF( zrho(ji,jj) <= 1.             ) THEN   ;   zmskf(ji,jj) = 0._wp 
    119119               ELSE                                       ;   zmskf(ji,jj) = 1._wp 
    120120               ENDIF 
    121121               ! diffusive layering indicators:  
    122122               !     ! mskdl1=1 if 0< R <1; 0 elsewhere 
    123                IF( zrau(ji,jj) >= 1.             ) THEN   ;   zmskd1(ji,jj) = 0._wp 
     123               IF( zrho(ji,jj) >= 1.             ) THEN   ;   zmskd1(ji,jj) = 0._wp 
    124124               ELSE                                       ;   zmskd1(ji,jj) = 1._wp 
    125125               ENDIF 
    126126               !     ! mskdl2=1 if 0< R <0.5; 0 elsewhere 
    127                IF( zrau(ji,jj) >= 0.5            ) THEN   ;   zmskd2(ji,jj) = 0._wp 
     127               IF( zrho(ji,jj) >= 0.5            ) THEN   ;   zmskd2(ji,jj) = 0._wp 
    128128               ELSE                                       ;   zmskd2(ji,jj) = 1._wp 
    129129               ENDIF 
    130130               !   mskdl3=1 if 0.5< R <1; 0 elsewhere 
    131                IF( zrau(ji,jj) <= 0.5 .OR. zrau(ji,jj) >= 1. ) THEN   ;   zmskd3(ji,jj) = 0._wp 
     131               IF( zrho(ji,jj) <= 0.5 .OR. zrho(ji,jj) >= 1. ) THEN   ;   zmskd3(ji,jj) = 0._wp 
    132132               ELSE                                                   ;   zmskd3(ji,jj) = 1._wp 
    133133               ENDIF 
     
    143143         DO jj = 1, jpj 
    144144            DO ji = 1, jpi 
    145                zinr = 1._wp / zrau(ji,jj) 
     145               zinr = 1._wp / zrho(ji,jj) 
    146146               ! salt fingering 
    147                zrr = zrau(ji,jj) / rn_hsbfr 
     147               zrr = zrho(ji,jj) / rn_hsbfr 
    148148               zrr = zrr * zrr 
    149149               zavfs = rn_avts / ( 1 + zrr*zrr*zrr ) * zmsks(ji,jj) * zmskf(ji,jj) 
     
    151151               ! diffusive layering 
    152152               zavdt = 1.3635e-6 * EXP(  4.6 * EXP( -0.54*(zinr-1.) )  ) * zmsks(ji,jj) * zmskd1(ji,jj) 
    153                zavds = zavdt * zmsks(ji,jj) * (  ( 1.85 * zrau(ji,jj) - 0.85 ) * zmskd3(ji,jj)   & 
    154                   &                             +  0.15 * zrau(ji,jj)          * zmskd2(ji,jj)  ) 
     153               zavds = zavdt * zmsks(ji,jj) * (  ( 1.85 * zrho(ji,jj) - 0.85 ) * zmskd3(ji,jj)   & 
     154                  &                             +  0.15 * zrho(ji,jj)          * zmskd2(ji,jj)  ) 
    155155               ! add to the eddy viscosity coef. previously computed 
    156156               p_avs(ji,jj,jk) = p_avt(ji,jj,jk) + zavfs + zavds 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ZDF/zdfdrg.F90

    r9598 r9923  
    162162      INTEGER  ::   ji, jj       ! dummy loop indexes 
    163163      INTEGER  ::   ikbu, ikbv   ! local integers 
    164       REAL(wp) ::   zm1_2dt      ! local scalar 
    165164      REAL(wp) ::   zCdu, zCdv   !   -      - 
    166165      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrdu, ztrdv 
    167166      !!--------------------------------------------------------------------- 
    168167      ! 
    169 !!gm bug : time step is only rdt (not 2 rdt if euler start !) 
    170       zm1_2dt = - 1._wp / ( 2._wp * rdt ) 
    171  
    172168      IF( l_trddyn ) THEN      ! trends: store the input trends 
    173169         ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 
     
    185181            zCdv = 0.5*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) / e3v_n(ji,jj,ikbv) 
    186182            ! 
    187             pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX(  zCdu , zm1_2dt  ) * pub(ji,jj,ikbu) 
    188             pva(ji,jj,ikbv) = pva(ji,jj,ikbv) + MAX(  zCdv , zm1_2dt  ) * pvb(ji,jj,ikbv) 
     183            pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX(  zCdu , - r1_Dt  ) * pub(ji,jj,ikbu) 
     184            pva(ji,jj,ikbv) = pva(ji,jj,ikbv) + MAX(  zCdv , - r1_Dt  ) * pvb(ji,jj,ikbv) 
    189185         END DO 
    190186      END DO 
     
    200196               zCdv = 0.5*( rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) / e3v_n(ji,jj,ikbv) 
    201197               ! 
    202                pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX(  zCdu , zm1_2dt  ) * pub(ji,jj,ikbu) 
    203                pva(ji,jj,ikbv) = pva(ji,jj,ikbv) + MAX(  zCdv , zm1_2dt  ) * pvb(ji,jj,ikbv) 
     198               pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX(  zCdu , - r1_Dt  ) * pub(ji,jj,ikbu) 
     199               pva(ji,jj,ikbv) = pva(ji,jj,ikbv) + MAX(  zCdv , - r1_Dt  ) * pvb(ji,jj,ikbv) 
    204200           END DO 
    205201         END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ZDF/zdfgls.F90

    r9598 r9923  
    170170            ! 
    171171            ! surface friction 
    172             ustar2_surf(ji,jj) = r1_rau0 * taum(ji,jj) * tmask(ji,jj,1) 
     172            ustar2_surf(ji,jj) = r1_rho0 * taum(ji,jj) * tmask(ji,jj,1) 
    173173            !    
    174174!!gm Rq we may add here r_ke0(_top/_bot) ?  ==>> think about that... 
     
    280280               zd_up(ji,jj,jk) = zcof * ( p_avm(ji,jj,jk+1) + p_avm(ji,jj,jk  ) ) / ( e3t_n(ji,jj,jk  ) * e3w_n(ji,jj,jk) ) 
    281281               !                                               ! diagonal 
    282                zdiag(ji,jj,jk) = 1._wp - zd_lw(ji,jj,jk) - zd_up(ji,jj,jk)  + rdt * zdiss * wmask(ji,jj,jk)  
     282               zdiag(ji,jj,jk) = 1._wp - zd_lw(ji,jj,jk) - zd_up(ji,jj,jk)  + rn_Dt * zdiss * wmask(ji,jj,jk)  
    283283               !                                               ! right hand side in en 
    284                en(ji,jj,jk) = en(ji,jj,jk) + rdt * zesh2 * wmask(ji,jj,jk) 
     284               en(ji,jj,jk) = en(ji,jj,jk) + rn_Dt * zesh2 * wmask(ji,jj,jk) 
    285285            END DO 
    286286         END DO 
     
    530530               zd_up(ji,jj,jk) = zcof * ( p_avm(ji,jj,jk+1) + p_avm(ji,jj,jk  ) ) / ( e3t_n(ji,jj,jk  ) * e3w_n(ji,jj,jk) ) 
    531531               !                                               ! diagonal 
    532                zdiag(ji,jj,jk) = 1._wp - zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) + rdt * zdiss * wmask(ji,jj,jk) 
     532               zdiag(ji,jj,jk) = 1._wp - zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) + rn_Dt * zdiss * wmask(ji,jj,jk) 
    533533               !                                               ! right hand side in psi 
    534                psi(ji,jj,jk) = psi(ji,jj,jk) + rdt * zesh2 * wmask(ji,jj,jk) 
     534               psi(ji,jj,jk) = psi(ji,jj,jk) + rn_Dt * zesh2 * wmask(ji,jj,jk) 
    535535            END DO 
    536536         END DO 
     
    11051105      rc04  = rc03 * rc0 
    11061106      rsbc_tke1 = -3._wp/2._wp*rn_crban*ra_sf*rl_sf                      ! Dirichlet + Wave breaking 
    1107       rsbc_tke2 = rdt * rn_crban / rl_sf                                 ! Neumann + Wave breaking  
     1107      rsbc_tke2 = rn_Dt * rn_crban / rl_sf                               ! Neumann + Wave breaking  
    11081108      zcr = MAX(rsmall, rsbc_tke1**(1./(-ra_sf*3._wp/2._wp))-1._wp ) 
    11091109      rtrans = 0.2_wp / zcr                                              ! Ad. inverse transition length between log and wave layer  
    11101110      rsbc_zs1  = rn_charn/grav                                          ! Charnock formula for surface roughness 
    11111111      rsbc_zs2  = rn_frac_hs / 0.85_wp / grav * 665._wp                  ! Rascle formula for surface roughness  
    1112       rsbc_psi1 = -0.5_wp * rdt * rc0**(rpp-2._wp*rmm) / rsc_psi 
    1113       rsbc_psi2 = -0.5_wp * rdt * rc0**rpp * rnn * vkarmn**rnn / rsc_psi ! Neumann + NO Wave breaking  
    1114       ! 
    1115       rfact_tke = -0.5_wp / rsc_tke * rdt                                ! Cst used for the Diffusion term of tke 
    1116       rfact_psi = -0.5_wp / rsc_psi * rdt                                ! Cst used for the Diffusion term of tke 
     1112      rsbc_psi1 = -0.5_wp * rn_Dt * rc0**(rpp-2._wp*rmm) / rsc_psi 
     1113      rsbc_psi2 = -0.5_wp * rn_Dt * rc0**rpp * rnn * vkarmn**rnn / rsc_psi ! Neumann + NO Wave breaking  
     1114      ! 
     1115      rfact_tke = -0.5_wp / rsc_tke * rn_Dt                              ! Cst used for the Diffusion term of tke 
     1116      rfact_psi = -0.5_wp / rsc_psi * rn_Dt                              ! Cst used for the Diffusion term of tke 
    11171117      ! 
    11181118      !                                !* Wall proximity function 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ZDF/zdfiwm.F90

    r9598 r9923  
    8787      !!              This is divided into three components: 
    8888      !!                 1. Bottom-intensified low-mode dissipation at critical slopes 
    89       !!                     zemx_iwm(z) = ( ecri_iwm / rau0 ) * EXP( -(H-z)/hcri_iwm ) 
     89      !!                     zemx_iwm(z) = ( ecri_iwm / rho0 ) * EXP( -(H-z)/hcri_iwm ) 
    9090      !!                                   / ( 1. - EXP( - H/hcri_iwm ) ) * hcri_iwm 
    9191      !!              where hcri_iwm is the characteristic length scale of the bottom  
    9292      !!              intensification, ecri_iwm a map of available power, and H the ocean depth. 
    9393      !!                 2. Pycnocline-intensified low-mode dissipation 
    94       !!                     zemx_iwm(z) = ( epyc_iwm / rau0 ) * ( sqrt(rn2(z))^nn_zpyc ) 
     94      !!                     zemx_iwm(z) = ( epyc_iwm / rho0 ) * ( sqrt(rn2(z))^nn_zpyc ) 
    9595      !!                                   / SUM( sqrt(rn2(z))^nn_zpyc * e3w(z) ) 
    9696      !!              where epyc_iwm is a map of available power, and nn_zpyc 
     
    9898      !!              energy dissipation. 
    9999      !!                 3. WKB-height dependent high mode dissipation 
    100       !!                     zemx_iwm(z) = ( ebot_iwm / rau0 ) * rn2(z) * EXP(-z_wkb(z)/hbot_iwm) 
     100      !!                     zemx_iwm(z) = ( ebot_iwm / rho0 ) * rn2(z) * EXP(-z_wkb(z)/hbot_iwm) 
    101101      !!                                   / SUM( rn2(z) * EXP(-z_wkb(z)/hbot_iwm) * e3w(z) ) 
    102102      !!              where hbot_iwm is the characteristic length scale of the WKB bottom  
     
    151151         DO ji = 1, jpi 
    152152            zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1)       ! depth of the ocean 
    153             zfact(ji,jj) = rau0 * (  1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) )  ) 
     153            zfact(ji,jj) = rho0 * (  1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) )  ) 
    154154            IF( zfact(ji,jj) /= 0._wp )   zfact(ji,jj) = ecri_iwm(ji,jj) / zfact(ji,jj) 
    155155         END DO 
     
    180180         DO jj = 1, jpj 
    181181            DO ji = 1, jpi 
    182                IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rau0 * zfact(ji,jj) ) 
     182               IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    183183            END DO 
    184184         END DO 
     
    197197         DO jj= 1, jpj 
    198198            DO ji = 1, jpi 
    199                IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rau0 * zfact(ji,jj) ) 
     199               IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    200200            END DO 
    201201         END DO 
     
    247247      DO jj = 1, jpj 
    248248         DO ji = 1, jpi 
    249             IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = ebot_iwm(ji,jj) / ( rau0 * zfact(ji,jj) ) 
     249            IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = ebot_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    250250         END DO 
    251251      END DO 
     
    260260      ! Calculate molecular kinematic viscosity 
    261261      znu_t(:,:,:) = 1.e-4_wp * (  17.91_wp - 0.53810_wp * tsn(:,:,:,jp_tem) + 0.00694_wp * tsn(:,:,:,jp_tem) * tsn(:,:,:,jp_tem)  & 
    262          &                                  + 0.02305_wp * tsn(:,:,:,jp_sal)  ) * tmask(:,:,:) * r1_rau0 
     262         &                                  + 0.02305_wp * tsn(:,:,:,jp_sal)  ) * tmask(:,:,:) * r1_rho0 
    263263      DO jk = 2, jpkm1 
    264264         znu_w(:,:,jk) = 0.5_wp * ( znu_t(:,:,jk-1) + znu_t(:,:,jk) ) * wmask(:,:,jk) 
     
    306306         END DO 
    307307         IF( lk_mpp )   CALL mpp_sum( zztmp ) 
    308          zztmp = rau0 * zztmp ! Global integral of rauo * Kz * N^2 = power contributing to mixing  
     308         zztmp = rho0 * zztmp ! Global integral of rhoo * Kz * N^2 = power contributing to mixing  
    309309         ! 
    310310         IF(lwp) THEN 
     
    350350                                    !* output useful diagnostics: Kz*N^2 ,  
    351351!!gm Kz*N2 should take into account the ratio avs/avt if it is used.... (see diaar5) 
    352                                     !  vertical integral of rau0 * Kz * N^2 , energy density (zemx_iwm) 
     352                                    !  vertical integral of rho0 * Kz * N^2 , energy density (zemx_iwm) 
    353353      IF( iom_use("bflx_iwm") .OR. iom_use("pcmap_iwm") ) THEN 
    354354         ALLOCATE( z2d(jpi,jpj) , z3d(jpi,jpj,jpk) ) 
     
    358358            z2d(:,:) = z2d(:,:) + e3w_n(:,:,jk) * z3d(:,:,jk) * wmask(:,:,jk) 
    359359         END DO 
    360          z2d(:,:) = rau0 * z2d(:,:) 
     360         z2d(:,:) = rho0 * z2d(:,:) 
    361361         CALL iom_put( "bflx_iwm", z3d ) 
    362362         CALL iom_put( "pcmap_iwm", z2d ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ZDF/zdfmxl.F90

    r9598 r9923  
    9393      nmln(:,:)  = nlb10               ! Initialization to the number of w ocean point 
    9494      hmlp(:,:)  = 0._wp               ! here hmlp used as a dummy variable, integrating vertically N^2 
    95       zN2_c = grav * rho_c * r1_rau0   ! convert density criteria into N^2 criteria 
     95      zN2_c = grav * rho_c * r1_rho0   ! convert density criteria into N^2 criteria 
    9696      DO jk = nlb10, jpkm1 
    9797         DO jj = 1, jpj                ! Mixed layer level: w-level  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ZDF/zdfosm.F90

    r9598 r9923  
    298298        DO ji = 2, jpim1 
    299299           ! Surface downward irradiance (so always +ve) 
    300            zrad0(ji,jj) = qsr(ji,jj) * r1_rau0_rcp 
     300           zrad0(ji,jj) = qsr(ji,jj) * r1_rho0_rcp 
    301301           ! Downwards irradiance at base of boundary layer 
    302302           zradh(ji,jj) = zrad0(ji,jj) * ( zz0 * EXP( -hbl(ji,jj)/rn_si0 ) + zz1 * EXP( -hbl(ji,jj)/rn_si1) ) 
     
    312312           zbeta    = rab_n(ji,jj,1,jp_sal) 
    313313           ! Upwards surface Temperature flux for non-local term 
    314            zwth0(ji,jj) = - qns(ji,jj) * r1_rau0_rcp * tmask(ji,jj,1) 
     314           zwth0(ji,jj) = - qns(ji,jj) * r1_rho0_rcp * tmask(ji,jj,1) 
    315315           ! Upwards surface salinity flux for non-local term 
    316            zws0(ji,jj) = - ( ( emp(ji,jj)-rnf(ji,jj) ) * tsn(ji,jj,1,jp_sal)  + sfx(ji,jj) ) * r1_rau0 * tmask(ji,jj,1) 
     316           zws0(ji,jj) = - ( ( emp(ji,jj)-rnf(ji,jj) ) * tsn(ji,jj,1,jp_sal)  + sfx(ji,jj) ) * r1_rho0 * tmask(ji,jj,1) 
    317317           ! Non radiative upwards surface buoyancy flux 
    318318           zwb0(ji,jj) = grav * zthermal * zwth0(ji,jj) -  grav * zbeta * zws0(ji,jj) 
     
    324324           zwbav(ji,jj) = grav  * zthermal * zwthav(ji,jj) - grav  * zbeta * zwsav(ji,jj) 
    325325           ! Surface upward velocity fluxes 
    326            zuw0(ji,jj) = -utau(ji,jj) * r1_rau0 * tmask(ji,jj,1) 
    327            zvw0(ji,jj) = -vtau(ji,jj) * r1_rau0 * tmask(ji,jj,1) 
     326           zuw0(ji,jj) = -utau(ji,jj) * r1_rho0 * tmask(ji,jj,1) 
     327           zvw0(ji,jj) = -vtau(ji,jj) * r1_rho0 * tmask(ji,jj,1) 
    328328           ! Friction velocity (zustar), at T-point : LMD94 eq. 2 
    329329           zustar(ji,jj) = MAX( SQRT( SQRT( zuw0(ji,jj) * zuw0(ji,jj) + zvw0(ji,jj) * zvw0(ji,jj) ) ), 1.0e-8 ) 
     
    455455                           &            + 0.135 * zla(ji,jj) * zwstrl(ji,jj)**3/hbl(ji,jj) ) 
    456456 
    457                       zvel_max =  - ( 1.0 + 1.0 * ( zwstrl(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_rdt / hbl(ji,jj) ) & 
     457                      zvel_max =  - ( 1.0 + 1.0 * ( zwstrl(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_Dt / hbl(ji,jj) ) & 
    458458                           &   * zwb_ent(ji,jj) / ( zwstrl(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 
    459459! Entrainment including component due to shear turbulence. Modified Langmuir component, but gives same result for La=0.3 For testing uncomment. 
     
    461461!                           &            + ( 0.15 * ( 1.0 - EXP( -0.5 * zla(ji,jj) ) ) + 0.03 / zla(ji,jj)**2 ) * zustar(ji,jj)**3/hbl(ji,jj) ) 
    462462 
    463 !                      zvel_max = - ( 1.0 + 1.0 * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_rdt / zhbl(ji,jj) ) * zwb_ent(ji,jj) / & 
     463!                      zvel_max = - ( 1.0 + 1.0 * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_Dt / zhbl(ji,jj) ) * zwb_ent(ji,jj) / & 
    464464!                           &       ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 
    465465                      zzdhdt = - zwb_ent(ji,jj) / ( zvel_max + MAX(zdb_bl(ji,jj),0.0) ) 
     
    472472                      IF ( zzdhdt < 0._wp ) THEN 
    473473                      ! For long timsteps factor in brackets slows the rapid collapse of the OSBL 
    474                          zpert   = 2.0 * ( 1.0 + 2.0 * zwstrl(ji,jj) * rn_rdt / hbl(ji,jj) ) * zwstrl(ji,jj)**2 / hbl(ji,jj) 
     474                         zpert   = 2.0 * ( 1.0 + 2.0 * zwstrl(ji,jj) * rn_Dt / hbl(ji,jj) ) * zwstrl(ji,jj)**2 / hbl(ji,jj) 
    475475                      ELSE 
    476                          zpert   = 2.0 * ( 1.0 + 2.0 * zwstrl(ji,jj) * rn_rdt / hbl(ji,jj) ) * zwstrl(ji,jj)**2 / hbl(ji,jj) & 
     476                         zpert   = 2.0 * ( 1.0 + 2.0 * zwstrl(ji,jj) * rn_Dt / hbl(ji,jj) ) * zwstrl(ji,jj)**2 / hbl(ji,jj) & 
    477477                              &  + MAX( zdb_bl(ji,jj), 0.0 ) 
    478478                      ENDIF 
     
    487487      ibld(:,:) = 3 
    488488 
    489       zhbl_t(:,:) = hbl(:,:) + (zdhdt(:,:) - wn(ji,jj,ibld(ji,jj)))* rn_rdt ! certainly need wb here, so subtract it 
     489      zhbl_t(:,:) = hbl(:,:) + (zdhdt(:,:) - wn(ji,jj,ibld(ji,jj)))* rn_Dt ! certainly need wb here, so subtract it 
    490490      zhbl_t(:,:) = MIN(zhbl_t(:,:), ht_n(:,:)) 
    491       zdhdt(:,:) = MIN(zdhdt(:,:), (zhbl_t(:,:) - hbl(:,:))/rn_rdt + wn(ji,jj,ibld(ji,jj))) ! adjustment to represent limiting by ocean bottom 
     491      zdhdt(:,:) = MIN(zdhdt(:,:), (zhbl_t(:,:) - hbl(:,:))/rn_Dt + wn(ji,jj,ibld(ji,jj))) ! adjustment to represent limiting by ocean bottom 
    492492 
    493493      DO jk = 4, jpkm1 
     
    516516               IF ( lconv(ji,jj) ) THEN 
    517517!unstable 
    518                   zvel_max =  - ( 1.0 + 1.0 * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_rdt / hbl(ji,jj) ) & 
     518                  zvel_max =  - ( 1.0 + 1.0 * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird * rn_Dt / hbl(ji,jj) ) & 
    519519                       &   * zwb_ent(ji,jj) / ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 
    520520 
     
    523523                          & - zbeta * ( zs_bl(ji,jj) - tsn(ji,jj,jm,jp_sal) ) ), 0.0 ) + zvel_max 
    524524 
    525                      zhbl_s = zhbl_s + MIN( - zwb_ent(ji,jj) / zdb * rn_rdt / FLOAT(ibld(ji,jj)-imld(ji,jj) ), e3w_n(ji,jj,jk) ) 
     525                     zhbl_s = zhbl_s + MIN( - zwb_ent(ji,jj) / zdb * rn_Dt / FLOAT(ibld(ji,jj)-imld(ji,jj) ), e3w_n(ji,jj,jk) ) 
    526526                     zhbl_s = MIN(zhbl_s, ht_n(ji,jj)) 
    527527 
     
    13271327            IF ( iom_use("us_x") ) CALL iom_put( "us_x", tmask(:,:,1)*zustke*zcos_wind )   ! x surface Stokes drift 
    13281328            IF ( iom_use("us_y") ) CALL iom_put( "us_y", tmask(:,:,1)*zustke*zsin_wind )  ! y surface Stokes drift 
    1329             IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rau0*tmask(:,:,1)*zustar**2*zustke ) 
     1329            IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rho0*tmask(:,:,1)*zustar**2*zustke ) 
    13301330         ! Stokes drift read in from sbcwave  (=2). 
    13311331         CASE(2) 
    13321332            IF ( iom_use("us_x") ) CALL iom_put( "us_x", ut0sd )               ! x surface Stokes drift 
    13331333            IF ( iom_use("us_y") ) CALL iom_put( "us_y", vt0sd )               ! y surface Stokes drift 
    1334             IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rau0*tmask(:,:,1)*zustar**2* & 
     1334            IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rho0*tmask(:,:,1)*zustar**2* & 
    13351335                 & SQRT(ut0sd**2 + vt0sd**2 ) ) 
    13361336         END SELECT 
     
    13481348         IF ( iom_use("zwstrl") ) CALL iom_put( "zwstrl", tmask(:,:,1)*zwstrl )         ! Langmuir velocity scale 
    13491349         IF ( iom_use("zustar") ) CALL iom_put( "zustar", tmask(:,:,1)*zustar )         ! friction velocity scale 
    1350          IF ( iom_use("wind_power") ) CALL iom_put( "wind_power", 1000.*rau0*tmask(:,:,1)*zustar**3 ) ! BL depth internal to zdf_osm routine 
    1351          IF ( iom_use("wind_wave_power") ) CALL iom_put( "wind_wave_power", 1000.*rau0*tmask(:,:,1)*zustar**2*zustke ) 
     1350         IF ( iom_use("wind_power") ) CALL iom_put( "wind_power", 1000.*rho0*tmask(:,:,1)*zustar**3 ) ! BL depth internal to zdf_osm routine 
     1351         IF ( iom_use("wind_wave_power") ) CALL iom_put( "wind_wave_power", 1000.*rho0*tmask(:,:,1)*zustar**2*zustke ) 
    13521352         IF ( iom_use("zhbl") ) CALL iom_put( "zhbl", tmask(:,:,1)*zhbl )               ! BL depth internal to zdf_osm routine 
    13531353         IF ( iom_use("zhml") ) CALL iom_put( "zhml", tmask(:,:,1)*zhml )               ! ML depth internal to zdf_osm routine 
     
    15841584     imld_rst(:,:)  = nlb10         ! Initialization to the number of w ocean point 
    15851585     hbl(:,:)  = 0._wp              ! here hbl used as a dummy variable, integrating vertically N^2 
    1586      zN2_c = grav * rho_c * r1_rau0 ! convert density criteria into N^2 criteria 
     1586     zN2_c = grav * rho_c * r1_rho0 ! convert density criteria into N^2 criteria 
    15871587     ! 
    15881588     hbl(:,:)  = 0._wp              ! here hbl used as a dummy variable, integrating vertically N^2 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ZDF/zdfric.F90

    r9598 r9923  
    181181         DO jj = 2, jpjm1        !* Ekman depth 
    182182            DO ji = 2, jpim1 
    183                zustar = SQRT( taum(ji,jj) * r1_rau0 ) 
     183               zustar = SQRT( taum(ji,jj) * r1_rho0 ) 
    184184               zhek   = rn_ekmfc * zustar / ( ABS( ff_t(ji,jj) ) + rsmall )   ! Ekman depth 
    185185               zh_ekm(ji,jj) = MAX(  rn_mldmin , MIN( zhek , rn_mldmax )  )   ! set allowed range 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/ZDF/zdftke.F90

    r9598 r9923  
    195195      REAL(wp) ::   zrhoa  = 1.22              ! Air density kg/m3 
    196196      REAL(wp) ::   zcdrag = 1.5e-3            ! drag coefficient 
    197       REAL(wp) ::   zbbrau, zri                ! local scalars 
     197      REAL(wp) ::   zbbrho, zri                ! local scalars 
    198198      REAL(wp) ::   zfact1, zfact2, zfact3     !   -         - 
    199199      REAL(wp) ::   ztx2  , zty2  , zcof       !   -         - 
     
    206206      !!-------------------------------------------------------------------- 
    207207      ! 
    208       zbbrau = rn_ebb / rau0       ! Local constant initialisation 
    209       zfact1 = -.5_wp * rdt  
    210       zfact2 = 1.5_wp * rdt * rn_ediss 
    211       zfact3 = 0.5_wp       * rn_ediss 
     208      zbbrho = rn_ebb * r1_rho0       ! Local constant initialisation 
     209      zfact1 = -.5_wp * rn_Dt  
     210      zfact2 = 1.5_wp * rn_Dt * rn_ediss 
     211      zfact3 = 0.5_wp         * rn_ediss 
    212212      ! 
    213213      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     
    215215      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    216216       
    217       DO jj = 2, jpjm1            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
     217      DO jj = 2, jpjm1            ! en(1)   = rn_ebb taum / rho0  (min value rn_emin0) 
    218218         DO ji = fs_2, fs_jpim1   ! vector opt. 
    219             en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 
     219            en(ji,jj,1) = MAX( rn_emin0, zbbrho * taum(ji,jj) ) * tmask(ji,jj,1) 
    220220         END DO 
    221221      END DO 
     
    232232      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    233233      ! 
    234       !   en(bot)   = (ebb0/rau0)*0.5*sqrt(u_botfr^2+v_botfr^2) (min value rn_emin) 
     234      !   en(bot)   = (ebb0/rho0)*0.5*sqrt(u_botfr^2+v_botfr^2) (min value rn_emin) 
    235235      ! where ebb0 does not includes surface wave enhancement (i.e. ebb0=3.75) 
    236236      ! Note that stress averaged is done using an wet-only calculation of u and v at t-point like in zdfsh2 
     
    242242               zmsku = ( 2. - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 
    243243               zmskv = ( 2. - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) ) 
    244                !                       ! where 0.001875 = (rn_ebb0/rau0) * 0.5 = 3.75*0.5/1000. (CAUTION CdU<0) 
     244               !                       ! where 0.001875 = (rn_ebb0/rho0) * 0.5 = 3.75*0.5/1000. (CAUTION CdU<0) 
    245245               zebot = - 0.001875_wp * rCdU_bot(ji,jj) * SQRT(  ( zmsku*( ub(ji,jj,mbkt(ji,jj))+ub(ji-1,jj,mbkt(ji,jj)) ) )**2  & 
    246246                  &                                           + ( zmskv*( vb(ji,jj,mbkt(ji,jj))+vb(ji,jj-1,mbkt(ji,jj)) ) )**2  ) 
     
    253253                  zmsku = ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 
    254254                  zmskv = ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) ) 
    255                   !                             ! where 0.001875 = (rn_ebb0/rau0) * 0.5 = 3.75*0.5/1000.  (CAUTION CdU<0) 
     255                  !                             ! where 0.001875 = (rn_ebb0/rho0) * 0.5 = 3.75*0.5/1000.  (CAUTION CdU<0) 
    256256                  zetop = - 0.001875_wp * rCdU_top(ji,jj) * SQRT(  ( zmsku*( ub(ji,jj,mikt(ji,jj))+ub(ji-1,jj,mikt(ji,jj)) ) )**2  & 
    257257                     &                                           + ( zmskv*( vb(ji,jj,mikt(ji,jj))+vb(ji,jj-1,mikt(ji,jj)) ) )**2  ) 
     
    298298                  zwlc = zind * rn_lc * zus * SIN( rpi * pdepw(ji,jj,jk) / zhlc(ji,jj) ) 
    299299                  !                                           ! TKE Langmuir circulation source term 
    300                   en(ji,jj,jk) = en(ji,jj,jk) + rdt * MAX(0.,1._wp - 4.*fr_i(ji,jj) ) * ( zwlc * zwlc * zwlc )   & 
    301                      &                              / zhlc(ji,jj) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
     300                  en(ji,jj,jk) = en(ji,jj,jk) + rn_Dt * MAX(0.,1._wp - 4.*fr_i(ji,jj) ) * ( zwlc * zwlc * zwlc )   & 
     301                     &                                / zhlc(ji,jj) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    302302               END DO 
    303303            END DO 
     
    342342               ! 
    343343               !                                   ! right hand side in en 
    344                en(ji,jj,jk) = en(ji,jj,jk) + rdt * (  p_sh2(ji,jj,jk)                          &   ! shear 
    345                   &                                 - p_avt(ji,jj,jk) * rn2(ji,jj,jk)          &   ! stratification 
    346                   &                                 + zfact3 * dissl(ji,jj,jk) * en(ji,jj,jk)  &   ! dissipation 
    347                   &                                ) * wmask(ji,jj,jk) 
     344               en(ji,jj,jk) = en(ji,jj,jk) + rn_Dt * (  p_sh2(ji,jj,jk)                          &   ! shear 
     345                  &                                   - p_avt(ji,jj,jk) * rn2(ji,jj,jk)          &   ! stratification 
     346                  &                                   + zfact3 * dissl(ji,jj,jk) * en(ji,jj,jk)  &   ! dissipation 
     347                  &                                  ) * wmask(ji,jj,jk) 
    348348            END DO 
    349349         END DO 
     
    422422                  zdif = taum(ji,jj) - ztau                            ! mean of modulus - modulus of the mean  
    423423                  zdif = rhftau_scl * MAX( 0._wp, zdif + rhftau_add )  ! apply some modifications... 
    424                   en(ji,jj,jk) = en(ji,jj,jk) + zbbrau * zdif * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) )   & 
     424                  en(ji,jj,jk) = en(ji,jj,jk) + zbbrho * zdif * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) )   & 
    425425                     &                        * MAX(0.,1._wp - rn_eice *fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    426426               END DO 
     
    473473      ! 
    474474      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    475       REAL(wp) ::   zrn2, zraug, zcoef, zav   ! local scalars 
     475      REAL(wp) ::   zrn2, zrhog, zcoef, zav   ! local scalars 
    476476      REAL(wp) ::   zdku,   zdkv, zsqen       !   -      - 
    477477      REAL(wp) ::   zemxl, zemlm, zemlp       !   -      - 
     
    489489      zmxld(:,:,:)  = rmxl_min 
    490490      ! 
    491       IF( ln_mxl0 ) THEN            ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rau0*g) 
    492          zraug = vkarmn * 2.e5_wp / ( rau0 * grav ) 
     491      IF( ln_mxl0 ) THEN            ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rho0*g) 
     492         zrhog = vkarmn * 2.e5_wp / ( rho0 * grav ) 
    493493         DO jj = 2, jpjm1 
    494494            DO ji = fs_2, fs_jpim1 
    495                zmxlm(ji,jj,1) = MAX( rn_mxl0, zraug * taum(ji,jj) * tmask(ji,jj,1) ) 
     495               zmxlm(ji,jj,1) = MAX( rn_mxl0, zrhog * taum(ji,jj) * tmask(ji,jj,1) ) 
    496496            END DO 
    497497         END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/module_example

    r9598 r9923  
    9393      INTEGER  ::   ji, jj, jk       ! dummy loop arguments  (DOCTOR : start with j, but not jp) 
    9494      INTEGER  ::   itoto, itata     ! temporary integers    (DOCTOR : start with i 
    95       REAL(wp) ::   zmlmin, zbbrau   ! temporary scalars     (DOCTOR : start with z) 
     95      REAL(wp) ::   zmlmin, zbbrho   ! temporary scalars     (DOCTOR : start with z) 
    9696      REAL(wp) ::   zfact1, zfact2   ! do not use continuation lines in declaration 
    9797      REAL(wp), DIMENSION(jpi,jpj) ::   zwrk_2d   ! 2D workspace 
     
    101101 
    102102      zmlmin = 1.e-8                             ! Local constant initialization 
    103       zbbrau =  .5 * ebb / rau0 
    104       zfact1 = -.5 * rdt * efave 
    105       zfact2 = 1.5 * rdt * ediss 
     103      zbbrho =  .5 * ebb / rho0 
     104      zfact1 = -.5 * rn_Dt * efave 
     105      zfact2 = 1.5 * rn_Dt * ediss 
    106106 
    107107      SELECT CASE ( npdl )                       ! short description of the action 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/nemogcm.F90

    r9863 r9923  
    154154      !                                               !== set the model time-step  ==! 
    155155      ! 
    156       IF( l_1st_euler ) THEN   ;   r2dt =         rn_rdt   ;   l_1st_euler = .TRUE.    ! start or restart with Euler 1st time-step 
    157       ELSE                     ;   r2dt = 2._wp * rn_rdt   ;   l_1st_euler = .FALSE.   ! restart with leapfrog 
    158       ENDIF 
    159       r1_2dt = 1._wp / r2dt 
    160       ! NB: if l_1st_euler=T, r2dt will be set to 2*rdt at the end of the 1st time-step (in step.F90) 
     156      IF( l_1st_euler ) THEN   ;   rDt =         rn_Dt   ;   l_1st_euler = .TRUE.    ! start or restart with Euler 1st time-step 
     157      ELSE                     ;   rDt = 2._wp * rn_Dt   ;   l_1st_euler = .FALSE.   ! restart with leapfrog 
     158      ENDIF 
     159      r1_Dt = 1._wp / rDt 
     160      ! NB: if l_1st_euler=T, rDt will be set to 2*rn_Dt at the end of the 1st time-step (in step.F90) 
    161161      !     Done here (not in domain.F90) as in ASM initialization an Euler 1st time step can be forced 
    162162      ! 
     
    440440 
    441441      !                                      ! Icebergs 
    442                            CALL icb_init( rdt, nit000)   ! initialise icebergs instance 
     442                           CALL icb_init( rn_Dt, nit000)   ! initialise icebergs instance 
    443443 
    444444      !                                      ! Misc. options 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/oce.F90

    r9598 r9923  
    2727   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   rn2b ,  rn2            !: brunt-vaisala frequency**2     [s-2] 
    2828   ! 
    29    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rhd    !: in situ density anomalie rhd=(rho-rau0)/rau0  [no units] 
     29   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rhd    !: in situ density anomalie rhd=(rho-rho0)/rho0  [no units] 
    3030   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rhop   !: potential volumic mass                           [kg/m3] 
    3131 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/step.F90

    r9863 r9923  
    324324      ! 
    325325      IF( l_1st_euler ) THEN 
    326          r2dt   = 2._wp * rn_rdt                            ! recover Leap-frog time-step 
    327          r1_2dt = 1._wp / r2dt 
     326         rDt    = 2._wp * rn_Dt                             ! recover Leap-frog time-step 
     327         r1_Dt = 1._wp / rDt 
    328328         l_1st_euler = .FALSE. 
    329329      ENDIF 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OFF/dtadyn.F90

    r9598 r9923  
    438438      ENDIF 
    439439 
    440       sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:))  ! before <-- now filtered 
     440      sshb(:,:) = sshn(:,:) + rn_atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) )   ! before <-- now filtered 
    441441      sshn(:,:) = ssha(:,:) 
    442442 
     
    511511      INTEGER                       :: jk 
    512512      REAL(wp), DIMENSION(jpi,jpj)  :: zhdiv   
    513       REAL(wp)  :: z2dt   
    514       !!---------------------------------------------------------------------- 
    515       ! 
    516       z2dt = 2._wp * rdt 
     513      !!---------------------------------------------------------------------- 
    517514      ! 
    518515      zhdiv(:,:) = 0._wp 
     
    521518      END DO 
    522519      !                                                ! Sea surface  elevation time-stepping 
    523       pssha(:,:) = ( psshb(:,:) - z2dt * ( r1_rau0 * pemp(:,:)  + zhdiv(:,:) ) ) * ssmask(:,:) 
     520      pssha(:,:) = ( psshb(:,:) - rDt * ( r1_rho0 * pemp(:,:)  + zhdiv(:,:) ) ) * ssmask(:,:) 
    524521      !                                                 !  
    525522      !                                                 ! After acale factors at t-points ( z_star coordinate ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OFF/nemogcm.F90

    r9863 r9923  
    102102      !                                               !== set the model time-step  ==! 
    103103      ! 
    104       IF( l_1st_euler ) THEN   ;   r2dt =         rn_rdt   ;   l_1st_euler = .TRUE.    ! start or restart with Euler 1st time-step 
    105       ELSE                     ;   r2dt = 2._wp * rn_rdt   ;   l_1st_euler = .FALSE.   ! restart with leapfrog 
    106       ENDIF 
    107       r1_2dt = 1._wp / r2dt 
    108       ! NB: if l_1st_euler=T, r2dt will be set to 2*rdt at the end of the 1st time-step (in step.F90) 
    109       !     Done here (not in domain.F90) as in ASM initialization an Euler 1st time step can be forced 
     104      IF( l_1st_euler ) THEN   ;   rDt =         rn_Dt   ;   l_1st_euler = .TRUE.    ! start or restart with Euler 1st time-step 
     105      ELSE                     ;   rDt = 2._wp * rn_Dt   ;   l_1st_euler = .FALSE.   ! restart with leapfrog 
     106      ENDIF 
     107      r1_Dt = 1._wp / rDt 
     108      ! NB: if l_1st_euler=T, rDt will be set to 2*rn_Dt at the end of the 1st time-step (see the DO WHILE below) 
    110109      ! 
    111110      ! 
     
    126125                                CALL stp_ctl    ( istp, indic )  ! Time loop: control and print 
    127126         IF( l_1st_euler ) THEN 
    128             r2dt   = 2._wp * rn_rdt                              ! recover Leap-frog time-step 
    129             r1_2dt = 1._wp / r2dt 
     127            rDt   = 2._wp * rDt                                  ! recover Leap-frog time-step 
     128            r1_Dt = 1._wp / rDt 
    130129            l_1st_euler = .FALSE. 
    131130         ENDIF 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/SAS/daymod.F90

    r9598 r9923  
    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   !!---------------------------------------------------------------------- 
     
    7272      ! 
    7373      ! max number of seconds between each restart 
    74       IF( REAL( nitend - nit000 + 1 ) * rdt > REAL( HUGE( nsec1jan000 ) ) ) THEN 
     74      IF( REAL( nitend - nit000 + 1 ) * rn_Dt > REAL( HUGE( nsec1jan000 ) ) ) THEN 
    7575         CALL ctl_stop( 'The number of seconds between each restart exceeds the integer 4 max value: 2^31-1. ',   & 
    7676            &           'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 
    7777      ENDIF 
    78       nsecd   = NINT( rday       ) 
    79       nsecd05 = NINT( 0.5 * rday ) 
    80       ndt     = NINT(       rdt ) 
    81       ndt05   = NINT( 0.5 * rdt ) 
     78      nsecd   = NINT( rday        ) 
     79      nsecd05 = NINT( 0.5 * rday  ) 
     80      ndt     = NINT(       rn_Dt ) 
     81      ndt05   = NINT( 0.5 * rn_Dt ) 
    8282 
    8383      IF( .NOT. l_offline )   CALL day_rst( nit000, 'READ' ) 
     
    237237      nsec_week  = nsec_week  + ndt 
    238238      nsec_day   = nsec_day   + ndt 
    239       adatrj  = adatrj  + rdt / rday 
    240       fjulday = fjulday + rdt / rday 
     239      adatrj  = adatrj  + rn_Dt / rday 
     240      fjulday = fjulday + rn_Dt / rday 
    241241      IF( ABS(fjulday - REAL(NINT(fjulday),wp)) < zprec )   fjulday = REAL(NINT(fjulday),wp)   ! avoid truncation error 
    242242      IF( ABS(adatrj  - REAL(NINT(adatrj ),wp)) < zprec )   adatrj  = REAL(NINT(adatrj ),wp)   ! avoid truncation error 
     
    307307      !!       In both those options, the  exact duration of the experiment 
    308308      !!       since the beginning (cumulated duration of all previous restart runs) 
    309       !!       is not stored in the restart and is assumed to be (nit000-1)*rdt. 
     309      !!       is not stored in the restart and is assumed to be (nit000-1)*rn_Dt. 
    310310      !!       This is valid is the time step has remained constant. 
    311311      !! 
     
    376376               nminute = ( nn_time0 - nhour * 100 ) 
    377377               IF( nhour*3600+nminute*60-ndt05 .lt. 0 )  ndastp=ndastp-1      ! Start hour is specified in the namelist (default 0) 
    378                adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
     378               adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    379379               ! note this is wrong if time step has changed during run 
    380380            ENDIF 
     
    385385       nminute = ( nn_time0 - nhour * 100 ) 
    386386            IF( nhour*3600+nminute*60-ndt05 .lt. 0 )  ndastp=ndastp-1      ! Start hour is specified in the namelist (default 0) 
    387             adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
     387            adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    388388         ENDIF 
    389389         IF( ABS(adatrj  - REAL(NINT(adatrj),wp)) < 0.1 / rday )   adatrj = REAL(NINT(adatrj),wp)   ! avoid truncation error 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/SAS/diawri.F90

    r9652 r9923  
    158158      ENDIF 
    159159#if defined key_diainstant 
    160       zsto = nwrite * rdt 
     160      zsto = nwrite * rn_Dt 
    161161      clop = "inst("//TRIM(clop)//")" 
    162162#else 
    163       zsto=rdt 
     163      zsto = rn_Dt 
    164164      clop = "ave("//TRIM(clop)//")" 
    165165#endif 
    166       zout = nwrite * rdt 
    167       zmax = ( nitend - nit000 + 1 ) * rdt 
     166      zout = nwrite * rn_Dt 
     167      zmax = ( nitend - nit000 + 1 ) * rn_Dt 
    168168 
    169169      ! Define indices of the horizontal output zoom and vertical limit storage 
     
    185185 
    186186         ! Compute julian date from starting date of the run 
    187          CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) 
     187         CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian ) 
    188188         zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    189189         IF(lwp)WRITE(numout,*) 
     
    207207         CALL histbeg( clhstnam, jpi, glamt, jpj, gphit,           &  ! Horizontal grid: glamt and gphit 
    208208            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    209             &          nit000-1, zjulian, rdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
     209            &          nit000-1, zjulian, rn_Dt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 
    210210         CALL histvert( nid_T, "deptht", "Vertical T levels",      &  ! Vertical grid: gdept 
    211211            &           "m", ipk, gdept_1d, nz_T, "down" ) 
     
    219219         CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu,           &  ! Horizontal grid: glamu and gphiu 
    220220            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    221             &          nit000-1, zjulian, rdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
     221            &          nit000-1, zjulian, rn_Dt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 
    222222         CALL histvert( nid_U, "depthu", "Vertical U levels",      &  ! Vertical grid: gdept 
    223223            &           "m", ipk, gdept_1d, nz_U, "down" ) 
     
    231231         CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv,           &  ! Horizontal grid: glamv and gphiv 
    232232            &          iimi, iima-iimi+1, ijmi, ijma-ijmi+1,       & 
    233             &          nit000-1, zjulian, rdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
     233            &          nit000-1, zjulian, rn_Dt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 
    234234         CALL histvert( nid_V, "depthv", "Vertical V levels",      &  ! Vertical grid : gdept 
    235235            &          "m", ipk, gdept_1d, nz_V, "down" ) 
     
    360360      clname = cdfile_name 
    361361      IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) 
    362       zsto = rdt 
     362      zsto = rn_Dt 
    363363      clop = "inst(x)"           ! no use of the mask value (require less cpu time) 
    364       zout = rdt 
    365       zmax = ( nitend - nit000 + 1 ) * rdt 
     364      zout = rn_Dt 
     365      zmax = ( nitend - nit000 + 1 ) * rn_Dt 
    366366 
    367367      IF(lwp) WRITE(numout,*) 
     
    375375 
    376376      ! Compute julian date from starting date of the run 
    377       CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian )         ! time axis  
     377      CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian )         ! time axis  
    378378      zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    379379      CALL histbeg( clname, jpi, glamt, jpj, gphit,   & 
    380           1, jpi, 1, jpj, nit000-1, zjulian, rdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
     380          1, jpi, 1, jpj, nit000-1, zjulian, rn_Dt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 
    381381      CALL histvert( id_i, "deptht", "Vertical T levels",   &    ! Vertical grid : gdept 
    382382          "m", jpk, gdept_1d, nz_i, "down") 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/C14/trcatm_c14.F90

    r9598 r9923  
    223223      IF(kc14typ >= 1) THEN  ! Transient C14 & CO2 
    224224      ! 
    225          tyrc14_now = tyrc14_now + ( rdt / ( rday * nyear_len(1)) )    !  current time step in yr relative to tyrc14_beg 
     225         tyrc14_now = tyrc14_now + ( rn_Dt / ( rday * nyear_len(1) ) )    !  current time step in yr relative to tyrc14_beg 
    226226      ! 
    227227      ! CO2 -------------------------------------------------------- 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/C14/trcsms_c14.F90

    r9598 r9923  
    123123             
    124124      ! cumulation of air-to-sea flux at each time step 
    125       qint_c14(:,:) = qint_c14(:,:) + qtr_c14(:,:) * rdttrc 
     125      qint_c14(:,:) = qint_c14(:,:) + qtr_c14(:,:) * rn_Dt_trc 
    126126      ! 
    127127      ! Add the surface flux to the trend of jp_c14 
     
    148148         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    149149         ! 
    150          CALL iom_rstput( kt, nitrst, numrtw, 'co2sbc', co2sbc )       ! These five need      & 
     150         CALL iom_rstput( kt, nitrst, numrtw, 'co2sbc', co2sbc )     ! These five need      & 
    151151         CALL iom_rstput( kt, nitrst, numrtw, 'c14sbc', c14sbc )     ! &    to be written   & 
    152152         CALL iom_rstput( kt, nitrst, numrtw, 'exch_co2', exch_co2 ) ! &    for temporal    & 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/CFC/trcsms_cfc.F90

    r9613 r9923  
    161161 
    162162               ! cumulation of surface flux at each time step 
    163                qint_cfc(ji,jj,jl) = qint_cfc(ji,jj,jl) + qtr_cfc(ji,jj,jl) * rdt 
     163               qint_cfc(ji,jj,jl) = qint_cfc(ji,jj,jl) + qtr_cfc(ji,jj,jl) * rn_Dt 
    164164               !                                               !----------------! 
    165165            END DO                                             !  end i-j loop  ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/PISCES/P2Z/p2zexp.F90

    r9863 r9923  
    9999            zwork = vsed * trn(ji,jj,ikt,jpdet) 
    100100            zsedpoca(ji,jj) = ( zwork + dminl(ji,jj) * xksi(ji,jj)   & 
    101                &           - sedlam * sedpocn(ji,jj) - sedlostpoc * sedpocn(ji,jj) ) * rdt 
     101               &           - sedlam * sedpocn(ji,jj) - sedlostpoc * sedpocn(ji,jj) ) * rn_Dt 
    102102            zgeolpoc = zgeolpoc + sedlostpoc * sedpocn(ji,jj) * e1e2t(ji,jj) 
    103103         END DO 
     
    126126           DO ji = 1, jpi 
    127127              zsedpocd = zsedpoca(ji,jj) - 2. * sedpocn(ji,jj) + sedpocb(ji,jj)     ! time laplacian on tracers 
    128               sedpocb(ji,jj) = sedpocn(ji,jj) + atfp * zsedpocd                     ! sedpocb <-- filtered sedpocn 
     128              sedpocb(ji,jj) = sedpocn(ji,jj) + rn_atfp * zsedpocd                  ! sedpocb <-- filtered sedpocn 
    129129              sedpocn(ji,jj) = zsedpoca(ji,jj)                                      ! sedpocn <-- sedpoca 
    130130           END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/PISCES/P4Z/p4zsms.F90

    r9863 r9923  
    8989      IF( ln_pisdmp .AND. MOD( kt - nn_dttrc, nn_pisdmp ) == 0 )   CALL p4z_dmp( kt )      ! Relaxation of some tracers 
    9090      ! 
    91       rfact = r2dttrc 
     91      rfact = rDt_trc 
    9292      ! 
    9393      IF( ( ln_top_euler .AND. kt == nittrc000 )  .OR. ( .NOT.ln_top_euler .AND. kt <= nittrc000 + nn_dttrc ) ) THEN 
     
    9797         xstep = rfact2 / rday         ! Time step duration for biology 
    9898         IF(lwp) WRITE(numout,*)  
    99          IF(lwp) WRITE(numout,*) '    Passive Tracer  time step    rfact  = ', rfact, ' rdt = ', rdt 
     99         IF(lwp) WRITE(numout,*) '    Passive Tracer  time step    rfact  = ', rfact, ' rn_Dt = ', rn_Dt, ' [s]' 
    100100         IF(lwp) write(numout,*) '    PISCES  Biology time step    rfact2 = ', rfact2 
    101101         IF(lwp) WRITE(numout,*) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/PISCES/SED/sedwri.F90

    r5215 r9923  
    11MODULE sedwri 
    2 #if defined key_sed 
    32   !!====================================================================== 
    43   !!                     ***  MODULE  sedwri  *** 
    54   !!         Sediment diagnostics :  write sediment output files 
    65   !!====================================================================== 
     6   !!   History :       !  06-07  (C. Ethe)  original 
     7   !!---------------------------------------------------------------------- 
     8#if defined key_sed 
     9   !!---------------------------------------------------------------------- 
     10   !!                                                   NetCDF output file 
     11   !!---------------------------------------------------------------------- 
    712   USE sed 
    813   USE sedarr 
     
    1318   PRIVATE 
    1419 
    15    !! * Accessibility 
    16    PUBLIC sed_wri  
    17  
    18    INTEGER  :: nised 
    19    INTEGER  :: nhorised 
    20    INTEGER  :: ndimt52 
    21    INTEGER  :: ndimt51 
    22    INTEGER  :: ndepsed 
    23    REAL(wp) :: zjulian 
    24    INTEGER, ALLOCATABLE, SAVE, DIMENSION(:) :: ndext52   
    25    INTEGER, ALLOCATABLE, SAVE, DIMENSION(:) :: ndext51 
    26  
     20   PUBLIC   sed_wri  
     21 
     22   INTEGER  ::   nised 
     23   INTEGER  ::   nhorised 
     24   INTEGER  ::   ndimt52 
     25   INTEGER  ::   ndimt51 
     26   INTEGER  ::   ndepsed 
     27   REAL(wp) ::   zjulian 
     28   ! 
     29   INTEGER, ALLOCATABLE, SAVE, DIMENSION(:) ::   ndext52   
     30   INTEGER, ALLOCATABLE, SAVE, DIMENSION(:) ::   ndext51 
     31 
     32   !!---------------------------------------------------------------------- 
     33   !! NEMO/TOP 4.0 , NEMO Consortium (2018) 
    2734   !! $Id$ 
     35   !! Software governed by the CeCILL licence     (./LICENSE) 
     36   !!---------------------------------------------------------------------- 
    2837CONTAINS 
    2938 
    30    !!---------------------------------------------------------------------- 
    31    !!                                                   NetCDF output file 
    32    !!---------------------------------------------------------------------- 
    3339   SUBROUTINE sed_wri( kt ) 
    3440      !!---------------------------------------------------------------------- 
     
    3743      !! ** Purpose :  output of sediment passive tracer 
    3844      !! 
    39       !!   History : 
    40       !!        !  06-07  (C. Ethe)  original 
    4145      !!---------------------------------------------------------------------- 
    42  
    4346      INTEGER, INTENT(in) :: kt 
    44  
     47      ! 
    4548      CHARACTER(len = 60)  ::  clhstnam, clop 
    4649      INTEGER  :: ji, jk, js, jw, jn 
     
    5154      REAL(wp)  :: zrate 
    5255      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zdta, zflx 
    53  
    5456      !!------------------------------------------------------------------- 
    5557 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/PISCES/sms_pisces.F90

    r9598 r9923  
    1313   PUBLIC 
    1414 
    15    INTEGER ::   numnatp_ref = -1           !! Logical units for namelist pisces 
    16    INTEGER ::   numnatp_cfg = -1           !! Logical units for namelist pisces 
    17    INTEGER ::   numonp      = -1           !! Logical unit for namelist pisces output 
     15   INTEGER ::   numnatp_ref = -1   !: Logical units for namelist pisces 
     16   INTEGER ::   numnatp_cfg = -1   !: Logical units for namelist pisces 
     17   INTEGER ::   numonp      = -1   !: Logical unit for namelist pisces output 
    1818 
    1919   !                                                       !:  PISCES  : silicon dependant half saturation 
     
    2626 
    2727   !!*  Time variables 
    28    INTEGER  ::   nrdttrc           !: ??? 
     28   INTEGER  ::   nrdttrc           !: frequency for the biology 
    2929   REAL(wp) ::   rfact , rfactr    !: ??? 
    3030   REAL(wp) ::   rfact2, rfact2r   !: ??? 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trcadv.F90

    r9598 r9923  
    125125         CALL tra_adv_cen( kt, nittrc000,'TRC',          zun, zvn, zwn     , trn, tra, jptra, nn_cen_h, nn_cen_v ) 
    126126      CASE ( np_FCT )                                 ! FCT      : 2nd / 4th order 
    127          CALL tra_adv_fct( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v ) 
     127         CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zun, zvn, zwn, trb, trn, tra, jptra, nn_fct_h, nn_fct_v ) 
    128128      CASE ( np_MUS )                                 ! MUSCL 
    129          CALL tra_adv_mus( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb,      tra, jptra        , ln_mus_ups )  
     129         CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zun, zvn, zwn, trb,      tra, jptra        , ln_mus_ups )  
    130130      CASE ( np_UBS )                                 ! UBS 
    131          CALL tra_adv_ubs( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra          , nn_ubs_v ) 
     131         CALL tra_adv_ubs( kt, nittrc000,'TRC', rDt_trc, zun, zvn, zwn, trb, trn, tra, jptra          , nn_ubs_v ) 
    132132      CASE ( np_QCK )                                 ! QUICKEST 
    133          CALL tra_adv_qck( kt, nittrc000,'TRC', r2dttrc, zun, zvn, zwn, trb, trn, tra, jptra                     ) 
     133         CALL tra_adv_qck( kt, nittrc000,'TRC', rDt_trc, zun, zvn, zwn, trb, trn, tra, jptra                     ) 
    134134      ! 
    135135      END SELECT 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trcnxt.F90

    r9863 r9923  
    7474      !!      the divergence of two consecutive time-steps and tr arrays 
    7575      !!      to prepare the next time_step: 
    76       !!         (trb) = (trn) + atfp [ (trb) + (tra) - 2 (trn) ] 
     76      !!         (trb) = (trn) + rn_atfp [ (trb) + (tra) - 2 (trn) ] 
    7777      !!         (trn) = (tra) ; (tra) = (0,0) 
    7878      !! 
     
    117117      ELSE      
    118118         IF( .NOT. l_offline ) THEN ! Leap-Frog + Asselin filter time stepping 
    119             IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nittrc000,         'TRC', trb, trn, tra, jptra )  !     linear ssh 
    120             ELSE                   ;   CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra,      & 
    121               &                                                                   sbc_trc, sbc_trc_b, jptra )  ! non-linear ssh 
     119            IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nittrc000,            'TRC', trb, trn, tra, jptra )  !     linear ssh 
     120            ELSE                   ;   CALL tra_nxt_vvl( kt, nittrc000, rn_Dt_trc, 'TRC', trb, trn, tra,       & 
     121              &                                                                      sbc_trc, sbc_trc_b, jptra )  ! non-linear ssh 
    122122            ENDIF 
    123123         ELSE 
     
    131131         DO jn = 1, jptra 
    132132            DO jk = 1, jpkm1 
    133                zfact = 1._wp / r2dttrc   
    134                ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact  
     133               ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * r1_Dt_trc  
    135134               CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt ) 
    136135            END DO 
     
    166165      !!                  /( e3t_n    + rbcp*[ e3t_b    - 2 e3t_n    + e3t_a    ] )    
    167166      !!             ztm = 0                                                       otherwise 
    168       !!             tb  = ( e3t_n*tn + atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] ) 
    169       !!                  /( e3t_n    + atfp*[ e3t_b    - 2 e3t_n    + e3t_a    ] ) 
     167      !!             tb  = ( e3t_n*tn + rn_atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] ) 
     168      !!                  /( e3t_n    + rn_atfp*[ e3t_b    - 2 e3t_n    + e3t_a    ] ) 
    170169      !!             tn  = ta  
    171170      !!             ta  = zt        (NB: reset to 0 after eos_bn2 call) 
     
    186185         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
    187186         IF( .NOT. ln_linssh ) THEN 
    188             rfact1 = atfp * rdttrc 
    189             rfact2 = rfact1 / rau0 
     187            rfact1 = rn_atfp * rn_Dt_trc 
     188            rfact2 = rfact1 * r1_rho0 
    190189         ENDIF 
    191190        !   
     
    207206                  ztc_d  = ztc_a  - 2. * ztc_n  + ztc_b 
    208207                  ! 
    209                   ze3t_f = ze3t_n + atfp * ze3t_d 
    210                   ztc_f  = ztc_n  + atfp * ztc_d 
     208                  ze3t_f = ze3t_n + rn_atfp * ze3t_d 
     209                  ztc_f  = ztc_n  + rn_atfp * ztc_d 
    211210                  ! 
    212211                  IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN           ! top ocean level  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trcrad.F90

    r9788 r9923  
    174174            IF( l_trdtrc ) THEN 
    175175               ! 
    176                zs2rdt = 1. / ( 2. * rdt ) 
     176!!gm Question: Is this correct with an Euler first time-step ?? 
     177               zs2rdt = 1. / ( 2. * rn_Dt ) 
    177178               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 
    178179               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt  
     
    204205            IF( l_trdtrc ) THEN 
    205206               ! 
    206                zs2rdt = 1. / ( 2. * rdt * REAL( nn_dttrc, wp ) ) 
     207               zs2rdt = 1. / ( 2. * rn_Dt * REAL( nn_dttrc, wp ) ) 
    207208               ztrtrdb(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrdb(:,:,:) ) * zs2rdt 
    208209               ztrtrdn(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrdn(:,:,:) ) * zs2rdt  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trcsbc.F90

    r9598 r9923  
    120120            DO jj = 2, jpj 
    121121               DO ji = fs_2, fs_jpim1   ! vector opt. 
    122                   sbc_trc(ji,jj,jn) = zsfx(ji,jj) * r1_rau0 * trn(ji,jj,1,jn) 
     122                  sbc_trc(ji,jj,jn) = zsfx(ji,jj) * r1_rho0 * trn(ji,jj,1,jn) 
    123123               END DO 
    124124            END DO 
     
    126126            DO jj = 2, jpj 
    127127               DO ji = fs_2, fs_jpim1   ! vector opt. 
    128                   zse3t = 1. / e3t_n(ji,jj,1) 
     128                  zse3t = 1._wp / e3t_n(ji,jj,1) 
    129129                  ! tracer flux at the ice/ocean interface (tracer/m2/s) 
    130130                  zftra = - trc_i(ji,jj,jn) * fmmflx(ji,jj) ! uptake of tracer in the sea ice 
     
    135135                  ztfx  = zftra                             ! net tracer flux 
    136136                  ! 
    137                   zdtra = r1_rau0 * ( ztfx + zsfx(ji,jj) * trn(ji,jj,1,jn) )  
     137                  zdtra = r1_rho0 * ( ztfx + zsfx(ji,jj) * trn(ji,jj,1,jn) )  
    138138                  IF ( zdtra < 0. ) THEN 
    139                      zratio = -zdtra * zse3t * r2dttrc / ( trn(ji,jj,1,jn) + zrtrn ) 
     139                     zratio = -zdtra * zse3t * rDt_trc / ( trn(ji,jj,1,jn) + zrtrn ) 
    140140                     zdtra = MIN(1.0, zratio) * zdtra ! avoid negative concentrations to arise 
    141141                  ENDIF 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trczdf.F90

    r9598 r9923  
    5454      IF( l_trdtrc )   ztrtrd(:,:,:,:)  = tra(:,:,:,:) 
    5555      ! 
    56       CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dttrc, trb, tra, jptra )    !   implicit scheme           
     56      CALL tra_zdf_imp( kt, nittrc000, 'TRC', rDt_trc, trb, tra, jptra )    !   implicit scheme           
    5757      ! 
    5858      IF( l_trdtrc )   THEN                      ! save the vertical diffusive trends for further diagnostics 
    5959         DO jn = 1, jptra 
    6060            DO jk = 1, jpkm1 
    61                ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dttrc ) - ztrtrd(:,:,jk,jn) 
     61               ztrtrd(:,:,jk,jn) = ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) * r1_Dt_trc - ztrtrd(:,:,jk,jn) 
    6262            END DO 
    6363            CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/TRP/trdmxl_trc.F90

    r9598 r9923  
    1616   !!   trd_mxl_trc_init : initialization step 
    1717   !!---------------------------------------------------------------------- 
    18    USE trc               ! tracer definitions (trn, trb, tra, etc.) 
    19    USE trc_oce, ONLY :  nn_dttrc  ! frequency of step on passive tracers 
    20    USE dom_oce           ! domain definition 
     18   USE trc            ! tracer definitions (trn, trb, tra, etc.) 
     19   USE trc_oce , ONLY : nn_dttrc  ! frequency of step on passive tracers 
     20   USE dom_oce        ! domain definition 
    2121   USE zdfmxl  , ONLY : nmln ! number of level in the mixed layer 
    2222   USE zdf_oce , ONLY : avs  ! vert. diffusivity coef. at w-point for temp   
    23    USE trdtrc_oce    ! definition of main arrays used for trends computations 
    24    USE in_out_manager    ! I/O manager 
    25    USE dianam            ! build the name of file (routine) 
    26    USE ldfslp            ! iso-neutral slopes  
    27    USE ioipsl            ! NetCDF library 
    28    USE lbclnk            ! ocean lateral boundary conditions (or mpp link) 
    29    USE lib_mpp           ! MPP library 
    30    USE trdmxl_trc_rst    ! restart for diagnosing the ML trends 
    31    USE prtctl            ! print control 
    32    USE sms_pisces        ! PISCES bio-model 
     23   USE trdtrc_oce     ! definition of main arrays used for trends computations 
     24   USE ldfslp         ! iso-neutral slopes  
     25   USE trdmxl_trc_rst ! restart for diagnosing the ML trends 
     26   USE sms_pisces     ! PISCES bio-model 
     27   ! 
     28   USE in_out_manager ! I/O manager 
     29   USE ioipsl         ! NetCDF library 
     30   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     31   USE lib_mpp        ! MPP library 
     32   USE prtctl         ! print control 
     33   USE dianam         ! build the name of file (routine) 
    3334 
    3435   IMPLICIT NONE 
    3536   PRIVATE 
    3637 
    37    PUBLIC trd_mxl_trc 
    38    PUBLIC trd_mxl_trc_alloc 
    39    PUBLIC trd_mxl_trc_init 
    40    PUBLIC trd_mxl_trc_zint 
     38   PUBLIC   trd_mxl_trc 
     39   PUBLIC   trd_mxl_trc_alloc 
     40   PUBLIC   trd_mxl_trc_init 
     41   PUBLIC   trd_mxl_trc_zint 
    4142 
    4243   CHARACTER (LEN=40) ::  clhstnam                                ! name of the trends NetCDF file 
     
    408409         DO jn = 1, jptra 
    409410            IF( ln_trdtrc(jn) ) THEN 
    410                !-- Compute total trends    (use rdttrc instead of rdt ???) 
     411               !-- Compute total trends    (use rdt_trc instead of rn_Dt ???) 
    411412               IF ( ln_trcadv_muscl .OR. ln_trcadv_muscl2 ) THEN  ! EULER-FORWARD schemes 
    412                   ztmltot(:,:,jn) =  ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) )/rdt 
     413                  ztmltot(:,:,jn) =  ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) ) / rn_Dt 
    413414               ELSE                                                                     ! LEAP-FROG schemes 
    414                   ztmltot(:,:,jn) =  ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) + tmlb_trc(:,:,jn) - tmlbb_trc(:,:,jn))/(2.*rdt) 
     415                  ztmltot(:,:,jn) =  ( tml_trc(:,:,jn) - tmlbn_trc(:,:,jn) + tmlb_trc(:,:,jn) - tmlbb_trc(:,:,jn)) * r1_Dt 
    415416               ENDIF 
    416417                
     
    446447            IF( ln_trdtrc(jn) ) THEN 
    447448               tml_sum_trc(:,:,jn) = tmlbn_trc(:,:,jn) + 2 * ( tml_sum_trc(:,:,jn) - tml_trc(:,:,jn) ) + tml_trc(:,:,jn) 
    448                ztmltot2   (:,:,jn) = ( tml_sum_trc(:,:,jn) - tml_sumb_trc(:,:,jn) ) /  ( 2.*rdt )    ! now tracer unit is /sec 
     449               ztmltot2   (:,:,jn) = ( tml_sum_trc(:,:,jn) - tml_sumb_trc(:,:,jn) ) * r1_Dt    ! now tracer unit is /sec 
    449450            ENDIF 
    450451         END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/oce_trc.F90

    r9490 r9923  
    4040   USE oce , ONLY :   tsa     =>    tsa     !: 4D array contaning ( ta, sa ) 
    4141   USE oce , ONLY :   rhop    =>    rhop    !: potential volumic mass (kg m-3)  
    42    USE oce , ONLY :   rhd     =>    rhd     !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units) 
     42   USE oce , ONLY :   rhd     =>    rhd     !: in situ density anomalie rhd=(rho-rho0)/rho0 (no units) 
    4343   USE oce , ONLY :   hdivn   =>    hdivn   !: horizontal divergence (1/s) 
    4444   USE oce , ONLY :   sshn    =>    sshn    !: sea surface height at t-point [m]    
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/trc.F90

    r9863 r9923  
    44   !! Passive tracers   :  module for tracers defined 
    55   !!====================================================================== 
    6    !! History :   OPA  !  1996-01  (M. Levy)  Original code 
    7    !!              -   !  2000-04  (O. Aumont, M.A. Foujols)  HAMOCC3 and P3ZD 
    8    !!   NEMO      1.0  !  2004-03  (C. Ethe)  Free form and module 
     6   !! History :  OPA  !  1996-01  (M. Levy)  Original code 
     7   !!             -   !  2000-04  (O. Aumont, M.A. Foujols)  HAMOCC3 and P3ZD 
     8   !!   NEMO     1.0  !  2004-03  (C. Ethe)  Free form and module 
    99   !!---------------------------------------------------------------------- 
    1010   USE par_oce 
    1111   USE par_trc 
    12    USE bdy_oce, only: jp_bdy, ln_bdy, nb_bdy, OBC_DATA 
     12   USE bdy_oce , ONLY : jp_bdy, ln_bdy, nb_bdy, OBC_DATA 
    1313    
    1414   IMPLICIT NONE 
     
    6363   CHARACTER(len = 80) , PUBLIC ::   cn_trcrst_out      !: suffix of pass. tracer restart name (output) 
    6464   CHARACTER(len = 256), PUBLIC ::   cn_trcrst_outdir   !: restart output directory 
    65    REAL(wp)            , PUBLIC ::   rdttrc             !: passive tracer time step 
    66    REAL(wp)            , PUBLIC ::   r2dttrc            !: = 2*rdttrc except at nit000 (=rdttrc) if l_top_euler=T 
    67    REAL(wp)            , PUBLIC ::   r1_2dttrc          !: = 1/rdttrc 
     65   REAL(wp)            , PUBLIC ::   rn_Dt_trc          !: = nn_dttrc * rn_Dt  (passive tracer time step) 
     66   REAL(wp)            , PUBLIC ::   rDt_trc            !: = 2*rn_Dt_trc except at nit000 (=rn_Dt_trc) if l_top_euler=T 
     67   REAL(wp)            , PUBLIC ::   r1_Dt_trc          !: = 1/rDt_trc 
    6868   LOGICAL             , PUBLIC ::   ln_top_euler       !: boolean term for euler integration  
    6969   LOGICAL             , PUBLIC ::   l_top_euler        !: boolean term for euler integration  
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/trcbc.F90

    r9800 r9923  
    411411               DO ji = fs_2, fs_jpim1 
    412412                  DO jk = 1, nk_rnf(ji,jj) 
    413                      zrnf = (rnf(ji,jj) + rnf_b(ji,jj)) * 0.5_wp * r1_rau0 / h_rnf(ji,jj) 
     413                     zrnf = (rnf(ji,jj) + rnf_b(ji,jj)) * 0.5_wp * r1_rho0 / h_rnf(ji,jj) 
    414414                     tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn)  + (trn(ji,jj,jk,jn) * zrnf) 
    415415                  END DO 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/trcnam.F90

    r9598 r9923  
    5252      !!--------------------------------------------------------------------- 
    5353      ! 
    54       IF( .NOT.l_offline )   CALL trc_nam_run     ! Parameters of the run                                   
     54      IF( .NOT.l_offline )   CALL trc_nam_run   ! Parameters of the run                                   
    5555      !                
    56       CALL trc_nam_trc                            ! passive tracer informations 
     56      CALL trc_nam_trc                          ! passive tracer informations 
    5757      !                                         
    5858      IF( ln_rsttr                     )   ln_trcdta = .FALSE.   ! restart : no need of clim data 
     
    6161      ! 
    6262      ! 
    63       IF(lwp) THEN                   ! control print 
     63      IF(lwp) THEN                              ! control print 
    6464         IF( ln_rsttr ) THEN 
    6565            WRITE(numout,*) 
     
    7676      ENDIF 
    7777      ! 
    78       rdttrc = rdt * FLOAT( nn_dttrc )          ! passive tracer time-step 
     78      rn_Dt_trc = REAL( nn_dttrc ) * rn_Dt      ! passive tracer time-step 
    7979      !  
    8080      IF(lwp) THEN                              ! control print 
    8181        WRITE(numout,*)  
    82         WRITE(numout,*) '   ==>>>   Passive Tracer  time step    rdttrc = nn_dttrc*rdt = ', rdttrc 
     82        WRITE(numout,*) '   ==>>>   Passive Tracer  time step    rn_Dt_trc = nn_dttrc*rn_Dt = ', rn_Dt_trc 
    8383      ENDIF 
    8484      ! 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/trcrst.F90

    r9863 r9923  
    132132      !!---------------------------------------------------------------------- 
    133133      ! 
    134       CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rdttrc )   ! passive tracer time step 
     134      CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rn_Dt_trc )   ! passive tracer time step 
    135135      ! prognostic variables  
    136136      ! --------------------  
     
    177177      !!       In both those options, the  exact duration of the experiment 
    178178      !!       since the beginning (cumulated duration of all previous restart runs) 
    179       !!       is not stored in the restart and is assumed to be (nittrc000-1)*rdt. 
     179      !!       is not stored in the restart and is assumed to be (nittrc000-1)*rn_Dt. 
    180180      !!       This is valid is the time step has remained constant. 
    181181      !! 
     
    188188      INTEGER  ::  jlibalt = jprstlib 
    189189      LOGICAL  ::  llok 
    190       REAL(wp) ::  zrdttrc1, zkt, zndastp, zdayfrac, ksecs, ktime 
     190      REAL(wp) ::  zkt, zndastp, zdayfrac, ksecs, ktime 
    191191      INTEGER  ::   ihour, iminute 
    192192 
     
    258258               nminute = ( nn_time0 - nhour * 100 ) 
    259259               IF( nhour*3600+nminute*60-ndt05 .lt. 0 )  ndastp=ndastp-1      ! Start hour is specified in the namelist (default 0) 
    260                adatrj = ( REAL( nit000-1, wp ) * rdt ) / rday 
     260               adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    261261               ! note this is wrong if time step has changed during run 
    262262            ENDIF 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/trcstp.F90

    r9863 r9923  
    6262      ! 
    6363      IF( l_1st_euler .OR. ln_top_euler ) THEN     ! at nittrc000 
    64          r2dttrc =  rdttrc           ! = rdttrc (use or restarting with Euler time stepping) 
     64         rDt_trc =  rn_Dt_trc           ! use or restarting with Euler time stepping) 
    6565      ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN          ! at nittrc000 or nittrc000+1 
    66          r2dttrc = 2. * rdttrc       ! = 2 rdttrc (leapfrog) 
     66         rDt_trc = 2. * rn_Dt_trc       ! leapfrog time stepping 
    6767      ENDIF 
    6868      ! 
     
    144144            nb_rec_per_day = ncpl_qsr_freq 
    145145         ELSE   
    146             rdt_sampl = MAX( 3600., rdttrc ) 
     146            rdt_sampl = MAX( 3600., rn_Dt_trc ) 
    147147            nb_rec_per_day = INT( rday / rdt_sampl ) 
    148148         ENDIF 
     
    163163 
    164164            CALL iom_get( numrtr, 'ktdcy', zkt )   
    165             rsecfst = INT( zkt ) * rdttrc 
     165            rsecfst = INT( zkt ) * rn_Dt_trc 
    166166            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean read in the restart file at time-step rsecfst =', rsecfst, ' s ' 
    167167            CALL iom_get( numrtr, jpdom_autoglo, 'qsr_mean', qsr_mean )   !  A mean of qsr 
     
    184184         ELSE                                         !* no restart: set from nit000 values 
    185185            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean set to nit000 values' 
    186             rsecfst  = kt * rdttrc 
     186            rsecfst  = kt * rn_Dt_trc 
    187187            ! 
    188188            qsr_mean(:,:) = qsr(:,:) 
     
    194194      ENDIF 
    195195      ! 
    196       rseclast = kt * rdttrc 
     196      rseclast = kt * rn_Dt_trc 
    197197      ! 
    198198      llnew   = ( rseclast - rsecfst ) .ge.  rdt_sampl    !   new shortwave to store 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/TOP/trcsub.F90

    r9863 r9923  
    466466      ! 
    467467      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    468       REAL(wp) ::   zcoefu, zcoefv, zcoeff, z1_2rau0   ! local scalars 
     468      REAL(wp) ::   zcoefu, zcoefv, zcoeff, z1_2rho0   ! local scalars 
    469469      REAL(wp), DIMENSION(jpi,jpj) :: zhdiv 
    470470      !!--------------------------------------------------------------------- 
     
    496496      ! In forward Euler time stepping case, the same formulation as in the leap-frog case can be used 
    497497      ! because emp_b field is initialized with the vlaues of emp field. Hence, 0.5 * ( emp + emp_b ) = emp 
    498       z1_2rau0 = 0.5 * r1_rau0 
    499       ssha(:,:) = (  sshb(:,:) - r2dt * ( z1_2rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * tmask(:,:,1) 
     498      z1_2rho0 = 0.5 * r1_rho0 
     499      ssha(:,:) = (  sshb(:,:) - rDt * ( z1_2rho0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * tmask(:,:,1) 
    500500 
    501501      IF( .NOT.ln_dynspg_ts ) THEN 
     
    516516      DO jk = jpkm1, 1, -1                             ! integrate from the bottom the hor. divergence 
    517517         ! - ML - need 3 lines here because replacement of e3t by its expression yields too long lines otherwise 
    518          wn(:,:,jk) = wn(:,:,jk+1) -   e3t_n(:,:,jk) * hdivn(:,:,jk)        & 
    519             &                      - ( e3t_a(:,:,jk) - e3t_b(:,:,jk) )    & 
    520             &                         * tmask(:,:,jk) * r1_2dt 
    521          IF( ln_bdy ) wn(:,:,jk) = wn(:,:,jk) * bdytmask(:,:) 
     518         wn(:,:,jk) = wn(:,:,jk+1) -   e3t_n(:,:,jk) * hdivn(:,:,jk)   & 
     519            &                      - ( e3t_a(:,:,jk) - e3t_b(:,:,jk) ) * r1_Dt * tmask(:,:,jk) 
     520         IF( ln_bdy )   wn(:,:,jk) = wn(:,:,jk) * bdytmask(:,:) 
    522521      END DO 
    523522      ! 
Note: See TracChangeset for help on using the changeset viewer.