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 14834 for NEMO/trunk/src/OCE/SBC – NEMO

Ignore:
Timestamp:
2021-05-11T11:24:44+02:00 (3 years ago)
Author:
hadcv
Message:

#2600: Merge in dev_r14273_HPC-02_Daley_Tiling

Location:
NEMO/trunk/src/OCE/SBC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/SBC/sbccpl.F90

    r14718 r14834  
    13011301         IF( llnewtau ) THEN 
    13021302            zcoef = 1. / ( zrhoa * zcdrag ) 
    1303             DO_2D( 1, 1, 1, 1 ) 
     1303            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    13041304               frcv(jpr_w10m)%z3(ji,jj,1) = SQRT( frcv(jpr_taum)%z3(ji,jj,1) * zcoef ) 
    13051305            END_2D 
  • NEMO/trunk/src/OCE/SBC/sbcmod.F90

    r14229 r14834  
    475475      END SELECT 
    476476 
    477       IF( ln_icebergs    )   THEN 
    478                                      CALL icb_stp( kt, Kmm )           ! compute icebergs 
    479          ! Icebergs do not melt over the haloes. 
    480          ! So emp values over the haloes are no more consistent with the inner domain values. 
    481          ! A lbc_lnk is therefore needed to ensure reproducibility and restartability. 
    482          ! see ticket #2113 for discussion about this lbc_lnk. 
    483          IF( .NOT. ln_passive_mode ) CALL lbc_lnk( 'sbcmod', emp, 'T', 1.0_wp ) ! ensure restartability with icebergs 
     477      IF( ln_icebergs    )   CALL icb_stp( kt, Kmm )              ! compute icebergs 
     478 
     479      ! Icebergs do not melt over the haloes. 
     480      ! So emp values over the haloes are no more consistent with the inner domain values. 
     481      ! A lbc_lnk is therefore needed to ensure reproducibility and restartability. 
     482      ! see ticket #2113 for discussion about this lbc_lnk. 
     483      ! The lbc_lnk is also needed for SI3 with nn_hls > 1 as emp is not yet defined for these points in iceupdate.F90 
     484      IF( (ln_icebergs .AND. .NOT. ln_passive_mode) .OR. (nn_ice == 2 .AND. nn_hls == 2) ) THEN 
     485         CALL lbc_lnk( 'sbcmod', emp, 'T', 1.0_wp ) 
    484486      ENDIF 
    485487 
  • NEMO/trunk/src/OCE/SBC/sbcrnf.F90

    r14718 r14834  
    211211      IF( ln_rnf_depth .OR. ln_rnf_depth_ini ) THEN      !==   runoff distributed over several levels   ==! 
    212212         IF( ln_linssh ) THEN    !* constant volume case : just apply the runoff input flow 
    213             DO_2D( 1, 1, 1, 1 ) 
     213            DO_2D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls ) 
    214214               DO jk = 1, nk_rnf(ji,jj) 
    215215                  phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / h_rnf(ji,jj) 
     
    217217            END_2D 
    218218         ELSE                    !* variable volume case 
    219             DO_2D( 1, 1, 1, 1 )              ! update the depth over which runoffs are distributed 
     219            DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls )         ! update the depth over which runoffs are distributed 
    220220               h_rnf(ji,jj) = 0._wp 
    221221               DO jk = 1, nk_rnf(ji,jj)                             ! recalculates h_rnf to be the depth in metres 
     
    229229         ENDIF 
    230230      ELSE                       !==   runoff put only at the surface   ==! 
    231          h_rnf (:,:)   = e3t (:,:,1,Kmm)        ! update h_rnf to be depth of top box 
    232          phdivn(:,:,1) = phdivn(:,:,1) - ( rnf(:,:) + rnf_b(:,:) ) * zfact * r1_rho0 / e3t(:,:,1,Kmm) 
     231         DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls ) 
     232            h_rnf (ji,jj)   = e3t (ji,jj,1,Kmm)        ! update h_rnf to be depth of top box 
     233            phdivn(ji,jj,1) = phdivn(ji,jj,1) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / e3t(ji,jj,1,Kmm) 
     234         END_2D 
    233235      ENDIF 
    234236      ! 
     
    363365         ! 
    364366         nk_rnf(:,:) = 0                               ! set the number of level over which river runoffs are applied 
    365          DO_2D( 1, 1, 1, 1 ) 
     367         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    366368            IF( h_rnf(ji,jj) > 0._wp ) THEN 
    367369               jk = 2 
     
    376378            ENDIF 
    377379         END_2D 
    378          DO_2D( 1, 1, 1, 1 )                           ! set the associated depth 
     380         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )                           ! set the associated depth 
    379381            h_rnf(ji,jj) = 0._wp 
    380382            DO jk = 1, nk_rnf(ji,jj) 
     
    406408         WHERE( zrnfcl(:,:,1) > 0._wp )  h_rnf(:,:) = zacoef * zrnfcl(:,:,1)   ! compute depth for all runoffs 
    407409         ! 
    408          DO_2D( 1, 1, 1, 1 )                ! take in account min depth of ocean rn_hmin 
     410         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )                ! take in account min depth of ocean rn_hmin 
    409411            IF( zrnfcl(ji,jj,1) > 0._wp ) THEN 
    410412               jk = mbkt(ji,jj) 
     
    414416         ! 
    415417         nk_rnf(:,:) = 0                       ! number of levels on which runoffs are distributed 
    416          DO_2D( 1, 1, 1, 1 ) 
     418         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    417419            IF( zrnfcl(ji,jj,1) > 0._wp ) THEN 
    418420               jk = 2 
     
    425427         END_2D 
    426428         ! 
    427          DO_2D( 1, 1, 1, 1 )                          ! set the associated depth 
     429         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )                          ! set the associated depth 
    428430            h_rnf(ji,jj) = 0._wp 
    429431            DO jk = 1, nk_rnf(ji,jj) 
  • NEMO/trunk/src/OCE/SBC/sbcssr.F90

    r14718 r14834  
    9898            ! 
    9999            IF( nn_sstr == 1 ) THEN                                   !* Temperature restoring term 
    100                DO_2D( 1, 1, 1, 1 ) 
     100               DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    101101                  zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) * tmask(ji,jj,1) 
    102102                  qns(ji,jj) = qns(ji,jj) + zqrp 
     
    108108              ! use fraction of ice ( fr_i ) to adjust relaxation under ice if nn_sssr_ice .ne. 1 
    109109              ! n.b. coefice is initialised and fixed to 1._wp if nn_sssr_ice = 1 
    110                DO_2D( 1, 1, 1, 1 ) 
     110               DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    111111                  SELECT CASE ( nn_sssr_ice ) 
    112112                    CASE ( 0 )    ;  coefice(ji,jj) = 1._wp - fr_i(ji,jj)              ! no/reduced damping under ice 
     
    118118            IF( nn_sssr == 1 ) THEN                                   !* Salinity damping term (salt flux only (sfx)) 
    119119               zsrp = rn_deds / rday                                  ! from [mm/day] to [kg/m2/s] 
    120                DO_2D( 1, 1, 1, 1 ) 
     120               DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    121121                  zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    122122                     &        *   coefice(ji,jj)            &      ! Optional control of damping under sea-ice 
     
    129129               zsrp = rn_deds / rday                                  ! from [mm/day] to [kg/m2/s] 
    130130               zerp_bnd = rn_sssr_bnd / rday                          !       -              -     
    131                DO_2D( 1, 1, 1, 1 ) 
     131               DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    132132                  zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    133133                     &        *   coefice(ji,jj)            &      ! Optional control of damping under sea-ice 
Note: See TracChangeset for help on using the changeset viewer.