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 14729 – NEMO

Changeset 14729


Ignore:
Timestamp:
2021-04-19T17:30:24+02:00 (3 years ago)
Author:
smueller
Message:

Synchronisation of the OSMOSIS boundary layer scheme with the version developed in branch /NEMO/branches/NERC/dev_r11078_OSMOSIS_IMMERSE_Nurser_4.0: transfer of changesets [14645,14646] (ticket #2353)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14122_HPC-08_Mueller_OSMOSIS_streamlining/src/OCE/ZDF/zdfosm.F90

    r14728 r14729  
    334334      ! For debugging 
    335335      INTEGER :: ikt 
     336      REAL(wp) :: zlarge = -1.0e10_wp, zero = 0.0_wp 
    336337      !!-------------------------------------------------------------------- 
    337338      ! 
    338339      IF( ln_timing ) CALL timing_start('zdf_osm') 
    339340      ibld(:,:)   = 0     ; imld(:,:)  = 0 
    340       zrad0(:,:)  = 0.0_wp ; zradh(:,:) = 0.0_wp ; zustar(:,:) = 0.0_wp 
    341       zwstrl(:,:) = 0._wp ; zvstr(:,:) = 0._wp ; zwstrc(:,:)    = 0._wp 
    342       zwth0(:,:)  = 0.0_wp ; zws0(:,:)  = 0.0_wp ; zwb0(:,:)      = 0.0_wp 
    343       zwthav(:,:) = 0._wp ; zwsav(:,:) = 0._wp ; zwbav(:,:)     = 0._wp ; zwb_ent(:,:)   = 0._wp 
    344       zustke(:,:) = 0._wp ; zla(:,:)   = 0._wp ; zcos_wind(:,:) = 0._wp ; zsin_wind(:,:) = 0._wp 
    345       zhol(:,:)   = 0._wp ; zwb0tot(:,:) = 0.0_wp 
     341      zrad0(:,:)  = zlarge ; zradh(:,:)   = zlarge ; zustar(:,:)     = zlarge 
     342      zwstrl(:,:) = zlarge ; zvstr(:,:)   = zlarge ; zwstrc(:,:)     = zlarge ; zuw0(:,:)      = zlarge 
     343      zwth0(:,:)  = zlarge ; zws0(:,:)    = zlarge ; zwb0(:,:)       = zlarge 
     344      zwthav(:,:) = zlarge ; zwsav(:,:)   = zlarge ; zwbav(:,:)      = zlarge ; zwb_ent(:,:)   = zlarge 
     345      zustke(:,:) = zlarge ; zla(:,:)     = zlarge ; zcos_wind(:,:)  = zlarge ; zsin_wind(:,:) = zlarge 
     346      zhol(:,:)   = zlarge ; zwb0tot(:,:) = zlarge ; zalpha_pyc(:,:) = zlarge 
    346347      lconv(:,:)  = .FALSE.; lpyc(:,:) = .FALSE. ; lflux(:,:) = .FALSE. ;  lmle(:,:) = .FALSE. 
    347348      ! mixed layer 
    348349      ! no initialization of zhbl or zhml (or zdh?) 
    349       zhbl(:,:)    = 1._wp ; zhml(:,:)    = 1._wp ; zdh(:,:)      = 1._wp ; zdhdt(:,:)   = 0._wp 
    350       zt_bl(:,:)   = 0._wp ; zs_bl(:,:)   = 0._wp ; zu_bl(:,:)    = 0._wp 
    351       zv_bl(:,:)   = 0._wp ; zb_bl(:,:)  = 0._wp 
    352       zt_ml(:,:)   = 0._wp ; zs_ml(:,:)    = 0._wp ; zu_ml(:,:)   = 0._wp 
    353       zt_mle(:,:)   = 0._wp ; zs_mle(:,:)    = 0._wp ; zu_mle(:,:)   = 0._wp 
    354       zb_mle(:,:) = 0._wp 
    355       zv_ml(:,:)   = 0._wp ; zdt_bl(:,:)   = 0._wp ; zds_bl(:,:)  = 0._wp 
    356       zdu_bl(:,:)  = 0._wp ; zdv_bl(:,:)  = 0._wp ; zdb_bl(:,:)  = 0._wp 
    357       zdt_ml(:,:)  = 0._wp ; zds_ml(:,:)  = 0._wp ; zdu_ml(:,:)   = 0._wp ; zdv_ml(:,:)  = 0._wp 
    358       zdb_ml(:,:)  = 0._wp 
    359       ! 
    360       zdbdz_pyc(:,:,:) = 0.0_wp 
    361       ! 
    362       zdtdz_bl_ext(:,:) = 0._wp ; zdsdz_bl_ext(:,:) = 0._wp ; zdbdz_bl_ext(:,:) = 0._wp 
     350      zhbl(:,:)   = zlarge ; zhml(:,:)   = zlarge  ; zdh(:,:)        = zlarge ; zdhdt(:,:)     = zlarge 
     351      zt_bl(:,:)  = zlarge ; zs_bl(:,:)  = zlarge  ; zu_bl(:,:)      = zlarge 
     352      zv_bl(:,:)  = zlarge ; zb_bl(:,:)  = zlarge 
     353      zt_ml(:,:)  = zlarge ; zs_ml(:,:)  = zlarge  ; zu_ml(:,:)      = zlarge 
     354      zt_mle(:,:) = zlarge ; zs_mle(:,:) = zlarge  ; zu_mle(:,:)     = zlarge 
     355      zb_mle(:,:) = zlarge 
     356      zv_ml(:,:)  = zlarge ; zdt_bl(:,:) = zlarge  ; zds_bl(:,:)     = zlarge 
     357      zdu_bl(:,:) = zlarge ; zdv_bl(:,:) = zlarge  ; zdb_bl(:,:)     = zlarge 
     358      zdt_ml(:,:) = zlarge ; zds_ml(:,:) = zlarge  ; zdu_ml(:,:)     = zlarge ; zdv_ml(:,:)    = zlarge 
     359      zdb_ml(:,:) = zlarge 
     360      ! 
     361      zdbdz_pyc(:,:,:) = zlarge 
     362      zdbdz_pyc(A2D(0),:) = 0.0_wp 
     363      ! 
     364      zdtdz_bl_ext(:,:) = zlarge ; zdsdz_bl_ext(:,:) = zlarge ; zdbdz_bl_ext(:,:) = zlarge 
    363365 
    364366      IF ( ln_osm_mle ) THEN  ! only initialise arrays if needed 
    365          zdtdx(:,:) = 0._wp ; zdtdy(:,:) = 0._wp ; zdsdx(:,:) = 0._wp 
    366          zdsdy(:,:) = 0._wp ; dbdx_mle(:,:) = 0._wp ; dbdy_mle(:,:) = 0._wp 
    367          zwb_fk(:,:) = 0._wp ; zvel_mle(:,:) = 0._wp; zdiff_mle(:,:) = 0._wp 
    368          zhmle(:,:) = 0._wp  ; zmld(:,:) = 0._wp 
     367         zdtdx(:,:)  = zlarge ; zdtdy(:,:)    = zlarge ; zdsdx(:,:)     = zlarge 
     368         zdsdy(:,:)  = zlarge ; dbdx_mle(:,:) = zlarge ; dbdy_mle(:,:)  = zlarge 
     369         zwb_fk(:,:) = zlarge ; zvel_mle(:,:) = zlarge ; zdiff_mle(:,:) = zlarge 
     370         zhmle(:,:)  = zlarge ; zmld(:,:)     = zlarge 
    369371      ENDIF 
    370       zwb_fk_b(:,:) = 0._wp   ! must be initialised even with ln_osm_mle=F as used in zdf_osm_calculate_dhdt 
    371  
    372       zhbl_t(:,:)     = 0._wp 
    373  
    374       zdiffut(:,:,:) = 0._wp ; zviscos(:,:,:) = 0._wp ; ghamt(:,:,:) = 0._wp 
    375       ghams(:,:,:)   = 0._wp ; ghamu(:,:,:)   = 0._wp ; ghamv(:,:,:) = 0._wp 
     372      zwb_fk_b(:,:) = zlarge   ! must be initialised even with ln_osm_mle=F as used in zdf_osm_calculate_dhdt 
     373 
     374      zhbl_t(:,:)   = zlarge 
     375 
     376      zdiffut(:,:,:) = zlarge ; zviscos(:,:,:) = zlarge 
     377      zdiffut(A2D(0),:) = 0.0_wp ; zviscos(A2D(0),:) = 0.0_wp 
     378      ghamt(:,:,:)   = zlarge ; ghams(:,:,:)   = zlarge 
     379      ghamt(A2D(0),:)   = 0.0_wp ; ghams(A2D(0),:)   = 0.0_wp 
     380      ghamu(:,:,:)   = zlarge ; ghamv(:,:,:)   = zlarge 
     381      ghamu(A2D(0),:)   = 0.0_wp ; ghamv(A2D(0),:)   = 0.0_wp 
     382      zdiff_mle(A2D(0)) = 0.0_wp 
    376383 
    377384 
     
    13901397         END_2D 
    13911398 
    1392          zekman(:,:) = EXP( -1.0_wp * zek * ABS( ff_t(:,:) ) * zhbl(:,:) / MAX(zustar(:,:), 1.e-8 ) ) 
    1393  
    1394          zshear(:,:) = 0._wp 
     1399         zekman(A2D(0)) = EXP( -1.0_wp * zek * ABS( ff_t(A2D(0)) ) * zhbl(A2D(0)) / MAX(zustar(A2D(0)), 1.e-8 ) ) 
     1400 
     1401         zshear(A2D(0)) = 0._wp 
    13951402#ifdef key_osm_debug 
    13961403         IF(narea==nn_narea_db) THEN 
     
    14011408         END IF 
    14021409#endif 
    1403          j_ddh(:,:) = 1 
     1410         j_ddh(A2D(0)) = 1 
    14041411 
    14051412         DO_2D( 0, 0, 0, 0 ) 
     
    15021509         END_2D 
    15031510 
    1504          zwb_min(:,:) = 0._wp 
     1511         zwb_min(:,:) = zlarge 
    15051512 
    15061513         DO_2D( 0, 0, 0, 0 ) 
     
    16081615 
    16091616         IF( ln_timing ) CALL timing_start('zdf_osm_osf') 
    1610          znd_param(:,:) = 0._wp 
     1617         znd_param(A2D(0)) = 0.0_wp 
    16111618 
    16121619         DO_2D( 0, 0, 0, 0 ) 
     
    25082515      ! 
    25092516      ! Averages over depth of boundary layer 
    2510       pt(:,:)     = 0.0_wp 
    2511       ps(:,:)     = 0.0_wp 
    2512       pu(:,:)     = 0.0_wp 
    2513       pv(:,:)     = 0.0_wp 
     2517      pt(A2D(0))     = 0.0_wp 
     2518      ps(A2D(0))     = 0.0_wp 
     2519      pu(A2D(0))     = 0.0_wp 
     2520      pv(A2D(0))     = 0.0_wp 
    25142521      zthick(:,:) = epsln 
    25152522      jkflt = jpk 
Note: See TracChangeset for help on using the changeset viewer.