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

Changeset 14645


Ignore:
Timestamp:
2021-03-26T15:43:45+01:00 (3 years ago)
Author:
agn
Message:

Initlize varios variables to -1.e10

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/NERC/dev_r11078_OSMOSIS_IMMERSE_Nurser_4.0/src/OCE/ZDF/zdfosm.F90

    r14541 r14645  
    354354    ! For debugging 
    355355    INTEGER :: ikt 
     356    REAL(wp) :: zlarge = -1.e10_wp, zero = 0._wp 
    356357    !!-------------------------------------------------------------------- 
    357358    ! 
    358359    ibld(:,:)   = 0     ; imld(:,:)  = 0 
    359     zrad0(:,:)  = 0._wp ; zradh(:,:) = 0._wp ; zradav(:,:)    = 0._wp ; zustar(:,:)    = 0._wp 
    360     zwstrl(:,:) = 0._wp ; zvstr(:,:) = 0._wp ; zwstrc(:,:)    = 0._wp ; zuw0(:,:)      = 0._wp 
    361     zvw0(:,:)   = 0._wp ; zwth0(:,:) = 0._wp ; zws0(:,:)      = 0._wp ; zwb0(:,:)      = 0._wp 
    362     zwthav(:,:) = 0._wp ; zwsav(:,:) = 0._wp ; zwbav(:,:)     = 0._wp ; zwb_ent(:,:)   = 0._wp 
    363     zustke(:,:) = 0._wp ; zla(:,:)   = 0._wp ; zcos_wind(:,:) = 0._wp ; zsin_wind(:,:) = 0._wp 
    364     zhol(:,:)   = 0._wp ; zwb0tot(:,:) = 0._wp 
     360    zrad0(:,:)  = zlarge ; zradh(:,:) = zlarge ; zradav(:,:)    = zlarge ; zustar(:,:)    = zlarge 
     361    zwstrl(:,:) = zlarge ; zvstr(:,:) = zlarge ; zwstrc(:,:)    = zlarge ; zuw0(:,:)      = zlarge 
     362    zvw0(:,:)   = zlarge ; zwth0(:,:) = zlarge ; zws0(:,:)      = zlarge ; zwb0(:,:)      = zlarge 
     363    zwthav(:,:) = zlarge ; zwsav(:,:) = zlarge ; zwbav(:,:)     = zlarge ; zwb_ent(:,:)   = zlarge 
     364    zustke(:,:) = zlarge ; zla(:,:)   = zlarge ; zcos_wind(:,:) = zlarge ; zsin_wind(:,:) = zlarge 
     365    zhol(:,:)   = zlarge ; zwb0tot(:,:) = zlarge; zalpha_pyc(:,:) = zlarge 
    365366    lconv(:,:)  = .FALSE.; lpyc(:,:) = .FALSE. ; lflux(:,:) = .FALSE. ;  lmle(:,:) = .FALSE. 
    366367    ! mixed layer 
    367368    ! no initialization of zhbl or zhml (or zdh?) 
    368     zhbl(:,:)    = 1._wp ; zhml(:,:)    = 1._wp ; zdh(:,:)      = 1._wp ; zdhdt(:,:)   = 0._wp 
    369     zt_bl(:,:)   = 0._wp ; zs_bl(:,:)   = 0._wp ; zu_bl(:,:)    = 0._wp 
    370     zv_bl(:,:)   = 0._wp ; zb_bl(:,:)  = 0._wp 
    371     zt_ml(:,:)   = 0._wp ; zs_ml(:,:)    = 0._wp ; zu_ml(:,:)   = 0._wp 
    372     zt_mle(:,:)   = 0._wp ; zs_mle(:,:)    = 0._wp ; zu_mle(:,:)   = 0._wp 
    373     zb_mle(:,:) = 0._wp 
    374     zv_ml(:,:)   = 0._wp ; zdt_bl(:,:)   = 0._wp ; zds_bl(:,:)  = 0._wp 
    375     zdu_bl(:,:)  = 0._wp ; zdv_bl(:,:)  = 0._wp ; zdb_bl(:,:)  = 0._wp 
    376     zdt_ml(:,:)  = 0._wp ; zds_ml(:,:)  = 0._wp ; zdu_ml(:,:)   = 0._wp ; zdv_ml(:,:)  = 0._wp 
    377     zdb_ml(:,:)  = 0._wp 
    378     zdt_mle(:,:)  = 0._wp ; zds_mle(:,:)  = 0._wp ; zdu_mle(:,:)   = 0._wp 
    379     zdv_mle(:,:)  = 0._wp ; zdb_mle(:,:)  = 0._wp 
    380     zwth_ent = 0._wp ; zws_ent = 0._wp 
     369    zhbl(:,:)    = zlarge ; zhml(:,:)    = zlarge ; zdh(:,:)      = zlarge ; zdhdt(:,:)   = zlarge 
     370    zt_bl(:,:)   = zlarge ; zs_bl(:,:)   = zlarge ; zu_bl(:,:)    = zlarge 
     371    zv_bl(:,:)   = zlarge ; zb_bl(:,:)  = zlarge 
     372    zt_ml(:,:)   = zlarge ; zs_ml(:,:)    = zlarge ; zu_ml(:,:)   = zlarge 
     373    zt_mle(:,:)   = zlarge ; zs_mle(:,:)    = zlarge ; zu_mle(:,:)   = zlarge 
     374    zb_mle(:,:) = zlarge 
     375    zv_ml(:,:)   = zlarge ; zdt_bl(:,:)   = zlarge ; zds_bl(:,:)  = zlarge 
     376    zdu_bl(:,:)  = zlarge ; zdv_bl(:,:)  = zlarge ; zdb_bl(:,:)  = zlarge 
     377    zdt_ml(:,:)  = zlarge ; zds_ml(:,:)  = zlarge ; zdu_ml(:,:)   = zlarge ; zdv_ml(:,:)  = zlarge 
     378    zdb_ml(:,:)  = zlarge 
     379    zdt_mle(:,:)  = zlarge ; zds_mle(:,:)  = zlarge ; zdu_mle(:,:)   = zlarge 
     380    zdv_mle(:,:)  = zlarge ; zdb_mle(:,:)  = zlarge 
     381    zwth_ent = zlarge ; zws_ent = zlarge 
    381382    ! 
    382     zdtdz_pyc(:,:,:) = 0._wp ; zdsdz_pyc(:,:,:) = 0._wp ; zdbdz_pyc(:,:,:) = 0._wp 
    383     zdudz_pyc(:,:,:) = 0._wp ; zdvdz_pyc(:,:,:) = 0._wp 
     383    zdtdz_pyc(:,:,:) = zlarge ; zdsdz_pyc(:,:,:) = zlarge ; zdbdz_pyc(:,:,:) = zlarge 
     384    zdudz_pyc(:,:,:) = zlarge ; zdvdz_pyc(:,:,:) = zlarge 
     385    zdtdz_pyc(2:jpim1,2:jpjm1,:) = 0._wp ; zdsdz_pyc(2:jpim1,2:jpjm1,:) = 0._wp ; zdbdz_pyc(2:jpim1,2:jpjm1,:) = 0._wp 
     386    zdudz_pyc(2:jpim1,2:jpjm1,:) = 0._wp ; zdvdz_pyc(2:jpim1,2:jpjm1,:) = 0._wp 
    384387    ! 
    385     zdtdz_bl_ext(:,:) = 0._wp ; zdsdz_bl_ext(:,:) = 0._wp ; zdbdz_bl_ext(:,:) = 0._wp 
     388    zdtdz_bl_ext(:,:) = zlarge ; zdsdz_bl_ext(:,:) = zlarge ; zdbdz_bl_ext(:,:) = zlarge 
    386389 
    387390    IF ( ln_osm_mle ) THEN  ! only initialise arrays if needed 
    388        zdtdx(:,:) = 0._wp ; zdtdy(:,:) = 0._wp ; zdsdx(:,:) = 0._wp 
    389        zdsdy(:,:) = 0._wp ; dbdx_mle(:,:) = 0._wp ; dbdy_mle(:,:) = 0._wp 
    390        zwb_fk(:,:) = 0._wp ; zvel_mle(:,:) = 0._wp; zdiff_mle(:,:) = 0._wp 
    391        zhmle(:,:) = 0._wp  ; zmld(:,:) = 0._wp 
     391       zdtdx(:,:) = zlarge ; zdtdy(:,:) = zlarge ; zdsdx(:,:) = zlarge 
     392       zdsdy(:,:) = zlarge ; dbdx_mle(:,:) = zlarge ; dbdy_mle(:,:) = zlarge 
     393       zwb_fk(:,:) = zlarge ; zvel_mle(:,:) = zlarge; zdiff_mle(:,:) = zlarge 
     394       zhmle(:,:) = zlarge  ; zmld(:,:) = zlarge 
    392395    ENDIF 
    393     zwb_fk_b(:,:) = 0._wp   ! must be initialised even with ln_osm_mle=F as used in zdf_osm_calculate_dhdt 
     396    zwb_fk_b(:,:) = zlarge   ! must be initialised even with ln_osm_mle=F as used in zdf_osm_calculate_dhdt 
    394397 
    395398    ! Flux-Gradient arrays. 
    396     zsc_wth_1(:,:)  = 0._wp ; zsc_ws_1(:,:)   = 0._wp ; zsc_uw_1(:,:)   = 0._wp 
    397     zsc_uw_2(:,:)   = 0._wp ; zsc_vw_1(:,:)   = 0._wp ; zsc_vw_2(:,:)   = 0._wp 
    398     zhbl_t(:,:)     = 0._wp ; zdhdt(:,:)      = 0._wp 
    399  
    400     zdiffut(:,:,:) = 0._wp ; zviscos(:,:,:) = 0._wp ; ghamt(:,:,:) = 0._wp 
    401     ghams(:,:,:)   = 0._wp ; ghamu(:,:,:)   = 0._wp ; ghamv(:,:,:) = 0._wp 
     399    zsc_wth_1(:,:)  = zlarge ; zsc_ws_1(:,:)   = zlarge ; zsc_uw_1(:,:)   = zlarge 
     400    zsc_uw_2(:,:)   = zlarge ; zsc_vw_1(:,:)   = zlarge ; zsc_vw_2(:,:)   = zlarge 
     401    zhbl_t(:,:)     = zlarge ; zdhdt(:,:)      = zlarge 
     402 
     403    zdiffut(:,:,:) = zlarge ; zviscos(:,:,:) = zlarge 
     404    zdiffut(2:jpim1,2:jpjm1,:) = 0._wp ; zviscos(2:jpim1,2:jpjm1,:) = 0._wp 
     405    ghamt(:,:,:) = zlarge; ghams(:,:,:) = zlarge 
     406    ghamt(2:jpim1,2:jpjm1,:) = 0._wp; ghams(2:jpim1,2:jpjm1,:) = 0._wp 
     407    ghamu(:,:,:)   = zlarge ; ghamv(:,:,:) = zlarge 
     408    ghamu(2:jpim1,2:jpjm1,:)   = 0._wp ; ghamv(2:jpim1,2:jpjm1,:) = 0._wp 
    402409 
    403410 
     
    974981    ! 
    975982    ! Stokes term in scalar flux, flux-gradient relationship 
    976     WHERE ( lconv ) 
    977        zsc_wth_1 = zwstrl**3 * zwth0 / ( zvstr**3 + 0.5 * zwstrc**3 + epsln) 
     983    WHERE ( lconv(2:jpim1,2:jpjm1) ) 
     984       zsc_wth_1(2:jpim1,2:jpjm1) = zwstrl(2:jpim1,2:jpjm1)**3 * zwth0(2:jpim1,2:jpjm1) / & 
     985            &( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln) 
    978986       ! 
    979        zsc_ws_1 = zwstrl**3 * zws0 / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 
     987       zsc_ws_1(2:jpim1,2:jpjm1) = zwstrl(2:jpim1,2:jpjm1)**3 * zws0(2:jpim1,2:jpjm1) / & 
     988            &( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln ) 
    980989    ELSEWHERE 
    981        zsc_wth_1 = 2.0 * zwthav 
     990       zsc_wth_1(2:jpim1,2:jpjm1) = 2.0 * zwthav(2:jpim1,2:jpjm1) 
    982991       ! 
    983        zsc_ws_1 = 2.0 * zwsav 
     992       zsc_ws_1(2:jpim1,2:jpjm1) = 2.0 * zwsav(2:jpim1,2:jpjm1) 
    984993    ENDWHERE 
    985994 
     
    10091018 
    10101019    ! Stokes term in flux-gradient relationship (note in zsc_uw_n don't use zvstr since term needs to go to zero as zwstrl goes to zero) 
    1011     WHERE ( lconv ) 
    1012        zsc_uw_1 = ( zwstrl**3 + 0.5 * zwstrc**3 )**pthird * zustke / MAX( ( 1.0 - 1.0 * 6.5 * zla**(8.0/3.0) ), 0.2 ) 
    1013        zsc_uw_2 = ( zwstrl**3 + 0.5 * zwstrc**3 )**pthird * zustke / MIN( zla**(8.0/3.0) + epsln, 0.12 ) 
    1014        zsc_vw_1 = ff_t * zhml * zustke**3 * MIN( zla**(8.0/3.0), 0.12 ) / ( ( zvstr**3 + 0.5 * zwstrc**3 )**(2.0/3.0) + epsln ) 
     1020    WHERE ( lconv(2:jpim1,2:jpjm1) ) 
     1021       zsc_uw_1(2:jpim1,2:jpjm1) = ( zwstrl(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 )**pthird * zustke(2:jpim1,2:jpjm1) / & 
     1022            & MAX( ( 1.0 - 1.0 * 6.5 * zla(2:jpim1,2:jpjm1)**(8.0/3.0) ), 0.2 ) 
     1023       zsc_uw_2(2:jpim1,2:jpjm1) = ( zwstrl(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 )**pthird * zustke(2:jpim1,2:jpjm1) / & 
     1024            & MIN( zla(2:jpim1,2:jpjm1)**(8.0/3.0) + epsln, 0.12 ) 
     1025       zsc_vw_1(2:jpim1,2:jpjm1) = ff_t(2:jpim1,2:jpjm1) * zhml(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1)**3 * MIN( zla**(8.0/3.0), 0.12 ) / & 
     1026            & ( ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 )**(2.0/3.0) + epsln ) 
    10151027    ELSEWHERE 
    1016        zsc_uw_1 = zustar**2 
    1017        zsc_vw_1 = ff_t * zhbl * zustke**3 * MIN( zla**(8.0/3.0), 0.12 ) / (zvstr**2 + epsln) 
     1028       zsc_uw_1(2:jpim1,2:jpjm1) = zustar(2:jpim1,2:jpjm1)**2 
     1029       zsc_vw_1(2:jpim1,2:jpjm1) = ff_t(2:jpim1,2:jpjm1) * zhbl(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1)**3 * & 
     1030            &  MIN( zla(2:jpim1,2:jpjm1)**(8.0/3.0), 0.12 ) / (zvstr(2:jpim1,2:jpjm1)**2 + epsln) 
    10181031    ENDWHERE 
    10191032    IF(ln_dia_osm) THEN 
     
    10661079    ! Buoyancy term in flux-gradient relationship [note : includes ROI ratio (X0.3) and pressure (X0.5)] 
    10671080 
    1068     WHERE ( lconv ) 
    1069        zsc_wth_1 = zwbav * zwth0 * ( 1.0 + EXP ( 0.2 * zhol ) ) * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 
    1070        zsc_ws_1  = zwbav * zws0  * ( 1.0 + EXP ( 0.2 * zhol ) ) * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 
     1081    WHERE ( lconv(2:jpim1,2:jpjm1) ) 
     1082       zsc_wth_1(2:jpim1,2:jpjm1) = zwbav(2:jpim1,2:jpjm1) * zwth0(2:jpim1,2:jpjm1) * ( 1.0 + EXP ( 0.2 * zhol(2:jpim1,2:jpjm1) ) ) * & 
     1083            & zhml(2:jpim1,2:jpjm1) / ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln ) 
     1084       zsc_ws_1(2:jpim1,2:jpjm1)  = zwbav(2:jpim1,2:jpjm1) * zws0(2:jpim1,2:jpjm1)  * ( 1.0 + EXP ( 0.2 * zhol(2:jpim1,2:jpjm1) ) ) * & 
     1085            & zhml(2:jpim1,2:jpjm1) / ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln ) 
    10711086    ELSEWHERE 
    1072        zsc_wth_1 = 0._wp 
    1073        zsc_ws_1 = 0._wp 
     1087       zsc_wth_1(2:jpim1,2:jpjm1) = 0._wp 
     1088       zsc_ws_1(2:jpim1,2:jpjm1) = 0._wp 
    10741089    ENDWHERE 
    10751090 
     
    11291144    END DO      ! jj loop 
    11301145 
    1131     WHERE ( lconv ) 
    1132        zsc_uw_1 = -zwb0 * zustar**2 * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln ) 
    1133        zsc_uw_2 =  zwb0 * zustke    * zhml / ( zvstr**3 + 0.5 * zwstrc**3 + epsln )**(2.0/3.0) 
    1134        zsc_vw_1 = 0._wp 
     1146    WHERE ( lconv(2:jpim1,2:jpjm1) ) 
     1147       zsc_uw_1(2:jpim1,2:jpjm1) = -zwb0(2:jpim1,2:jpjm1) * zustar(2:jpim1,2:jpjm1)**2 * zhml(2:jpim1,2:jpjm1) / & 
     1148            & ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln ) 
     1149       zsc_uw_2(2:jpim1,2:jpjm1) =  zwb0(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1)    * zhml(2:jpim1,2:jpjm1) / & 
     1150            & ( zvstr(2:jpim1,2:jpjm1)**3 + 0.5 * zwstrc(2:jpim1,2:jpjm1)**3 + epsln )**(2.0/3.0) 
     1151       zsc_vw_1(2:jpim1,2:jpjm1) = 0._wp 
    11351152    ELSEWHERE 
    1136        zsc_uw_1 = 0._wp 
    1137        zsc_vw_1 = 0._wp 
     1153       zsc_uw_1(2:jpim1,2:jpjm1) = 0._wp 
     1154       zsc_vw_1(2:jpim1,2:jpjm1) = 0._wp 
    11381155    ENDWHERE 
    11391156 
     
    12771294    END DO      ! jj loop 
    12781295 
    1279     WHERE ( lconv ) 
    1280        zsc_uw_1 = zustar**2 
    1281        zsc_vw_1 = ff_t * zustke * zhml 
     1296    WHERE ( lconv(2:jpim1,2:jpjm1) ) 
     1297       zsc_uw_1(2:jpim1,2:jpjm1) = zustar(2:jpim1,2:jpjm1)**2 
     1298       zsc_vw_1(2:jpim1,2:jpjm1) = ff_t(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1) * zhml(2:jpim1,2:jpjm1) 
    12821299    ELSEWHERE 
    1283        zsc_uw_1 = zustar**2 
    1284        zsc_uw_2 = (2.25 - 3.0 * ( 1.0 - EXP( -1.25 * 2.0 ) ) ) * ( 1.0 - EXP( -4.0 * 2.0 ) ) * zsc_uw_1 
    1285        zsc_vw_1 = ff_t * zustke * zhbl 
    1286        zsc_vw_2 = -0.11 * SIN( 3.14159 * ( 2.0 + 0.4 ) ) * EXP(-( 1.5 + 2.0 )**2 ) * zsc_vw_1 
     1300       zsc_uw_1(2:jpim1,2:jpjm1) = zustar(2:jpim1,2:jpjm1)**2 
     1301       zsc_uw_2(2:jpim1,2:jpjm1) = (2.25 - 3.0 * ( 1.0 - EXP( -1.25 * 2.0 ) ) ) * ( 1.0 - EXP( -4.0 * 2.0 ) ) * zsc_uw_1(2:jpim1,2:jpjm1) 
     1302       zsc_vw_1(2:jpim1,2:jpjm1) = ff_t(2:jpim1,2:jpjm1) * zustke(2:jpim1,2:jpjm1) * zhbl(2:jpim1,2:jpjm1) 
     1303       zsc_vw_2(2:jpim1,2:jpjm1) = -0.11 * SIN( 3.14159 * ( 2.0 + 0.4 ) ) * EXP(-( 1.5 + 2.0 )**2 ) * zsc_vw_1(2:jpim1,2:jpjm1) 
    12871304    ENDWHERE 
    12881305 
     
    19221939      END DO 
    19231940 
    1924       zekman(:,:) = EXP( - zek * ABS( ff_t(:,:) ) * zhbl(:,:) / MAX(zustar(:,:), 1.e-8 ) ) 
    1925  
    1926       zshear(:,:) = 0._wp 
     1941      zekman(2:jpim1,2:jpjm1) = EXP( - zek * ABS( ff_t(2:jpim1,2:jpjm1) ) * zhbl(2:jpim1,2:jpjm1) / MAX(zustar(2:jpim1,2:jpjm1), 1.e-8 ) ) 
     1942 
     1943      zshear(2:jpim1,2:jpjm1) = 0._wp 
    19271944#ifdef key_osm_debug 
    19281945      IF(narea==nn_narea_db) THEN 
     
    19331950      END IF 
    19341951#endif 
    1935       j_ddh(:,:) = 1      
     1952      j_ddh(2:jpim1,2:jpjm1) = 1      
    19361953 
    19371954      DO jj = 2, jpjm1 
     
    20372054      END DO   ! jj loop  
    20382055 
    2039       zwb_min(:,:) = 0._wp 
     2056      zwb_min(:,:) = zlarge 
    20402057 
    20412058      DO jj = 2, jpjm1 
     
    21162133 
    21172134 
    2118       zt   = 0._wp 
    2119       zs   = 0._wp 
    2120       zu   = 0._wp 
    2121       zv   = 0._wp 
     2135      zt(2:jpim1,2:jpjm1)  = 0._wp 
     2136      zs(2:jpim1,2:jpjm1)  = 0._wp 
     2137      zu(2:jpim1,2:jpjm1)  = 0._wp 
     2138      zv(2:jpim1,2:jpjm1)  = 0._wp 
    21222139      DO jj = 2, jpjm1                                 !  Vertical slab 
    21232140         DO ji = 2, jpim1 
     
    22132230      REAL(wp)                      :: zpe_mle_ref, zdbdz_mle_int 
    22142231 
    2215       znd_param(:,:) = 0._wp 
     2232      znd_param(2:jpim1,2:jpjm1) = 0._wp 
    22162233 
    22172234      DO jj = 2, jpjm1 
Note: See TracChangeset for help on using the changeset viewer.