Changeset 9551
- Timestamp:
- 2018-05-04T16:52:08+02:00 (7 years ago)
- Location:
- branches/2018/dev_r8864_nemo_v3_6_ZTILDE/NEMOGCM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2018/dev_r8864_nemo_v3_6_ZTILDE/NEMOGCM/CONFIG/COMODO_IW/EXP00/namelist_cfg
r9530 r9551 337 337 !---------------------------------------------------------------------------------- 338 338 ! ! Operator type: 339 ln_traldf_lap = . true.! laplacian operator339 ln_traldf_lap = .false. ! laplacian operator 340 340 ln_traldf_bilap = .false. ! bilaplacian operator 341 341 ! ! Direction of action: 342 342 ln_traldf_level = .false. ! iso-level 343 ln_traldf_hor = .true. ! horizontal (geopotential) (needs "key_ldfslp" when ln_sco=T)343 ln_traldf_hor = .true. ! horizontal (geopotential) (needs "key_ldfslp" when ln_sco=T) 344 344 ln_traldf_iso = .false. ! iso-neutral (needs "key_ldfslp") 345 345 ln_traldf_grif = .false. ! use griffies triads -
branches/2018/dev_r8864_nemo_v3_6_ZTILDE/NEMOGCM/CONFIG/cfg.txt
r9545 r9551 11 11 GYRE OPA_SRC 12 12 ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC 13 ORCA2LIM3_16 OPA_SRC LIM_SRC_3 NST_SRC14 RIDGE OPA_SRC15 13 COMODO_IW OPA_SRC 16 ORCA2LIM3_LONG OPA_SRC LIM_SRC_3 NST_SRC -
branches/2018/dev_r8864_nemo_v3_6_ZTILDE/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r9545 r9551 462 462 DO jj = 2, jpjm1 463 463 DO ji = fs_2, fs_jpim1 ! vector opt. 464 tilde_e3t_a(ji,jj,jk) = &465 -( e2u(ji,jj)*fse3u(ji,jj,jk) * ztu(ji,jj,jk) - e2u(ji-1,jj )*fse3u(ji-1,jj ,jk) * ztu(ji-1,jj ,jk) &466 + e1v(ji,jj)*fse3v(ji,jj,jk) * ztv(ji,jj,jk) - e1v(ji ,jj-1)*fse3v(ji ,jj-1,jk) * ztv(ji ,jj-1,jk) ) &467 / ( e1t(ji,jj) * e2t(ji,jj) )464 tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) & 465 & -( e2u(ji,jj)*fse3u(ji,jj,jk) * ztu(ji,jj,jk) - e2u(ji-1,jj )*fse3u(ji-1,jj ,jk) * ztu(ji-1,jj ,jk) & 466 & + e1v(ji,jj)*fse3v(ji,jj,jk) * ztv(ji,jj,jk) - e1v(ji ,jj-1)*fse3v(ji ,jj-1,jk) * ztv(ji ,jj-1,jk) ) & 467 & / ( e1t(ji,jj) * e2t(ji,jj) ) 468 468 END DO 469 469 END DO … … 677 677 ENDIF 678 678 679 IF(( ln_vvl_ztilde.OR. ln_vvl_layer).AND.(.NOT.ll_do_bclinic) ) THEN679 IF(((ln_vvl_ztilde.AND.(.NOT.ln_vvl_ztilde_as_zstar)) .OR. ln_vvl_layer).AND.(.NOT.ll_do_bclinic) ) THEN 680 680 zhdiv(:,:) = 0. 681 681 DO jk = 1, jpkm1 … … 691 691 692 692 DO jk = 1, jpkm1 693 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - z2dt * fse3t_n(:,:,jk) * &693 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - tildemask(:,:) * z2dt * fse3t_n(:,:,jk) * & 694 694 & (hdivn(:,:,jk) - hdivb(:,:,jk) - zhdiv(:,:)) 695 695 END DO 696 696 DO jk = 1, jpkm1 697 fse3t_a(:,:,jk) = fse3t_a(:,:,jk) - z2dt * fse3t_n(:,:,jk) * &697 fse3t_a(:,:,jk) = fse3t_a(:,:,jk) - tildemask(:,:) * z2dt * fse3t_n(:,:,jk) * & 698 698 & (hdivn(:,:,jk) - hdivb(:,:,jk) - zhdiv(:,:)) 699 699 END DO … … 1157 1157 INTEGER :: jkbot ! bottom level 1158 1158 LOGICAL :: l_is_orca ! local logical 1159 REAL(wp) :: zmin, zdo, zup, ztap 1159 REAL(wp) :: zmin, zdo, zup, ztap, zsmall 1160 1160 REAL(wp), POINTER, DIMENSION(:,:) :: zs ! Surface interface depth anomaly 1161 1161 REAL(wp), POINTER, DIMENSION(:,:,:) :: zw ! Interface depth anomaly … … 1167 1167 1168 1168 1169 nmet=11170 1169 ! nmet=0 ! Original method (Surely wrong) 1171 ! nmet=1 ! Interface interpolation 1172 ! nmet=2 ! Internal interfaces interpolation only, spread barotropic increment 1173 ztap = 0.1_wp ! Minimum fraction of T-point thickness at cell interfaces 1170 ! nmet= 1 ! Interface interpolation 1171 nmet=2 ! Internal interfaces interpolation only, spread barotropic increment 1172 ! Note that we kept surface weighted interpolation for barotropic increment to be compliant 1173 ! with what is done in surface pressure module. 1174 1175 ztap = 0._wp ! Minimum fraction of T-point thickness at cell interfaces 1176 zsmall = 1e-3_wp 1174 1177 1175 1178 IF ( (nmet==1).OR.(nmet==2) ) THEN … … 1183 1186 zw(:,:,:) = 0._wp 1184 1187 ! 1185 DO jj = 1, jpj 1186 DO ji = 1, jpi 1187 jkbot = mbkt(ji,jj) 1188 DO jk=jkbot,1,-1 1189 zw(ji,jj,jk) = zw(ji,jj,jk+1) - pe3_in(ji,jj,jk) + e3t_0(ji,jj,jk) 1190 END DO 1191 END DO 1188 DO jk=2,jpk 1189 zw(:,:,jk) = zw(:,:,jk-1) + pe3_in(:,:,jk-1)*tmask(:,:,jk-1) 1192 1190 END DO 1193 ! 1191 ! Interface depth anomalies: 1192 DO jk=1,jpkm1 1193 zw(:,:,jk) = zw(:,:,jk) - zw(:,:,jpk) + ht_0(:,:) 1194 END DO 1195 zw(:,:,jpk) = ht_0(:,:) 1194 1196 ! 1195 1197 IF (nmet==2) THEN ! Consider "internal" interfaces only 1196 1198 zs(:,:) = - zw(:,:,1) ! Save surface anomaly (ssh) 1197 1199 ! 1198 zw(:,:,:) = 0._wp1199 1200 DO jj = 1, jpj 1200 1201 DO ji = 1, jpi 1201 jkbot = mbkt(ji,jj) 1202 DO jk=jkbot,1,-1 1203 zw(ji,jj,jk) = zw(ji,jj,jk+1) - ( pe3_in(ji,jj,jk) & 1202 DO jk=1,jpk 1203 zw(ji,jj,jk) = (zw(ji,jj,jk) + zs(ji,jj)) & 1204 1204 & * ht_0(ji,jj) / (ht_0(ji,jj) + zs(ji,jj) + 1._wp - tmask(ji,jj,1)) & 1205 & - e3t_0(ji,jj,jk))* tmask(ji,jj,jk)1205 & * tmask(ji,jj,jk) 1206 1206 END DO 1207 1207 END DO … … 1236 1236 ! Correction at last level: 1237 1237 jkbot = mbku(ji,jj) 1238 pe3_out(ji,jj,jkbot) = -0.5_wp * umask(ji,jj,jkbot) * r1_e12u(ji,jj) & 1239 & * ( e12t(ji ,jj) * zw(ji ,jj,jkbot) & 1240 & + e12t(ji+1,jj) * zw(ji+1,jj,jkbot) ) 1241 ! 1242 ! If there is a step, taper bottom interface: 1243 IF (hu_0(ji,jj) < 0.5_wp * ( ht_0(ji,jj) + ht_0(ji+1,jj) ) ) THEN 1244 IF ( ht_0(ji+1,jj) < ht_0(ji,jj) ) THEN 1245 ! zmin = ztap * pe3_in(ji+1,jj,jkbot) 1246 zmin = ztap * (-zw(ji+1,jj,jkbot)+e3t_0(ji+1,jj,jkbot)) 1247 ELSE 1248 ! zmin = ztap * pe3_in(ji ,jj,jkbot) 1249 zmin = ztap * (-zw(ji,jj,jkbot)+e3t_0(ji,jj,jkbot)) 1238 zdo = hu_0(ji,jj) 1239 DO jk=jkbot,1,-1 1240 zup = 0.5_wp * ( zw(ji ,jj,jk) + zw(ji+1,jj,jk) ) 1241 ! 1242 ! If there is a step, taper bottom interface: 1243 IF ((hu_0(ji,jj) < 0.5_wp * ( ht_0(ji,jj) + ht_0(ji+1,jj) ) ).AND.(zup>zdo)) THEN 1244 IF ( ht_0(ji+1,jj) < ht_0(ji,jj) ) THEN 1245 ! zmin = ztap * pe3_in(ji+1,jj,jk) 1246 zmin = ztap * (zw(ji+1,jj,jk+1)-zw(ji+1,jj,jk)) 1247 ELSE 1248 ! zmin = ztap * pe3_in(ji ,jj,jk) 1249 zmin = ztap * (zw(ji ,jj,jk+1)-zw(ji ,jj,jk)) 1250 ENDIF 1251 zup = MIN(zup, zdo-zmin) 1250 1252 ENDIF 1251 zmin = -e3u_0(ji,jj,jkbot) + zmin 1252 pe3_out(ji,jj,jkbot) = MAX(pe3_out(ji,jj,jkbot), zmin) 1253 ENDIF 1254 ! 1255 zdo = -pe3_out(ji,jj,jkbot) 1256 DO jk=jkbot-1,1,-1 1257 zup = 0.5_wp * umask(ji,jj,jk) * r1_e12u(ji ,jj) & 1258 & *( e12t(ji ,jj) * zw(ji ,jj,jk) & 1259 & +e12t(ji+1,jj) * zw(ji+1,jj,jk) ) 1260 pe3_out(ji,jj,jk) = zdo - zup 1261 zdo = zdo - pe3_out(ji,jj,jk) 1253 zup = MIN(zup, zdo-zsmall) 1254 pe3_out(ji,jj,jk) = zdo - zup - e3u_0(ji,jj,jk) 1255 zdo = zup 1262 1256 END DO 1263 1257 END DO … … 1309 1303 ! Correction at last level: 1310 1304 jkbot = mbkv(ji,jj) 1311 pe3_out(ji,jj,jkbot) = -0.5_wp * vmask(ji,jj,jkbot) * r1_e12v(ji,jj) & 1312 & * ( e12t(ji,jj ) * zw(ji,jj ,jkbot) & 1313 & + e12t(ji,jj+1) * zw(ji,jj+1,jkbot) ) 1314 ! 1315 ! If there is a step, taper bottom interface: 1316 IF (hv_0(ji,jj) < 0.5_wp * ( ht_0(ji,jj) + ht_0(ji,jj+1) ) ) THEN 1317 IF ( ht_0(ji,jj+1) < ht_0(ji,jj) ) THEN 1318 ! zmin = ztap * pe3_in(ji,jj+1,jkbot) 1319 zmin = ztap * (-zw(ji,jj+1,jkbot)+e3t_0(ji,jj+1,jkbot)) 1320 ELSE 1321 ! zmin = ztap * pe3_in(ji,jj ,jkbot) 1322 zmin = ztap * (-zw(ji,jj,jkbot)+e3t_0(ji,jj,jkbot)) 1305 zdo = hv_0(ji,jj) 1306 DO jk=jkbot,1,-1 1307 zup = 0.5_wp * ( zw(ji,jj ,jk) + zw(ji,jj+1,jk) ) 1308 ! 1309 ! If there is a step, taper bottom interface: 1310 IF ((hv_0(ji,jj) < 0.5_wp * ( ht_0(ji,jj) + ht_0(ji,jj+1) ) ).AND.(zup>zdo)) THEN 1311 IF ( ht_0(ji,jj+1) < ht_0(ji,jj) ) THEN 1312 ! zmin = ztap * pe3_in(ji,jj+1,jk) 1313 zmin = ztap * (zw(ji,jj+1,jk+1)-zw(ji,jj+1,jk)) 1314 ELSE 1315 ! zmin = ztap * pe3_in(ji ,jj,jk) 1316 zmin = ztap * (zw(ji,jj ,jk+1)-zw(ji,jj ,jk)) 1317 ENDIF 1318 zup = MIN(zup, zdo-zmin) 1323 1319 ENDIF 1324 zmin = -e3v_0(ji,jj,jkbot) + zmin 1325 pe3_out(ji,jj,jkbot) = MAX(pe3_out(ji,jj,jkbot), zmin) 1326 ENDIF 1327 ! 1328 zdo = -pe3_out(ji,jj,jkbot) 1329 DO jk=jkbot-1,1,-1 1330 zup = 0.5_wp * vmask(ji,jj,jk) * r1_e12v(ji,jj ) & 1331 & * ( e12t(ji,jj ) * zw(ji,jj ,jk) & 1332 & +e12t(ji,jj+1) * zw(ji,jj+1,jk) ) 1333 ! 1334 pe3_out(ji,jj,jk) = zdo - zup 1335 zdo = zdo - pe3_out(ji,jj,jk) 1320 zup = MIN(zup, zdo-zsmall) 1321 pe3_out(ji,jj,jk) = zdo - zup - e3v_0(ji,jj,jk) 1322 zdo = zup 1336 1323 END DO 1337 1324 END DO … … 1386 1373 ! bottom correction: 1387 1374 jkbot = MIN(mbku(ji,jj), mbku(ji,jj+1)) 1388 pe3_out(ji,jj,jkbot) = -0.25_wp * umask(ji,jj,jkbot) * umask(ji,jj+1,jkbot) * r1_e12f(ji,jj) & 1389 & * ( e12t(ji ,jj ) * zw(ji ,jj ,jkbot) & 1390 & + e12t(ji+1,jj ) * zw(ji+1,jj ,jkbot) & 1391 & + e12t(ji ,jj+1) * zw(ji ,jj+1,jkbot) & 1392 & + e12t(ji+1,jj+1) * zw(ji+1,jj+1,jkbot) ) 1393 ! 1394 ! If there is a step, taper bottom interface: 1395 IF (hf_0(ji,jj) < 0.5_wp * ( hu_0(ji,jj ) + hu_0(ji,jj+1) ) ) THEN 1396 IF ( hu_0(ji,jj+1) < hu_0(ji,jj) ) THEN 1397 IF ( ht_0(ji+1,jj+1) < ht_0(ji ,jj+1) ) THEN 1398 ! zmin = ztap * pe3_in(ji+1,jj+1,jkbot) 1399 zmin = ztap * (-zw(ji+1,jj+1,jkbot)+e3t_0(ji+1,jj+1,jkbot)) 1375 zdo = hf_0(ji,jj) 1376 DO jk=jkbot,1,-1 1377 zup = 0.25_wp * ( zw(ji ,jj ,jk) & 1378 & + zw(ji+1,jj ,jk) & 1379 & + zw(ji ,jj+1,jk) & 1380 & + zw(ji+1,jj+1,jk) ) 1381 ! 1382 ! If there is a step, taper bottom interface: 1383 IF ((hf_0(ji,jj) < 0.5_wp * ( hu_0(ji,jj ) + hu_0(ji,jj+1) ) ).AND.(zup>zdo)) THEN 1384 IF ( hu_0(ji,jj+1) < hu_0(ji,jj) ) THEN 1385 IF ( ht_0(ji+1,jj+1) < ht_0(ji ,jj+1) ) THEN 1386 ! zmin = ztap * pe3_in(ji+1,jj+1,jk) 1387 zmin = ztap * (zw(ji+1,jj+1,jk+1)-zw(ji+1,jj+1,jk)) 1388 ELSE 1389 ! zmin = ztap * pe3_in(ji ,jj+1,jk) 1390 zmin = ztap * (zw(ji ,jj+1,jk+1)-zw(ji ,jj+1,jk)) 1391 ENDIF 1400 1392 ELSE 1401 ! zmin = ztap * pe3_in(ji ,jj+1,jkbot) 1402 zmin = ztap * (-zw(ji,jj+1,jkbot)+e3t_0(ji,jj+1,jkbot)) 1393 IF ( ht_0(ji+1,jj ) < ht_0(ji ,jj ) ) THEN 1394 ! zmin = ztap * pe3_in(ji+1,jj ,jk) 1395 zmin = ztap * (zw(ji+1,jj ,jk+1)-zw(ji+1,jj ,jk)) 1396 ELSE 1397 ! zmin = ztap * pe3_in(ji ,jj ,jk) 1398 zmin = ztap * (zw(ji ,jj ,jk+1)-zw(ji ,jj ,jk)) 1399 ENDIF 1403 1400 ENDIF 1404 ELSE 1405 IF ( ht_0(ji+1,jj ) < ht_0(ji ,jj ) ) THEN 1406 ! zmin = ztap * pe3_in(ji+1,jj ,jkbot) 1407 zmin = ztap * (-zw(ji+1,jj,jkbot)+e3t_0(ji+1,jj,jkbot)) 1408 ELSE 1409 ! zmin = ztap * pe3_in(ji ,jj ,jkbot) 1410 zmin = ztap * (-zw(ji,jj,jkbot)+e3t_0(ji,jj,jkbot)) 1411 ENDIF 1401 zup = MIN(zup, zdo-zmin) 1412 1402 ENDIF 1413 zmin = -e3f_0(ji,jj,jkbot) + zmin 1414 pe3_out(ji,jj,jkbot) = MAX(pe3_out(ji,jj,jkbot), zmin) 1415 ENDIF 1416 ! 1417 zdo = -pe3_out(ji,jj,jkbot) 1418 DO jk=jkbot-1,1,-1 1419 zup = 0.25_wp * umask(ji,jj,jk) * umask(ji,jj+1,jk) * r1_e12f(ji,jj) & 1420 & * ( e12t(ji ,jj ) * zw(ji ,jj ,jk) & 1421 & + e12t(ji+1,jj ) * zw(ji+1,jj ,jk) & 1422 & + e12t(ji ,jj+1) * zw(ji ,jj+1,jk) & 1423 & + e12t(ji+1,jj+1) * zw(ji+1,jj+1,jk) ) 1424 pe3_out(ji,jj,jk) = zdo - zup 1403 zup = MIN(zup, zdo-zsmall) 1425 1404 ! 1426 zdo = zdo - pe3_out(ji,jj,jk) 1405 pe3_out(ji,jj,jk) = zdo - zup - e3f_0(ji,jj,jk) 1406 zdo = zup 1427 1407 END DO 1428 ! 1429 END DO 1430 END DO 1408 END DO 1409 END DO 1431 1410 ENDIF 1432 1411 ! … … 1491 1470 1492 1471 END SUBROUTINE dom_vvl_interpol 1472 1493 1473 1494 1474 … … 2669 2649 ztmpd = dsm(ji,jj) 2670 2650 zh2 = ztmph * exp(-(gdepw_0(ji,jj,jk)-gdepw_0(ji,jj,i_int_bot(ji,jj)+1))/ztmpd) 2651 zh2 = MAX(zh2,0.001_wp) ! Extend tolerance a bit for stability reasons (to be explored) 2671 2652 zdiff = cush_max(gdepw_0(ji,jj,jk)-zwdw(ji,jj,jk), zh2 ) 2672 2653 zwdw(ji,jj,jk) = MAX(zwdw(ji,jj,jk), gdepw_0(ji,jj,jk) - zdiff)
Note: See TracChangeset
for help on using the changeset viewer.