Changeset 14645 for NEMO/branches
- Timestamp:
- 2021-03-26T15:43:45+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/NERC/dev_r11078_OSMOSIS_IMMERSE_Nurser_4.0/src/OCE/ZDF/zdfosm.F90
r14541 r14645 354 354 ! For debugging 355 355 INTEGER :: ikt 356 REAL(wp) :: zlarge = -1.e10_wp, zero = 0._wp 356 357 !!-------------------------------------------------------------------- 357 358 ! 358 359 ibld(:,:) = 0 ; imld(:,:) = 0 359 zrad0(:,:) = 0._wp ; zradh(:,:) = 0._wp ; zradav(:,:) = 0._wp ; zustar(:,:) = 0._wp360 zwstrl(:,:) = 0._wp ; zvstr(:,:) = 0._wp ; zwstrc(:,:) = 0._wp ; zuw0(:,:) = 0._wp361 zvw0(:,:) = 0._wp ; zwth0(:,:) = 0._wp ; zws0(:,:) = 0._wp ; zwb0(:,:) = 0._wp362 zwthav(:,:) = 0._wp ; zwsav(:,:) = 0._wp ; zwbav(:,:) = 0._wp ; zwb_ent(:,:) = 0._wp363 zustke(:,:) = 0._wp ; zla(:,:) = 0._wp ; zcos_wind(:,:) = 0._wp ; zsin_wind(:,:) = 0._wp364 zhol(:,:) = 0._wp ; zwb0tot(:,:) = 0._wp360 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 365 366 lconv(:,:) = .FALSE.; lpyc(:,:) = .FALSE. ; lflux(:,:) = .FALSE. ; lmle(:,:) = .FALSE. 366 367 ! mixed layer 367 368 ! no initialization of zhbl or zhml (or zdh?) 368 zhbl(:,:) = 1._wp ; zhml(:,:) = 1._wp ; zdh(:,:) = 1._wp ; zdhdt(:,:) = 0._wp369 zt_bl(:,:) = 0._wp ; zs_bl(:,:) = 0._wp ; zu_bl(:,:) = 0._wp370 zv_bl(:,:) = 0._wp ; zb_bl(:,:) = 0._wp371 zt_ml(:,:) = 0._wp ; zs_ml(:,:) = 0._wp ; zu_ml(:,:) = 0._wp372 zt_mle(:,:) = 0._wp ; zs_mle(:,:) = 0._wp ; zu_mle(:,:) = 0._wp373 zb_mle(:,:) = 0._wp374 zv_ml(:,:) = 0._wp ; zdt_bl(:,:) = 0._wp ; zds_bl(:,:) = 0._wp375 zdu_bl(:,:) = 0._wp ; zdv_bl(:,:) = 0._wp ; zdb_bl(:,:) = 0._wp376 zdt_ml(:,:) = 0._wp ; zds_ml(:,:) = 0._wp ; zdu_ml(:,:) = 0._wp ; zdv_ml(:,:) = 0._wp377 zdb_ml(:,:) = 0._wp378 zdt_mle(:,:) = 0._wp ; zds_mle(:,:) = 0._wp ; zdu_mle(:,:) = 0._wp379 zdv_mle(:,:) = 0._wp ; zdb_mle(:,:) = 0._wp380 zwth_ent = 0._wp ; zws_ent = 0._wp369 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 381 382 ! 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 384 387 ! 385 zdtdz_bl_ext(:,:) = 0._wp ; zdsdz_bl_ext(:,:) = 0._wp ; zdbdz_bl_ext(:,:) = 0._wp388 zdtdz_bl_ext(:,:) = zlarge ; zdsdz_bl_ext(:,:) = zlarge ; zdbdz_bl_ext(:,:) = zlarge 386 389 387 390 IF ( ln_osm_mle ) THEN ! only initialise arrays if needed 388 zdtdx(:,:) = 0._wp ; zdtdy(:,:) = 0._wp ; zdsdx(:,:) = 0._wp389 zdsdy(:,:) = 0._wp ; dbdx_mle(:,:) = 0._wp ; dbdy_mle(:,:) = 0._wp390 zwb_fk(:,:) = 0._wp ; zvel_mle(:,:) = 0._wp; zdiff_mle(:,:) = 0._wp391 zhmle(:,:) = 0._wp ; zmld(:,:) = 0._wp391 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 392 395 ENDIF 393 zwb_fk_b(:,:) = 0._wp! must be initialised even with ln_osm_mle=F as used in zdf_osm_calculate_dhdt396 zwb_fk_b(:,:) = zlarge ! must be initialised even with ln_osm_mle=F as used in zdf_osm_calculate_dhdt 394 397 395 398 ! 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 402 409 403 410 … … 974 981 ! 975 982 ! 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) 978 986 ! 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 ) 980 989 ELSEWHERE 981 zsc_wth_1 = 2.0 * zwthav990 zsc_wth_1(2:jpim1,2:jpjm1) = 2.0 * zwthav(2:jpim1,2:jpjm1) 982 991 ! 983 zsc_ws_1 = 2.0 * zwsav992 zsc_ws_1(2:jpim1,2:jpjm1) = 2.0 * zwsav(2:jpim1,2:jpjm1) 984 993 ENDWHERE 985 994 … … 1009 1018 1010 1019 ! 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 ) 1015 1027 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) 1018 1031 ENDWHERE 1019 1032 IF(ln_dia_osm) THEN … … 1066 1079 ! Buoyancy term in flux-gradient relationship [note : includes ROI ratio (X0.3) and pressure (X0.5)] 1067 1080 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 ) 1071 1086 ELSEWHERE 1072 zsc_wth_1 = 0._wp1073 zsc_ws_1 = 0._wp1087 zsc_wth_1(2:jpim1,2:jpjm1) = 0._wp 1088 zsc_ws_1(2:jpim1,2:jpjm1) = 0._wp 1074 1089 ENDWHERE 1075 1090 … … 1129 1144 END DO ! jj loop 1130 1145 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 1135 1152 ELSEWHERE 1136 zsc_uw_1 = 0._wp1137 zsc_vw_1 = 0._wp1153 zsc_uw_1(2:jpim1,2:jpjm1) = 0._wp 1154 zsc_vw_1(2:jpim1,2:jpjm1) = 0._wp 1138 1155 ENDWHERE 1139 1156 … … 1277 1294 END DO ! jj loop 1278 1295 1279 WHERE ( lconv )1280 zsc_uw_1 = zustar**21281 zsc_vw_1 = ff_t * zustke * zhml1296 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) 1282 1299 ELSEWHERE 1283 zsc_uw_1 = zustar**21284 zsc_uw_2 = (2.25 - 3.0 * ( 1.0 - EXP( -1.25 * 2.0 ) ) ) * ( 1.0 - EXP( -4.0 * 2.0 ) ) * zsc_uw_11285 zsc_vw_1 = ff_t * zustke * zhbl1286 zsc_vw_2 = -0.11 * SIN( 3.14159 * ( 2.0 + 0.4 ) ) * EXP(-( 1.5 + 2.0 )**2 ) * zsc_vw_11300 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) 1287 1304 ENDWHERE 1288 1305 … … 1922 1939 END DO 1923 1940 1924 zekman( :,:) = EXP( - zek * ABS( ff_t(:,:) ) * zhbl(:,:) / MAX(zustar(:,:), 1.e-8 ) )1925 1926 zshear( :,:) = 0._wp1941 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 1927 1944 #ifdef key_osm_debug 1928 1945 IF(narea==nn_narea_db) THEN … … 1933 1950 END IF 1934 1951 #endif 1935 j_ddh( :,:) = 11952 j_ddh(2:jpim1,2:jpjm1) = 1 1936 1953 1937 1954 DO jj = 2, jpjm1 … … 2037 2054 END DO ! jj loop 2038 2055 2039 zwb_min(:,:) = 0._wp2056 zwb_min(:,:) = zlarge 2040 2057 2041 2058 DO jj = 2, jpjm1 … … 2116 2133 2117 2134 2118 zt 2119 zs 2120 zu 2121 zv 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 2122 2139 DO jj = 2, jpjm1 ! Vertical slab 2123 2140 DO ji = 2, jpim1 … … 2213 2230 REAL(wp) :: zpe_mle_ref, zdbdz_mle_int 2214 2231 2215 znd_param( :,:) = 0._wp2232 znd_param(2:jpim1,2:jpjm1) = 0._wp 2216 2233 2217 2234 DO jj = 2, jpjm1
Note: See TracChangeset
for help on using the changeset viewer.