Changeset 9923


Ignore:
Timestamp:
2018-07-11T10:24:17+02:00 (2 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