- Timestamp:
- 2014-04-06T17:47:31+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_CNRS0_NOC1_LDF/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
r4306 r4617 25 25 USE zdf_oce 26 26 USE domvvl 27 USE div cur ! hor. divergence and curl (div & cur routines)27 USE divhor ! hor. divergence 28 28 USE sbcrnf, ONLY: h_rnf, nk_rnf ! River runoff 29 29 USE bdy_oce 30 #if defined key_obc31 USE obc_oce, ONLY: obctmsk32 #endif33 30 #if defined key_agrif 34 31 USE agrif_opa_update … … 43 40 PUBLIC trc_sub_ssh ! called by trc_stp to reset physics variables 44 41 45 !!* Module variables46 42 REAL(wp) :: r1_ndttrc ! 1 / nn_dttrc 47 43 REAL(wp) :: r1_ndttrcp1 ! 1 / (nn_dttrc+1) … … 50 46 # include "top_substitute.h90" 51 47 !!---------------------------------------------------------------------- 52 !! NEMO/TOP 3. 3 , NEMO Consortium (2010)48 !! NEMO/TOP 3.7 , NEMO Consortium (2014) 53 49 !! $Id: trcstp.F90 2528 2010-12-27 17:33:53Z rblod $ 54 50 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 94 90 tsn_tm (:,:,:,jp_sal) = tsn_tm (:,:,:,jp_sal) + tsn (:,:,:,jp_sal) * fse3t(:,:,:) 95 91 rhop_tm (:,:,:) = rhop_tm (:,:,:) + rhop (:,:,:) * fse3t(:,:,:) 96 avt_tm (:,:,:) = avt_tm (:,:,:) + avt (:,:,:) * fse3w(:,:,:)92 avt_tm (:,:,:) = avt_tm (:,:,:) + avt (:,:,:) 97 93 # if defined key_zdfddm 98 avs_tm (:,:,:) = avs_tm (:,:,:) + avs (:,:,:) * fse3w(:,:,:)94 avs_tm (:,:,:) = avs_tm (:,:,:) + avs (:,:,:) 99 95 # endif 100 96 #if defined key_ldfslp 101 wslpi_tm(:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:) * fse3w(:,:,:)102 wslpj_tm(:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:) * fse3w(:,:,:)103 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp (:,:,:) * fse3u(:,:,:)104 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) * fse3v(:,:,:)97 wslpi_tm(:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:) 98 wslpj_tm(:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:) 99 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp (:,:,:) 100 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) 105 101 #endif 106 102 # if defined key_trabbl … … 127 123 wndm_tm (:,:) = wndm_tm (:,:) + wndm (:,:) 128 124 ! 129 #if defined key_traldf_c3d 130 ahtt_tm (:,:,:) = ahtt_tm (:,:,:) + ahtt(:,:,:) * fse3t(:,:,:) 131 ahtu_tm (:,:,:) = ahtu_tm (:,:,:) + ahtu(:,:,:) * fse3u(:,:,:) 132 ahtv_tm (:,:,:) = ahtv_tm (:,:,:) + ahtv(:,:,:) * fse3v(:,:,:) 133 ahtw_tm (:,:,:) = ahtw_tm (:,:,:) + ahtw(:,:,:) * fse3w(:,:,:) 134 #elif defined key_traldf_c2d 135 ahtt_tm (:,:) = ahtt_tm (:,:) + ahtt(:,:) 136 ahtu_tm (:,:) = ahtu_tm (:,:) + ahtu(:,:) 137 ahtv_tm (:,:) = ahtv_tm (:,:) + ahtv(:,:) 138 ahtw_tm (:,:) = ahtw_tm (:,:) + ahtw(:,:) 139 #elif defined key_traldf_c1d 140 ahtt_tm (:) = ahtt_tm (:,:) + ahtt(:) 141 ahtu_tm (:) = ahtu_tm (:,:) + ahtu(:) 142 ahtv_tm (:) = ahtv_tm (:,:) + ahtv(:) 143 ahtw_tm (:) = ahtw_tm (:,:) + ahtw(:) 144 #else 145 ahtt_tm = ahtt_tm + ahtt 146 ahtu_tm = ahtu_tm + ahtu 147 ahtv_tm = ahtv_tm + ahtv 148 ahtw_tm = ahtw_tm + ahtw 149 #endif 150 #if defined key_traldf_eiv 151 # if defined key_traldf_c3d 152 aeiu_tm (:,:,:) = aeiu_tm (:,:,:) + aeiu(:,:,:) * fse3u(:,:,:) 153 aeiv_tm (:,:,:) = aeiv_tm (:,:,:) + aeiv(:,:,:) * fse3v(:,:,:) 154 aeiw_tm (:,:,:) = aeiw_tm (:,:,:) + aeiw(:,:,:) * fse3w(:,:,:) 155 # elif defined key_traldf_c2d 156 aeiu_tm (:,:) = aeiu_tm (:,:) + aeiu(:,:) 157 aeiv_tm (:,:) = aeiv_tm (:,:) + aeiv(:,:) 158 aeiw_tm (:,:) = aeiw_tm (:,:) + aeiw(:,:) 159 # elif defined key_traldf_c1d 160 aeiu_tm (:) = aeiu_tm (:,:) + aeiu(:) 161 aeiv_tm (:) = aeiv_tm (:,:) + aeiv(:) 162 aeiw_tm (:) = aeiw_tm (:,:) + aeiw(:) 163 # else 164 aeiu_tm = aeiu_tm + aeiu 165 aeiv_tm = aeiv_tm + aeiv 166 aeiw_tm = aeiw_tm + aeiw 167 # endif 168 #endif 125 ahtu_tm (:,:,:) = ahtu_tm (:,:,:) + ahtu(:,:,:) 126 ahtv_tm (:,:,:) = ahtv_tm (:,:,:) + ahtv(:,:,:) 127 IF( ln_ldfeiv ) THEN 128 aeiu_tm (:,:,:) = aeiu_tm (:,:,:) + aeiu(:,:,:) 129 aeiv_tm (:,:,:) = aeiv_tm (:,:,:) + aeiv(:,:,:) 130 ENDIF 169 131 170 132 ELSE ! It is time to substep … … 179 141 avs_temp (:,:,:) = avs (:,:,:) 180 142 # endif 181 #if defined key_ldfslp 182 wslpi_temp (:,:,:) = wslpi(:,:,:)183 wslpj_temp (:,:,:) = wslpj(:,:,:)184 uslp_temp (:,:,:) = uslp(:,:,:)185 vslp_temp (:,:,:) = vslp(:,:,:)186 #endif 143 IF( l_ldfslp ) THEN 144 uslp_temp (:,:,:) = uslp (:,:,:) 145 vslp_temp (:,:,:) = vslp (:,:,:) 146 wslpi_temp (:,:,:) = wslpi (:,:,:) 147 wslpj_temp (:,:,:) = wslpj (:,:,:) 148 ENDIF 187 149 # if defined key_trabbl 188 150 IF( nn_bbl_ldf == 1 ) THEN … … 214 176 qsr_temp (:,:) = qsr (:,:) 215 177 wndm_temp (:,:) = wndm (:,:) 216 #if defined key_traldf_c3d 178 ! 217 179 ahtu_temp (:,:,:) = ahtu (:,:,:) 218 180 ahtv_temp (:,:,:) = ahtv (:,:,:) 219 ahtw_temp (:,:,:) = ahtw (:,:,:) 220 ahtt_temp (:,:,:) = ahtt (:,:,:) 221 #elif defined key_traldf_c2d 222 ahtu_temp (:,:) = ahtu (:,:) 223 ahtv_temp (:,:) = ahtv (:,:) 224 ahtw_temp (:,:) = ahtw (:,:) 225 ahtt_temp (:,:) = ahtt (:,:) 226 #elif defined key_traldf_c1d 227 ahtu_temp (:) = ahtu (:) 228 ahtv_temp (:) = ahtv (:) 229 ahtw_temp (:) = ahtw (:) 230 ahtt_temp (:) = ahtt (:) 231 #else 232 ahtu_temp = ahtu 233 ahtv_temp = ahtv 234 ahtw_temp = ahtw 235 ahtt_temp = ahtt 236 #endif 237 238 #if defined key_traldf_eiv 239 # if defined key_traldf_c3d 240 aeiu_temp (:,:,:) = aeiu(:,:,:) 241 aeiv_temp (:,:,:) = aeiv(:,:,:) 242 aeiw_temp (:,:,:) = aeiw(:,:,:) 243 # elif defined key_traldf_c2d 244 aeiu_temp (:,:) = aeiu(:,:) 245 aeiv_temp (:,:) = aeiv(:,:) 246 aeiw_temp (:,:) = aeiw(:,:) 247 # elif defined key_traldf_c1d 248 aeiu_temp (:) = aeiu(:) 249 aeiv_temp (:) = aeiv(:) 250 aeiw_temp (:) = aeiw(:) 251 # else 252 aeiu_temp = aeiu 253 aeiv_temp = aeiv 254 aeiw_temp = aeiw 255 # endif 256 #endif 181 IF( ln_ldfeiv ) THEN 182 aeiu_temp (:,:,:) = aeiu(:,:,:) 183 aeiv_temp (:,:,:) = aeiv(:,:,:) 184 ENDIF 257 185 ! ! Variables reset in trc_sub_ssh 258 rotn_temp (:,:,:) = rotn (:,:,:)259 186 hdivn_temp (:,:,:) = hdivn (:,:,:) 260 rotb_temp (:,:,:) = rotb (:,:,:)261 hdivb_temp (:,:,:) = hdivb (:,:,:)262 187 hu_temp (:,:) = hu (:,:) 263 188 hv_temp (:,:) = hv (:,:) … … 287 212 tsn_tm (:,:,:,jp_sal) = tsn_tm (:,:,:,jp_sal) + tsn (:,:,:,jp_sal) * e3t_temp(:,:,:) 288 213 rhop_tm (:,:,:) = rhop_tm (:,:,:) + rhop (:,:,:) * e3t_temp(:,:,:) 289 avt_tm (:,:,:) = avt_tm (:,:,:) + avt (:,:,:) * e3w_temp(:,:,:)214 avt_tm (:,:,:) = avt_tm (:,:,:) + avt (:,:,:) 290 215 # if defined key_zdfddm 291 avs_tm (:,:,:) = avs_tm (:,:,:) + avs (:,:,:) * e3w_temp(:,:,:)292 # endif 293 #if defined key_ldfslp 294 wslpi_tm (:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:) * e3w_temp(:,:,:)295 wslpj_tm (:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:) * e3w_temp(:,:,:)296 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp (:,:,:) * e3u_temp(:,:,:)297 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) * e3v_temp(:,:,:)298 #endif 216 avs_tm (:,:,:) = avs_tm (:,:,:) + avs (:,:,:) 217 # endif 218 IF( l_ldfslp ) THEN 219 wslpi_tm (:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:) 220 wslpj_tm (:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:) 221 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp (:,:,:) 222 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) 223 ENDIF 299 224 # if defined key_trabbl 300 225 IF( nn_bbl_ldf == 1 ) THEN … … 377 302 tsn (ji,jj,jk,jp_sal) = tsn_tm (ji,jj,jk,jp_sal) * z1_ne3t 378 303 rhop (ji,jj,jk) = rhop_tm (ji,jj,jk) * z1_ne3t 379 avt (ji,jj,jk) = avt_tm (ji,jj,jk) * z1_ne3w304 avt (ji,jj,jk) = avt_tm (ji,jj,jk) * r1_ndttrcp1 380 305 # if defined key_zdfddm 381 avs (ji,jj,jk) = avs_tm (ji,jj,jk) * z1_ne3w 382 # endif 383 #if defined key_ldfslp 384 wslpi(ji,jj,jk) = wslpi_tm(ji,jj,jk) * z1_ne3w 385 wslpj(ji,jj,jk) = wslpj_tm(ji,jj,jk) * z1_ne3w 386 uslp (ji,jj,jk) = uslp_tm (ji,jj,jk) * z1_ne3u 387 vslp (ji,jj,jk) = vslp_tm (ji,jj,jk) * z1_ne3v 388 #endif 389 ENDDO 390 ENDDO 391 ENDDO 392 393 #if defined key_traldf_c3d 394 ahtt_tm (:,:,:) = ahtt_tm (:,:,:) + ahtt(:,:,:) * e3t_temp(:,:,:) 395 ahtu_tm (:,:,:) = ahtu_tm (:,:,:) + ahtu(:,:,:) * e3u_temp(:,:,:) 396 ahtv_tm (:,:,:) = ahtv_tm (:,:,:) + ahtv(:,:,:) * e3v_temp(:,:,:) 397 ahtw_tm (:,:,:) = ahtw_tm (:,:,:) + ahtw(:,:,:) * e3w_temp(:,:,:) 398 ! 399 ahtt (:,:,:) = ahtt_tm (:,:,:) * r1_ndttrcp1 / fse3t(:,:,:) 400 ahtu (:,:,:) = ahtu_tm (:,:,:) * r1_ndttrcp1 / fse3u(:,:,:) 401 ahtv (:,:,:) = ahtv_tm (:,:,:) * r1_ndttrcp1 / fse3v(:,:,:) 402 ahtw (:,:,:) = ahtw_tm (:,:,:) * r1_ndttrcp1 / fse3w(:,:,:) 403 #elif defined key_traldf_c2d 404 ahtt_tm (:,:) = ahtt_tm (:,:) + ahtt(:,:) 405 ahtu_tm (:,:) = ahtu_tm (:,:) + ahtu(:,:) 406 ahtv_tm (:,:) = ahtv_tm (:,:) + ahtv(:,:) 407 ahtw_tm (:,:) = ahtw_tm (:,:) + ahtw(:,:) 408 ! 409 ahtt (:,:) = ahtt_tm (:,:) * r1_ndttrcp1 410 ahtu (:,:) = ahtu_tm (:,:) * r1_ndttrcp1 411 ahtv (:,:) = ahtv_tm (:,:) * r1_ndttrcp1 412 ahtw (:,:) = ahtw_tm (:,:) * r1_ndttrcp1 413 #elif defined key_traldf_c1d 414 ahtt_tm (:) = ahtt_tm (:,:) + ahtt(:) 415 ahtu_tm (:) = ahtu_tm (:,:) + ahtu(:) 416 ahtv_tm (:) = ahtv_tm (:,:) + ahtv(:) 417 ahtw_tm (:) = ahtw_tm (:,:) + ahtw(:) 418 ! 419 ahtt (:) = ahtt_tm (:) * r1_ndttrcp1 420 ahtu (:) = ahtu_tm (:) * r1_ndttrcp1 421 ahtv (:) = ahtv_tm (:) * r1_ndttrcp1 422 ahtw (:) = ahtw_tm (:) * r1_ndttrcp1 423 #else 424 ahtt_tm = ahtt_tm + ahtt 425 ahtu_tm = ahtu_tm + ahtu 426 ahtv_tm = ahtv_tm + ahtv 427 ahtw_tm = ahtw_tm + ahtw 428 ! 429 ahtt = ahtt_tm * r1_ndttrcp1 430 ahtu = ahtu_tm * r1_ndttrcp1 431 ahtv = ahtv_tm * r1_ndttrcp1 432 ahtw = ahtw_tm * r1_ndttrcp1 433 #endif 434 435 #if defined key_traldf_eiv 436 # if defined key_traldf_c3d 437 aeiu_tm (:,:,:) = aeiu_tm (:,:,:) + aeiu(:,:,:) * e3u_temp(:,:,:) 438 aeiv_tm (:,:,:) = aeiv_tm (:,:,:) + aeiv(:,:,:) * e3v_temp(:,:,:) 439 aeiw_tm (:,:,:) = aeiw_tm (:,:,:) + aeiw(:,:,:) * e3w_temp(:,:,:) 440 ! 441 aeiu (:,:,:) = aeiu_tm (:,:,:) * r1_ndttrcp1 / fse3u(:,:,:) 442 aeiv (:,:,:) = aeiv_tm (:,:,:) * r1_ndttrcp1 / fse3v(:,:,:) 443 aeiw (:,:,:) = aeiw_tm (:,:,:) * r1_ndttrcp1 / fse3w(:,:,:) 444 # elif defined key_traldf_c2d 445 aeiu_tm (:,:) = aeiu_tm (:,:) + aeiu(:,:) 446 aeiv_tm (:,:) = aeiv_tm (:,:) + aeiv(:,:) 447 aeiw_tm (:,:) = aeiw_tm (:,:) + aeiw(:,:) 448 ! 449 aeiu (:,:) = aeiu_tm (:,:) * r1_ndttrcp1 450 aeiv (:,:) = aeiv_tm (:,:) * r1_ndttrcp1 451 aeiw (:,:) = aeiw_tm (:,:) * r1_ndttrcp1 452 # elif defined key_traldf_c1d 453 aeiu_tm (:) = aeiu_tm (:,:) + aeiu(:) 454 aeiv_tm (:) = aeiv_tm (:,:) + aeiv(:) 455 aeiw_tm (:) = aeiw_tm (:,:) + aeiw(:) 456 ! 457 aeiu (:) = aeiu_tm (:) * r1_ndttrcp1 458 aeiv (:) = aeiv_tm (:) * r1_ndttrcp1 459 aeiw (:) = aeiw_tm (:) * r1_ndttrcp1 460 # else 461 aeiu_tm = aeiu_tm + aeiu 462 aeiv_tm = aeiv_tm + aeiv 463 aeiw_tm = aeiw_tm + aeiw 464 ! 465 aeiu = aeiu_tm * r1_ndttrcp1 466 aeiv = aeiv_tm * r1_ndttrcp1 467 aeiw = aeiw_tm * r1_ndttrcp1 468 # endif 469 #endif 470 306 avs (ji,jj,jk) = avs_tm (ji,jj,jk) * r1_ndttrcp1 307 # endif 308 END DO 309 END DO 310 END DO 311 IF( l_ldfslp ) THEN 312 wslpi(:,:,:) = wslpi_tm(:,:,:) * r1_ndttrcp1 313 wslpj(:,:,:) = wslpj_tm(:,:,:) * r1_ndttrcp1 314 uslp (:,:,:) = uslp_tm (:,:,:) * r1_ndttrcp1 315 vslp (:,:,:) = vslp_tm (:,:,:) * r1_ndttrcp1 316 ENDIF 317 ! 318 ahtu_tm(:,:,:) = ahtu_tm(:,:,:) + ahtu(:,:,:) 319 ahtv_tm(:,:,:) = ahtv_tm(:,:,:) + ahtv(:,:,:) 320 ! 321 ahtu (:,:,:) = ahtu_tm(:,:,:) * r1_ndttrcp1 322 ahtv (:,:,:) = ahtv_tm(:,:,:) * r1_ndttrcp1 323 IF( ln_ldfeiv ) THEN 324 aeiu_tm(:,:,:) = aeiu_tm(:,:,:) + aeiu(:,:,:) 325 aeiv_tm(:,:,:) = aeiv_tm(:,:,:) + aeiv(:,:,:) 326 ! 327 aeiu (:,:,:) = aeiu_tm(:,:,:) * r1_ndttrcp1 328 aeiv (:,:,:) = aeiv_tm(:,:,:) * r1_ndttrcp1 329 ENDIF 330 331 !!gm All those lbc_lnk are useless since the averaging is done over full arrays ! 471 332 CALL lbc_lnk( un (:,:,:) , 'U',-1. ) 472 333 CALL lbc_lnk( vn (:,:,:) , 'V',-1. ) … … 478 339 CALL lbc_lnk( avs (:,:,:) , 'W', 1. ) 479 340 # endif 480 #if defined key_ldfslp 481 CALL lbc_lnk( uslp (:,:,:) , 'U',-1. )482 CALL lbc_lnk( vslp (:,:,:) , 'V',-1. )483 CALL lbc_lnk( wslpi (:,:,:) , 'W',-1. )484 CALL lbc_lnk( wslpj (:,:,:) , 'W',-1. )485 #endif 341 IF( l_ldfslp ) THEN 342 CALL lbc_lnk( uslp (:,:,:) , 'U',-1. ) 343 CALL lbc_lnk( vslp (:,:,:) , 'V',-1. ) 344 CALL lbc_lnk( wslpi (:,:,:) , 'W',-1. ) 345 CALL lbc_lnk( wslpj (:,:,:) , 'W',-1. ) 346 ENDIF 486 347 CALL lbc_lnk( sshn (:,:) , 'T', 1. ) 487 348 !!Z~ CALL lbc_lnk( sshu_n(:,:) , 'U', 1. ) … … 513 374 ENDIF 514 375 # endif 515 #if defined key_traldf_c3d516 CALL lbc_lnk( ahtt (:,:,:) , 'T', 1. )517 376 CALL lbc_lnk( ahtu (:,:,:) , 'U', 1. ) 518 377 CALL lbc_lnk( ahtv (:,:,:) , 'V', 1. ) 519 CALL lbc_lnk( ahtw (:,:,:) , 'W', 1. ) 520 #elif defined key_traldf_c2d 521 CALL lbc_lnk( ahtt (:,:) , 'T', 1. ) 522 CALL lbc_lnk( ahtu (:,:) , 'U', 1. ) 523 CALL lbc_lnk( ahtv (:,:) , 'V', 1. ) 524 CALL lbc_lnk( ahtw (:,:) , 'W', 1. ) 525 #endif 526 #if defined key_traldf_eiv 527 #if defined key_traldf_c3d 528 CALL lbc_lnk( aeiu (:,:,:) , 'U', 1. ) 529 CALL lbc_lnk( aeiv (:,:,:) , 'V', 1. ) 530 CALL lbc_lnk( aeiw (:,:,:) , 'W', 1. ) 531 #elif defined key_traldf_c2d 532 CALL lbc_lnk( aeiu (:,:) , 'U', 1. ) 533 CALL lbc_lnk( aeiv (:,:) , 'V', 1. ) 534 CALL lbc_lnk( aeiw (:,:) , 'W', 1. ) 535 #endif 536 #endif 378 IF( ln_ldfeiv ) THEN 379 CALL lbc_lnk( aeiu (:,:,:) , 'U', 1. ) 380 CALL lbc_lnk( aeiv (:,:,:) , 'V', 1. ) 381 ENDIF 537 382 ! 538 383 CALL trc_sub_ssh( kt ) ! after ssh & vertical velocity 539 384 ! 540 385 CALL lbc_lnk( wn (:,:,:) , 'W',-1. ) 541 CALL lbc_lnk( rotn (:,:,:) , 'F', 1. )542 386 CALL lbc_lnk( hdivn (:,:,:) , 'T', 1. ) 543 CALL lbc_lnk( rotb (:,:,:) , 'F', 1. )544 CALL lbc_lnk( hdivb (:,:,:) , 'T', 1. )545 387 CALL lbc_lnk( hu (:,:) , 'U', 1. ) 546 388 CALL lbc_lnk( hv (:,:) , 'V', 1. ) … … 553 395 END SUBROUTINE trc_sub_stp 554 396 397 555 398 SUBROUTINE trc_sub_ini 556 399 !!------------------------------------------------------------------- 557 400 !! *** ROUTINE trc_sub_ini *** 558 401 !! 559 !! ** Purpose : Initialize variables needed for sub-stepping passive tracers402 !! ** Purpose : Initialize variables needed for sub-stepping passive tracers 560 403 !! 561 !! ** Method : 562 !! Compute the averages for sub-stepping 404 !! ** Method : Compute the averages for sub-stepping 563 405 !!------------------------------------------------------------------- 564 406 INTEGER :: ierr … … 580 422 tsn_tm (:,:,:,jp_sal) = tsn (:,:,:,jp_sal) * fse3t(:,:,:) 581 423 rhop_tm (:,:,:) = rhop (:,:,:) * fse3t(:,:,:) 582 avt_tm (:,:,:) = avt (:,:,:) * fse3w(:,:,:)424 avt_tm (:,:,:) = avt (:,:,:) 583 425 # if defined key_zdfddm 584 avs_tm (:,:,:) = avs (:,:,:) * fse3w(:,:,:)585 # endif 586 #if defined key_ldfslp 587 wslpi_tm(:,:,:) = wslpi(:,:,:) * fse3w(:,:,:)588 wslpj_tm(:,:,:) = wslpj(:,:,:) * fse3w(:,:,:)589 uslp_tm (:,:,:) = uslp (:,:,:) * fse3u(:,:,:)590 vslp_tm (:,:,:) = vslp (:,:,:) * fse3v(:,:,:)591 #endif 426 avs_tm (:,:,:) = avs (:,:,:) 427 # endif 428 IF( l_ldfslp ) THEN 429 wslpi_tm(:,:,:) = wslpi(:,:,:) 430 wslpj_tm(:,:,:) = wslpj(:,:,:) 431 uslp_tm (:,:,:) = uslp (:,:,:) 432 vslp_tm (:,:,:) = vslp (:,:,:) 433 ENDIF 592 434 sshn_tm (:,:) = sshn (:,:) 593 435 !!Z~ sshu_n_tm(:,:) = sshu_n(:,:) … … 614 456 # endif 615 457 ! 616 #if defined key_traldf_c3d 617 ahtt_tm(:,:,:) = ahtt(:,:,:) * fse3t(:,:,:) 618 ahtu_tm(:,:,:) = ahtu(:,:,:) * fse3u(:,:,:) 619 ahtv_tm(:,:,:) = ahtv(:,:,:) * fse3v(:,:,:) 620 ahtw_tm(:,:,:) = ahtw(:,:,:) * fse3w(:,:,:) 621 #elif defined key_traldf_c2d 622 ahtt_tm(:,:) = ahtt(:,:) 623 ahtu_tm(:,:) = ahtu(:,:) 624 ahtv_tm(:,:) = ahtv(:,:) 625 ahtw_tm(:,:) = ahtw(:,:) 626 #elif defined key_traldf_c1d 627 ahtt_tm(:) = ahtt(:) 628 ahtu_tm(:) = ahtu(:) 629 ahtv_tm(:) = ahtv(:) 630 ahtw_tm(:) = ahtw(:) 631 #else 632 ahtt_tm = ahtt 633 ahtu_tm = ahtu 634 ahtv_tm = ahtv 635 ahtw_tm = ahtw 636 #endif 637 ! 638 #if defined key_traldf_eiv 639 # if defined key_traldf_c3d 640 aeiu_tm(:,:,:) = aeiu(:,:,:) * fse3u(:,:,:) 641 aeiv_tm(:,:,:) = aeiv(:,:,:) * fse3v(:,:,:) 642 aeiw_tm(:,:,:) = aeiw(:,:,:) * fse3w(:,:,:) 643 # elif defined key_traldf_c2d 644 aeiu_tm(:,:) = aeiu(:,:) 645 aeiv_tm(:,:) = aeiv(:,:) 646 aeiw_tm(:,:) = aeiw(:,:) 647 # elif defined key_traldf_c1d 648 aeiu_tm(:) = aeiu(:) 649 aeiv_tm(:) = aeiv(:) 650 aeiw_tm(:) = aeiw(:) 651 # else 652 aeiu_tm = aeiu 653 aeiv_tm = aeiv 654 aeiw_tm = aeiw 655 # endif 656 #endif 458 ahtu_tm(:,:,:) = ahtu(:,:,:) 459 ahtv_tm(:,:,:) = ahtv(:,:,:) 460 ! 461 IF( ln_ldfeiv ) THEN 462 aeiu_tm(:,:,:) = aeiu(:,:,:) 463 aeiv_tm(:,:,:) = aeiv(:,:,:) 464 ENDIF 657 465 ! 658 466 IF( nn_timing == 1 ) CALL timing_stop('trc_sub_ini') 659 467 ! 660 468 END SUBROUTINE trc_sub_ini 469 661 470 662 471 SUBROUTINE trc_sub_reset( kt ) … … 685 494 avs (:,:,:) = avs_temp (:,:,:) 686 495 # endif 687 #if defined key_ldfslp 688 wslpi (:,:,:) = wslpi_temp (:,:,:)689 wslpj (:,:,:) = wslpj_temp (:,:,:)690 uslp (:,:,:) = uslp_temp (:,:,:)691 vslp (:,:,:) = vslp_temp (:,:,:)692 #endif 496 IF( l_ldfslp ) THEN 497 wslpi (:,:,:) = wslpi_temp (:,:,:) 498 wslpj (:,:,:) = wslpj_temp (:,:,:) 499 uslp (:,:,:) = uslp_temp (:,:,:) 500 vslp (:,:,:) = vslp_temp (:,:,:) 501 ENDIF 693 502 sshn (:,:) = sshn_temp (:,:) 694 503 sshb (:,:) = sshb_temp (:,:) … … 722 531 # endif 723 532 ! 724 #if defined key_traldf_c3d725 533 ahtu (:,:,:) = ahtu_temp (:,:,:) 726 534 ahtv (:,:,:) = ahtv_temp (:,:,:) 727 ahtw (:,:,:) = ahtw_temp (:,:,:) 728 ahtt (:,:,:) = ahtt_temp (:,:,:) 729 #elif defined key_traldf_c2d 730 ahtu (:,:) = ahtu_temp (:,:) 731 ahtv (:,:) = ahtv_temp (:,:) 732 ahtw (:,:) = ahtw_temp (:,:) 733 ahtt (:,:) = ahtt_temp (:,:) 734 #elif defined key_traldf_c1d 735 ahtu (:) = ahtu_temp (:) 736 ahtv (:) = ahtv_temp (:) 737 ahtw (:) = ahtw_temp (:) 738 ahtt (:) = ahtt_temp (:) 739 #else 740 ahtu = ahtu_temp 741 ahtv = ahtv_temp 742 ahtw = ahtw_temp 743 ahtt = ahtt_temp 744 #endif 745 ! 746 #if defined key_traldf_eiv 747 #if defined key_traldf_c3d 748 aeiu (:,:,:) = aeiu_temp(:,:,:) 749 aeiv (:,:,:) = aeiv_temp(:,:,:) 750 aeiw (:,:,:) = aeiw_temp(:,:,:) 751 #elif defined key_traldf_c2d 752 aeiu (:,:) = aeiu_temp(:,:) 753 aeiv (:,:) = aeiv_temp(:,:) 754 aeiw (:,:) = aeiw_temp(:,:) 755 #elif defined key_traldf_c1d 756 aeiu (:) = aeiu_temp(:) 757 aeiv (:) = aeiv_temp(:) 758 aeiw (:) = aeiw_temp(:) 759 #else 760 aeiu = aeiu_temp 761 aeiv = aeiv_temp 762 aeiw = aeiw_temp 763 #endif 764 #endif 535 ! 536 IF( ln_ldfeiv ) THEN 537 aeiu (:,:,:) = aeiu_temp(:,:,:) 538 aeiv (:,:,:) = aeiv_temp(:,:,:) 539 ENDIF 765 540 hdivn (:,:,:) = hdivn_temp (:,:,:) 766 rotn (:,:,:) = rotn_temp (:,:,:)767 hdivb (:,:,:) = hdivb_temp (:,:,:)768 rotb (:,:,:) = rotb_temp (:,:,:)769 541 hu (:,:) = hu_temp (:,:) 770 542 hv (:,:) = hv_temp (:,:) … … 773 545 ! 774 546 DO jk = 1, jpk 775 fse3t(:,:,jk) = e3t_temp(:,:,jk)776 fse3u(:,:,jk) = e3u_temp(:,:,jk)777 fse3v(:,:,jk) = e3v_temp(:,:,jk)778 fse3w(:,:,jk) = e3w_temp(:,:,jk)547 fse3t(:,:,jk) = e3t_temp(:,:,jk) 548 fse3u(:,:,jk) = e3u_temp(:,:,jk) 549 fse3v(:,:,jk) = e3v_temp(:,:,jk) 550 fse3w(:,:,jk) = e3w_temp(:,:,jk) 779 551 END DO 780 552 ! !------------------------------! 781 553 IF( lk_vvl ) THEN ! Update Now Vertical coord. ! (only in vvl case) 782 ! 554 ! !------------------------------! 783 555 DO jk = 1, jpkm1 784 556 fsdept(:,:,jk) = fsdept_n(:,:,jk) ! now local depths stored in fsdep. arrays … … 803 575 tsn_tm (:,:,:,jp_sal) = tsn (:,:,:,jp_sal) * fse3t(:,:,:) 804 576 rhop_tm (:,:,:) = rhop (:,:,:) * fse3t(:,:,:) 805 avt_tm (:,:,:) = avt (:,:,:) * fse3w(:,:,:)577 avt_tm (:,:,:) = avt (:,:,:) 806 578 # if defined key_zdfddm 807 avs_tm (:,:,:) = avs (:,:,:) * fse3w(:,:,:)808 # endif 809 #if defined key_ldfslp 810 wslpi_tm(:,:,:) = wslpi(:,:,:) * fse3w(:,:,:)811 wslpj_tm(:,:,:) = wslpj(:,:,:) * fse3w(:,:,:)812 uslp_tm (:,:,:) = uslp (:,:,:) * fse3u(:,:,:)813 vslp_tm (:,:,:) = vslp (:,:,:) * fse3v(:,:,:)814 #endif 579 avs_tm (:,:,:) = avs (:,:,:) 580 # endif 581 IF( l_ldfslp ) THEN 582 wslpi_tm(:,:,:) = wslpi(:,:,:) 583 wslpj_tm(:,:,:) = wslpj(:,:,:) 584 uslp_tm (:,:,:) = uslp (:,:,:) 585 vslp_tm (:,:,:) = vslp (:,:,:) 586 ENDIF 815 587 ! 816 588 sshb_hold (:,:) = sshn (:,:) … … 840 612 # endif 841 613 ! 842 #if defined key_traldf_c3d843 614 DO jk = 1, jpkm1 844 ahtt_tm(:,:,jk) = ahtt(:,:,jk) * fse3t(:,:,jk) 845 ahtu_tm(:,:,jk) = ahtu(:,:,jk) * fse3u(:,:,jk) 846 ahtv_tm(:,:,jk) = ahtv(:,:,jk) * fse3v(:,:,jk) 847 ahtw_tm(:,:,jk) = ahtw(:,:,jk) * fse3w(:,:,jk) 615 ahtu_tm(:,:,jk) = ahtu(:,:,jk) 616 ahtv_tm(:,:,jk) = ahtv(:,:,jk) 617 IF( ln_ldfeiv ) THEN 618 aeiu_tm(:,:,jk) = aeiu(:,:,jk) * fse3u(:,:,jk) 619 aeiv_tm(:,:,jk) = aeiv(:,:,jk) * fse3v(:,:,jk) 620 ENDIF 848 621 END DO 849 #elif defined key_traldf_c2d850 ahtt_tm(:,:) = ahtt(:,:)851 ahtu_tm(:,:) = ahtu(:,:)852 ahtv_tm(:,:) = ahtv(:,:)853 ahtw_tm(:,:) = ahtw(:,:)854 #elif defined key_traldf_c1d855 ahtt_tm(:) = ahtt(:)856 ahtu_tm(:) = ahtu(:)857 ahtv_tm(:) = ahtv(:)858 ahtw_tm(:) = ahtw(:)859 #else860 ahtt_tm = ahtt861 ahtu_tm = ahtu862 ahtv_tm = ahtv863 ahtw_tm = ahtw864 #endif865 !866 #if defined key_traldf_eiv867 # if defined key_traldf_c3d868 DO jk = 1, jpk869 aeiu_tm(:,:,jk) = aeiu(:,:,jk) * fse3u(:,:,jk)870 aeiv_tm(:,:,jk) = aeiv(:,:,jk) * fse3v(:,:,jk)871 aeiw_tm(:,:,jk) = aeiw(:,:,jk) * fse3w(:,:,jk)872 END DO873 # elif defined key_traldf_c2d874 aeiu_tm(:,:) = aeiu(:,:)875 aeiv_tm(:,:) = aeiv(:,:)876 aeiw_tm(:,:) = aeiw(:,:)877 # elif defined key_traldf_c1d878 aeiu_tm(:) = aeiu(:)879 aeiv_tm(:) = aeiv(:)880 aeiw_tm(:) = aeiw(:)881 # else882 aeiu_tm = aeiu883 aeiv_tm = aeiv884 aeiw_tm = aeiw885 # endif886 #endif887 622 ! 888 623 IF( nn_timing == 1 ) CALL timing_stop('trc_sub_reset') … … 958 693 ENDIF 959 694 ! 960 CALL div_cur( kt ) ! Horizontal divergence & Relative vorticity 695 !!gm BUG here the recomputed divergence will includes the wrong river runoff..... 696 CALL div_hor( kt ) ! Horizontal divergence 961 697 ! 962 698 z2dt = 2._wp * rdt ! set time step size (Euler/Leapfrog) … … 979 715 CALL agrif_ssh( kt ) 980 716 #endif 981 #if defined key_obc982 IF( Agrif_Root() ) THEN983 ssha(:,:) = ssha(:,:) * obctmsk(:,:)984 CALL lbc_lnk( ssha, 'T', 1. ) ! absolutly compulsory !! (jmm)985 ENDIF986 #endif987 717 #if defined key_bdy 988 718 ssha(:,:) = ssha(:,:) * bdytmask(:,:) 989 719 CALL lbc_lnk( ssha, 'T', 1. ) 990 720 #endif 991 721 ! 992 722 ! ! Sea Surface Height at u-,v- and f-points (vvl case only) 993 723 !!Z~ IF( lk_vvl ) THEN ! (required only in key_vvl case) 994 724 !!Z~ DO jj = 1, jpjm1 995 725 !!Z~ DO ji = 1, jpim1 ! NO Vector Opt. 996 !!Z~ sshu_a(ji,jj) = 0.5 * umask(ji,jj,1) / ( e1u(ji ,jj) * e2u(ji ,jj) ) & 997 !!Z~ & * ( e1t(ji ,jj) * e2t(ji ,jj) * ssha(ji ,jj) & 998 !!Z~ & + e1t(ji+1,jj) * e2t(ji+1,jj) * ssha(ji+1,jj) ) 999 !!Z~ sshv_a(ji,jj) = 0.5 * vmask(ji,jj,1) / ( e1v(ji,jj ) * e2v(ji,jj ) ) & 1000 !!Z~ & * ( e1t(ji,jj ) * e2t(ji,jj ) * ssha(ji,jj ) & 1001 !!Z~ & + e1t(ji,jj+1) * e2t(ji,jj+1) * ssha(ji,jj+1) ) 726 !!Z~ sshu_a(ji,jj) = 0.5 * umask(ji,jj,1) * r1_e1e2u(ji ,jj) * ( e1e2t(ji ,jj) * ssha(ji ,jj) & 727 !!Z~ & + e1e2t(ji+1,jj) * ssha(ji+1,jj) ) 728 !!Z~ sshv_a(ji,jj) = 0.5 * vmask(ji,jj,1) * r1_e1e2v(ji,jj ) * ( e1e2t(ji,jj ) * ssha(ji,jj ) & 729 !!Z~ & + e1e2t(ji,jj+1) * ssha(ji,jj+1) ) 1002 730 !!Z~ END DO 1003 731 !!Z~ END DO 1004 732 !!Z~ CALL lbc_lnk( sshu_a, 'U', 1. ) ; CALL lbc_lnk( sshv_a, 'V', 1. ) ! Boundaries conditions 1005 733 !!Z~ ENDIF 1006 1007 734 ! 1008 735 ! !------------------------------! 1009 736 ! ! Now Vertical Velocity ! … … 1019 746 #endif 1020 747 END DO 1021 1022 748 ! 1023 749 CALL wrk_dealloc( jpi, jpj, zhdiv ) … … 1045 771 & e3t_temp(jpi,jpj,jpk) , e3u_temp(jpi,jpj,jpk), & 1046 772 & e3v_temp(jpi,jpj,jpk) , e3w_temp(jpi,jpj,jpk), & 1047 #if defined key_ldfslp 773 !!gm here define these arrays only if l_ldfslp = True 1048 774 & wslpi_temp(jpi,jpj,jpk) , wslpj_temp(jpi,jpj,jpk), & 1049 775 & uslp_temp(jpi,jpj,jpk) , vslp_temp(jpi,jpj,jpk), & 1050 #endif 776 & wslpi_tm(jpi,jpj,jpk) , wslpj_tm(jpi,jpj,jpk), & 777 & uslp_tm(jpi,jpj,jpk) , vslp_tm(jpi,jpj,jpk), & 778 !!gm 1051 779 #if defined key_trabbl 1052 780 & ahu_bbl_temp(jpi,jpj) , ahv_bbl_temp(jpi,jpj), & 1053 781 & utr_bbl_temp(jpi,jpj) , vtr_bbl_temp(jpi,jpj), & 782 & ahu_bbl_tm(jpi,jpj) , ahv_bbl_tm(jpi,jpj), & 783 & utr_bbl_tm(jpi,jpj) , vtr_bbl_tm(jpi,jpj), & 1054 784 #endif 1055 785 & rnf_temp(jpi,jpj) , h_rnf_temp(jpi,jpj) , & … … 1062 792 & avs_tm(jpi,jpj,jpk) , avs_temp(jpi,jpj,jpk) , & 1063 793 # endif 1064 #if defined key_traldf_c3d 1065 & ahtt_tm(jpi,jpj,jpk) , ahtt_temp(jpi,jpj,jpk), & 794 !!gm here define these arrays only if l_ldftra_time = True 1066 795 & ahtu_tm(jpi,jpj,jpk) , ahtu_temp(jpi,jpj,jpk), & 1067 796 & ahtv_tm(jpi,jpj,jpk) , ahtv_temp(jpi,jpj,jpk), & 1068 & ahtw_tm(jpi,jpj,jpk) , ahtw_temp(jpi,jpj,jpk), & 1069 #elif defined key_traldf_c2d 1070 & ahtt_tm(jpi,jpj) , ahtt_temp(jpi,jpj), & 1071 & ahtu_tm(jpi,jpj) , ahtu_temp(jpi,jpj), & 1072 & ahtv_tm(jpi,jpj) , ahtv_temp(jpi,jpj), & 1073 & ahtw_tm(jpi,jpj) , ahtw_temp(jpi,jpj), & 1074 #elif defined key_traldf_c1d 1075 & ahtt_tm(jpk) , ahtt_temp(jpk), & 1076 & ahtu_tm(jpk) , ahtu_temp(jpk), & 1077 & ahtv_tm(jpk) , ahtv_temp(jpk), & 1078 & ahtw_tm(jpk) , ahtw_temp(jpk), & 1079 #endif 1080 #if defined key_traldf_eiv 1081 # if defined key_traldf_c3d 797 !!gm here define these arrays only if l_ldfeiv_time = True 1082 798 & aeiu_tm(jpi,jpj,jpk) , aeiu_temp(jpi,jpj,jpk), & 1083 799 & aeiv_tm(jpi,jpj,jpk) , aeiv_temp(jpi,jpj,jpk), & 1084 & aeiw_tm(jpi,jpj,jpk) , aeiw_temp(jpi,jpj,jpk), & 1085 # elif defined key_traldf_c2d 1086 & aeiu_tm(jpi,jpj) , aeiu_temp(jpi,jpj), & 1087 & aeiv_tm(jpi,jpj) , aeiv_temp(jpi,jpj), & 1088 & aeiw_tm(jpi,jpj) , aeiw_temp(jpi,jpj), & 1089 # elif defined key_traldf_c1d 1090 & aeiu_tm(jpk) , aeiu_temp(jpk), & 1091 & aeiv_tm(jpk) , aeiv_temp(jpk), & 1092 & aeiw_tm(jpk) , aeiw_temp(jpk), & 1093 # endif 1094 # endif 1095 & hdivn_temp(jpi,jpj,jpk) , hdivb_temp(jpi,jpj,jpk), & 1096 & rotn_temp(jpi,jpj,jpk) , rotb_temp(jpi,jpj,jpk), & 800 !!gm end 801 & hdivn_temp(jpi,jpj,jpk) , & 1097 802 & hu_temp(jpi,jpj) , hv_temp(jpi,jpj), & 1098 803 & hur_temp(jpi,jpj) , hvr_temp(jpi,jpj), & … … 1106 811 & emp_b_hold(jpi,jpj) , & 1107 812 & hmld_tm(jpi,jpj) , qsr_tm(jpi,jpj) , & 1108 #if defined key_ldfslp1109 & wslpi_tm(jpi,jpj,jpk) , wslpj_tm(jpi,jpj,jpk), &1110 & uslp_tm(jpi,jpj,jpk) , vslp_tm(jpi,jpj,jpk), &1111 #endif1112 #if defined key_trabbl1113 & ahu_bbl_tm(jpi,jpj) , ahv_bbl_tm(jpi,jpj), &1114 & utr_bbl_tm(jpi,jpj) , vtr_bbl_tm(jpi,jpj), &1115 #endif1116 813 & rnf_tm(jpi,jpj) , h_rnf_tm(jpi,jpj) , & 1117 814 & STAT=trc_sub_alloc )
Note: See TracChangeset
for help on using the changeset viewer.