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

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 9939 for NEMO/branches/2018/dev_r9838_ENHANCE04_RK3/src/OCE/BDY – NEMO

Ignore:
Timestamp:
2018-07-13T09:28:50+02:00 (6 years ago)
Author:
gm
Message:

#1911 (ENHANCE-04): RK3 branche phased with MLF@9937 branche

Location:
NEMO/branches/2018/dev_r9838_ENHANCE04_RK3
Files:
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r9838_ENHANCE04_RK3/src/OCE/BDY/bdyice.F90

    r9657 r9939  
    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, ( rhos * h_s(ji,jj,jl) + ( rhoi - 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) 
    128             !zdh = MAX( 0._wp, h_s(ji,jj,jl) * rhosn / rhoic ) 
     128            !zdh = MAX( 0._wp, h_s(ji,jj,jl) * rhos / rhoi ) 
    129129 
    130130            ! recompute h_i, h_s 
    131131            h_i(ji,jj,jl) = MIN( hi_max(jl), h_i(ji,jj,jl) + zdh ) 
    132             h_s(ji,jj,jl) = MAX( 0._wp, h_s(ji,jj,jl) - zdh * rhoic / rhosn )  
    133  
    134          ENDDO 
     132            h_s(ji,jj,jl) = MAX( 0._wp, h_s(ji,jj,jl) - zdh * rhoi / rhos )  
     133 
     134         END DO 
    135135         CALL lbc_bdy_lnk( a_i(:,:,jl), 'T', 1., ib_bdy ) 
    136136         CALL lbc_bdy_lnk( h_i(:,:,jl), 'T', 1., ib_bdy ) 
    137137         CALL lbc_bdy_lnk( h_s(:,:,jl), 'T', 1., ib_bdy ) 
    138       ENDDO 
     138      END DO 
    139139      ! retrieve at_i 
    140140      at_i(:,:) = 0._wp 
     
    212212            DO jk = 1, nlay_s 
    213213               ! Snow energy of melting 
    214                e_s(ji,jj,jk,jl) = rswitch * rhosn * ( cpic * ( rt0 - t_s(ji,jj,jk,jl) ) + lfus ) 
     214               e_s(ji,jj,jk,jl) = rswitch * rhos * ( rcpi * ( rt0 - t_s(ji,jj,jk,jl) ) + rLfus ) 
    215215               ! Multiply by volume, so that heat content in J/m2 
    216216               e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * v_s(ji,jj,jl) * r1_nlay_s 
     
    219219               ztmelts          = - tmut * sz_i(ji,jj,jk,jl) + rt0 !Melting temperature in K                   
    220220               ! heat content per unit volume 
    221                e_i(ji,jj,jk,jl) = rswitch * rhoic * & 
    222                   (   cpic    * ( ztmelts - t_i(ji,jj,jk,jl) ) & 
    223                   +   lfus    * ( 1.0 - (ztmelts-rt0) / MIN((t_i(ji,jj,jk,jl)-rt0),-epsi20) ) & 
    224                   - rcp      * ( ztmelts - rt0 ) ) 
     221               e_i(ji,jj,jk,jl) = rswitch * rhoi * & 
     222                  (   rcpi  * ( ztmelts - t_i(ji,jj,jk,jl) ) & 
     223                  +   rLfus * ( 1.0 - (ztmelts-rt0) / MIN((t_i(ji,jj,jk,jl)-rt0),-epsi20) ) & 
     224                  -   rcp   * ( ztmelts - rt0 ) ) 
    225225               ! Mutliply by ice volume, and divide by number of layers to get heat content in J/m2 
    226226               e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * a_i(ji,jj,jl) * h_i(ji,jj,jl) * r1_nlay_i 
  • NEMO/branches/2018/dev_r9838_ENHANCE04_RK3/src/OCE/BDY/bdylib.F90

    r9598 r9939  
    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   
     
    402406!!$            zrx = min(zrx,2.0_wp) 
    403407            zout = sign( 1., zrx ) 
    404             zout = 0.5*( zout + abs(zout) ) 
    405             zwgt = 2.*rdt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 
     408            zout = 0.5 * ( zout + abs(zout) ) 
     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_RK3/src/OCE/BDY/bdytides.F90

    r9598 r9939  
    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_RK3/src/OCE/BDY/bdyvol.F90

    r9598 r9939  
    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 
    90 !!gm 
     89!!gm      z_cflxemp = glob_sum(  ( emp(:,:)-rnf(:,:)+fwfisf(:,:) ) * bdytmask(:,:) * e1e2t(:,:)  ) / rho0 
     90!!gm   ??? 
    9191 
    9292      ! Transport through the unstructured open boundary 
Note: See TracChangeset for help on using the changeset viewer.