Changeset 2971 for branches/2011/dev_r2802_TOP_substepping
- Timestamp:
- 2011-10-21T14:29:39+02:00 (13 years ago)
- Location:
- branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
r2910 r2971 106 106 !!---------------------------------------------------------------------- 107 107 108 IF( l_trdtra ) THEN !* Save ta and sa trends108 IF( l_trdtra ) THEN !* Save ta and sa trends 109 109 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 110 110 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = tsa(:,:,:,jp_sal) 111 111 ENDIF 112 112 113 IF( l_bbl ) CALL bbl( kt, 'TRA' )!* bbl coef. and transport (only if not already done in trcbbl)114 115 116 IF( nn_bbl_ldf == 1 ) THEN !* Diffusive bbl113 IF( l_bbl ) CALL bbl( kt, nit000, 'TRA' ) !* bbl coef. and transport (only if not already done in trcbbl) 114 115 116 IF( nn_bbl_ldf == 1 ) THEN !* Diffusive bbl 117 117 CALL tra_bbl_dif( tsb, tsa, jpts ) 118 118 IF( ln_ctl ) & -
branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl.F90
r2528 r2971 56 56 !!---------------------------------------------------------------------- 57 57 58 IF( .NOT. lk_offline ) THEN59 CALL bbl( kt, 'TRC' )! Online coupling with dynamics : Computation of bbl coef and bbl transport60 l_bbl = .FALSE. ! Offline coupling with dynamics : Read bbl coef and bbl transport from input files58 IF( .NOT. lk_offline .AND. nn_dttrc == 1 ) THEN 59 CALL bbl( kt, nittrc000, 'TRC' ) ! Online coupling with dynamics : Computation of bbl coef and bbl transport 60 l_bbl = .FALSE. ! Offline coupling with dynamics : Read bbl coef and bbl transport from input files 61 61 ENDIF 62 62 63 63 IF( l_trdtrc ) THEN 64 ALLOCATE( ztrtrd(jpi,jpj,jpk,jptra) ) 64 ALLOCATE( ztrtrd(jpi,jpj,jpk,jptra) ) ! temporary save of trends 65 65 ztrtrd(:,:,:,:) = tra(:,:,:,:) 66 66 ENDIF -
branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90
r2892 r2971 227 227 USE sbc_oce , ONLY : qsr => qsr !: penetrative solar radiation (w m-2) 228 228 USE sbc_oce , ONLY : emp => emp !: freshwater budget: volume flux [Kg/m2/s] 229 USE sbc_oce , ONLY : emp_b => emp_b !: freshwater budget: volume flux [Kg/m2/s] 229 230 USE sbc_oce , ONLY : emps => emps !: freshwater budget: concentration/dillution [Kg/m2/s] 230 231 USE sbc_oce , ONLY : rnf => rnf !: river runoff [Kg/m2/s] … … 237 238 USE sbcrnf , ONLY : rnfmsk => rnfmsk !: mixed adv scheme in runoffs vicinity (hori.) 238 239 USE sbcrnf , ONLY : rnfmsk_z => rnfmsk_z !: mixed adv scheme in runoffs vicinity (vert.) 240 USE sbcrnf , ONLY : h_rnf => h_rnf !: river runoff [Kg/m2/s] 239 241 240 242 USE trc_oce -
branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/trc.F90
r2944 r2971 105 105 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: un_tm !: i-horizontal velocity average [m/s] 106 106 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: vn_tm !: j-horizontal velocity average [m/s] 107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: wn_tm !: k-vertical velocity average [m/s] 108 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsn_tm !: t/s average [m/s] 109 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_tm !: vertical viscosity & diffusivity coeff. at w-point [m2/s] 107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsn_tm !: t/s average [m/s] 108 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_tm !: vertical diffusivity coeff. at w-point [m2/s] 110 109 # if defined key_zdfddm 111 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avs_tm !: salinity verticaldiffusivity coeff. at w-point [m/s]110 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avs_tm !: vertical double diffusivity coeff. at w-point [m/s] 112 111 # endif 113 112 #if defined key_ldfslp … … 116 115 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: uslp_tm !: j-direction slope at u-, w-points 117 116 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: vslp_tm !: j-direction slope at u-, w-points 117 #endif 118 #if defined key_trabbl 119 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ahu_bbl_tm !: u-, w-points 120 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ahv_bbl_tm !: j-direction slope at u-, w-points 121 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: utr_bbl_tm !: j-direction slope at u-, w-points 122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vtr_bbl_tm !: j-direction slope at u-, w-points 118 123 #endif 119 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshn_tm !: average ssh for the now step [m] … … 171 176 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_temp, emps_temp, emp_b_temp 172 177 ! 178 #if defined key_trabbl 179 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ahu_bbl_temp, ahv_bbl_temp, utr_bbl_temp, vtr_bbl_temp !: hold current values 180 #endif 181 ! 173 182 #if defined key_ldfslp 174 183 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: wslpi_temp, wslpj_temp, uslp_temp, vslp_temp !: hold current values -
branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r2892 r2971 229 229 ENDIF 230 230 ! Control of date 231 IF( nittrc000 - NINT( zkt ) /= 1.AND. nn_rsttr /= 0 ) &231 IF( nittrc000 - NINT( zkt ) /= nn_dttrc .AND. nn_rsttr /= 0 ) & 232 232 & CALL ctl_stop( ' ===>>>> : problem with nittrc000 for the restart', & 233 233 & ' verify the restart file or rerun with nn_rsttr = 0 (namelist)' ) -
branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
r2944 r2971 22 22 USE zdfgls, ONLY: en 23 23 #endif 24 USE trabbl 24 25 USE zdf_oce 25 26 USE domvvl … … 67 68 !!------------------------------------------------------------------- 68 69 69 IF (kt == nit000) THEN70 IF( kt == nit000 ) THEN 70 71 IF(lwp) WRITE(numout,*) 71 72 IF(lwp) WRITE(numout,*) 'trc_sub_stp : substepping of the passive tracers' … … 86 87 un_tm (:,:,:) = un_tm (:,:,:) + un (:,:,:) * fse3u(:,:,:) 87 88 vn_tm (:,:,:) = vn_tm (:,:,:) + vn (:,:,:) * fse3v(:,:,:) 88 wn_tm (:,:,:) = wn_tm (:,:,:) + wn (:,:,:) * fse3w(:,:,:)89 89 tsn_tm (:,:,:,jp_tem) = tsn_tm (:,:,:,jp_tem) + tsn (:,:,:,jp_tem) * fse3t(:,:,:) 90 90 tsn_tm (:,:,:,jp_sal) = tsn_tm (:,:,:,jp_sal) + tsn (:,:,:,jp_sal) * fse3t(:,:,:) … … 99 99 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) * fse3v(:,:,:) 100 100 #endif 101 # if defined key_trabbl 102 IF( nn_bbl_ldf == 1 ) THEN 103 ahu_bbl_tm(:,:) = ahu_bbl_tm(:,:) + ahu_bbl(:,:) 104 ahv_bbl_tm(:,:) = ahv_bbl_tm(:,:) + ahv_bbl(:,:) 105 ENDIF 106 IF( nn_bbl_adv == 1 ) THEN 107 utr_bbl_tm(:,:) = utr_bbl_tm(:,:) + utr_bbl(:,:) 108 vtr_bbl_tm(:,:) = vtr_bbl_tm(:,:) + vtr_bbl(:,:) 109 ENDIF 110 # endif 101 111 ! 102 112 sshn_tm (:,:) = sshn_tm (:,:) + sshn (:,:) … … 169 179 vslp_temp (:,:,:) = vslp (:,:,:) 170 180 #endif 181 # if defined key_trabbl 182 IF( nn_bbl_ldf == 1 ) THEN 183 ahu_bbl_temp(:,:) = ahu_bbl(:,:) 184 ahv_bbl_temp(:,:) = ahv_bbl(:,:) 185 ENDIF 186 IF( nn_bbl_adv == 1 ) THEN 187 utr_bbl_temp(:,:) = utr_bbl(:,:) 188 vtr_bbl_temp(:,:) = vtr_bbl(:,:) 189 ENDIF 190 # endif 171 191 sshn_temp (:,:) = sshn (:,:) 172 192 sshu_n_temp(:,:) = sshu_n(:,:) … … 229 249 # endif 230 250 #endif 231 ! Variables reset in trc_sub_ssh251 ! ! Variables reset in trc_sub_ssh 232 252 rotn_temp (:,:,:) = rotn (:,:,:) 233 253 hdivn_temp (:,:,:) = hdivn (:,:,:) … … 258 278 un_tm (:,:,:) = un_tm (:,:,:) + un (:,:,:) * e3u_temp(:,:,:) 259 279 vn_tm (:,:,:) = vn_tm (:,:,:) + vn (:,:,:) * e3v_temp(:,:,:) 260 wn_tm (:,:,:) = wn_tm (:,:,:) + wn (:,:,:) * e3w_temp(:,:,:)261 280 tsn_tm (:,:,:,jp_tem) = tsn_tm (:,:,:,jp_tem) + tsn (:,:,:,jp_tem) * e3t_temp(:,:,:) 262 281 tsn_tm (:,:,:,jp_sal) = tsn_tm (:,:,:,jp_sal) + tsn (:,:,:,jp_sal) * e3t_temp(:,:,:) … … 271 290 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) * e3v_temp(:,:,:) 272 291 #endif 292 # if defined key_trabbl 293 IF( nn_bbl_ldf == 1 ) THEN 294 ahu_bbl_tm(:,:) = ahu_bbl_tm(:,:) + ahu_bbl(:,:) 295 ahv_bbl_tm(:,:) = ahv_bbl_tm(:,:) + ahv_bbl(:,:) 296 ENDIF 297 IF( nn_bbl_adv == 1 ) THEN 298 utr_bbl_tm(:,:) = utr_bbl_tm(:,:) + utr_bbl(:,:) 299 vtr_bbl_tm(:,:) = vtr_bbl_tm(:,:) + vtr_bbl(:,:) 300 ENDIF 301 # endif 273 302 sshn_tm (:,:) = sshn_tm (:,:) + sshn (:,:) 274 303 sshu_n_tm(:,:) = sshu_n_tm (:,:) + sshu_n(:,:) … … 300 329 emps (:,:) = emps_tm (:,:) * r1_ndttrc 301 330 fr_i (:,:) = fr_i_tm (:,:) * r1_ndttrc 331 # if defined key_trabbl 332 IF( nn_bbl_ldf == 1 ) THEN 333 ahu_bbl(:,:) = ahu_bbl_tm (:,:) * r1_ndttrc 334 ahv_bbl(:,:) = ahv_bbl_tm (:,:) * r1_ndttrc 335 ENDIF 336 IF( nn_bbl_adv == 1 ) THEN 337 utr_bbl(:,:) = utr_bbl_tm (:,:) * r1_ndttrc 338 vtr_bbl(:,:) = vtr_bbl_tm (:,:) * r1_ndttrc 339 ENDIF 340 # endif 302 341 ELSE 303 342 wndm (:,:) = wndm_tm (:,:) * r1_ndttrcp1 … … 306 345 emps (:,:) = emps_tm (:,:) * r1_ndttrcp1 307 346 fr_i (:,:) = fr_i_tm (:,:) * r1_ndttrcp1 347 # if defined key_trabbl 348 IF( nn_bbl_ldf == 1 ) THEN 349 ahu_bbl(:,:) = ahu_bbl_tm (:,:) * r1_ndttrcp1 350 ahv_bbl(:,:) = ahv_bbl_tm (:,:) * r1_ndttrcp1 351 ENDIF 352 IF( nn_bbl_adv == 1 ) THEN 353 utr_bbl(:,:) = utr_bbl_tm (:,:) * r1_ndttrcp1 354 vtr_bbl(:,:) = vtr_bbl_tm (:,:) * r1_ndttrcp1 355 ENDIF 356 # endif 308 357 ENDIF 309 358 ! … … 318 367 un (ji,jj,jk) = un_tm (ji,jj,jk) * z1_ne3u 319 368 vn (ji,jj,jk) = vn_tm (ji,jj,jk) * z1_ne3v 320 wn (ji,jj,jk) = wn_tm (ji,jj,jk) * z1_ne3w321 369 tsn (ji,jj,jk,jp_tem) = tsn_tm (ji,jj,jk,jp_tem) * z1_ne3t 322 370 tsn (ji,jj,jk,jp_sal) = tsn_tm (ji,jj,jk,jp_sal) * z1_ne3t … … 413 461 #endif 414 462 415 CALL lbc_lnk( un (:,:,:) , 'U', 1. ) 416 CALL lbc_lnk( vn (:,:,:) , 'V', 1. ) 417 CALL lbc_lnk( wn (:,:,:) , 'V', 1. ) 463 CALL lbc_lnk( un (:,:,:) , 'U',-1. ) 464 CALL lbc_lnk( vn (:,:,:) , 'V',-1. ) 418 465 CALL lbc_lnk( tsn (:,:,:,jp_tem), 'T', 1. ) 419 466 CALL lbc_lnk( tsn (:,:,:,jp_sal), 'T', 1. ) … … 423 470 # endif 424 471 #if defined key_ldfslp 425 CALL lbc_lnk( uslp (:,:,:) , 'U', 426 CALL lbc_lnk( vslp (:,:,:) , 'V', 427 CALL lbc_lnk( wslpi (:,:,:) , 'W', 428 CALL lbc_lnk( wslpj (:,:,:) , 'W', 472 CALL lbc_lnk( uslp (:,:,:) , 'U',-1. ) 473 CALL lbc_lnk( vslp (:,:,:) , 'V',-1. ) 474 CALL lbc_lnk( wslpi (:,:,:) , 'W',-1. ) 475 CALL lbc_lnk( wslpj (:,:,:) , 'W',-1. ) 429 476 #endif 430 477 CALL lbc_lnk( sshn (:,:) , 'T', 1. ) … … 447 494 CALL lbc_lnk( qsr (:,:) , 'T', 1. ) 448 495 CALL lbc_lnk( wndm (:,:) , 'T', 1. ) 496 # if defined key_trabbl 497 IF( nn_bbl_ldf == 1 ) THEN 498 CALL lbc_lnk( ahu_bbl(:,:) , 'U', 1. ) 499 CALL lbc_lnk( ahv_bbl(:,:) , 'v', 1. ) 500 ENDIF 501 IF( nn_bbl_adv == 1 ) THEN 502 CALL lbc_lnk( utr_bbl(:,:) , 'U', 1. ) 503 CALL lbc_lnk( vtr_bbl(:,:) , 'U', 1. ) 504 ENDIF 505 # endif 449 506 #if defined key_traldf_c3d 450 507 CALL lbc_lnk( ahtt (:,:,:) , 'T', 1. ) … … 472 529 CALL trc_sub_ssh( kt ) ! after ssh & vertical velocity 473 530 ! 531 CALL lbc_lnk( wn (:,:,:) , 'W',-1. ) 474 532 CALL lbc_lnk( rotn (:,:,:) , 'F', 1. ) 475 533 CALL lbc_lnk( hdivn (:,:,:) , 'T', 1. ) … … 507 565 un_tm (:,:,:) = un (:,:,:) * fse3u(:,:,:) 508 566 vn_tm (:,:,:) = vn (:,:,:) * fse3v(:,:,:) 509 wn_tm (:,:,:) = wn (:,:,:) * fse3w(:,:,:)510 567 tsn_tm (:,:,:,jp_tem) = tsn (:,:,:,jp_tem) * fse3t(:,:,:) 511 568 tsn_tm (:,:,:,jp_sal) = tsn (:,:,:,jp_sal) * fse3t(:,:,:) … … 528 585 529 586 ! Physics variables that are set after initialization: 530 fr_i_tm(:,:) = 0. 531 emp_tm (:,:) = 0. 532 emps_tm(:,:) = 0. 533 qsr_tm (:,:) = 0. 534 wndm_tm(:,:) = 0. 587 fr_i_tm(:,:) = 0._wp 588 emp_tm (:,:) = 0._wp 589 emps_tm(:,:) = 0._wp 590 qsr_tm (:,:) = 0._wp 591 wndm_tm(:,:) = 0._wp 592 # if defined key_trabbl 593 IF( nn_bbl_ldf == 1 ) THEN 594 ahu_bbl_tm(:,:) = 0._wp 595 ahv_bbl_tm(:,:) = 0._wp 596 ENDIF 597 IF( nn_bbl_adv == 1 ) THEN 598 utr_bbl_tm(:,:) = 0._wp 599 vtr_bbl_tm(:,:) = 0._wp 600 ENDIF 601 # endif 535 602 ! 536 603 #if defined key_traldf_c3d … … 626 693 qsr (:,:) = qsr_temp (:,:) 627 694 wndm (:,:) = wndm_temp (:,:) 695 # if defined key_trabbl 696 IF( nn_bbl_ldf == 1 ) THEN 697 ahu_bbl(:,:) = ahu_bbl_temp(:,:) 698 ahv_bbl(:,:) = ahv_bbl_temp(:,:) 699 ENDIF 700 IF( nn_bbl_adv == 1 ) THEN 701 utr_bbl(:,:) = utr_bbl_temp(:,:) 702 vtr_bbl(:,:) = vtr_bbl_temp(:,:) 703 ENDIF 704 # endif 628 705 ! 629 706 #if defined key_traldf_c3d … … 703 780 704 781 ! Start new averages 705 ! DO jk = 1, jpk706 782 un_tm (:,:,:) = un (:,:,:) * fse3u(:,:,:) 707 783 vn_tm (:,:,:) = vn (:,:,:) * fse3v(:,:,:) 708 wn_tm (:,:,:) = wn (:,:,:) * fse3w(:,:,:)709 784 tsn_tm (:,:,:,jp_tem) = tsn (:,:,:,jp_tem) * fse3t(:,:,:) 710 785 tsn_tm (:,:,:,jp_sal) = tsn (:,:,:,jp_sal) * fse3t(:,:,:) … … 719 794 vslp_tm (:,:,:) = vslp (:,:,:) * fse3v(:,:,:) 720 795 #endif 721 ! END DO722 796 ! 723 797 sshb_hold (:,:) = sshn (:,:) … … 736 810 qsr_tm (:,:) = qsr (:,:) 737 811 wndm_tm (:,:) = wndm (:,:) 812 # if defined key_trabbl 813 IF( nn_bbl_ldf == 1 ) THEN 814 ahu_bbl_tm(:,:) = ahu_bbl(:,:) 815 ahv_bbl_tm(:,:) = ahv_bbl(:,:) 816 ENDIF 817 IF( nn_bbl_adv == 1 ) THEN 818 utr_bbl_tm(:,:) = utr_bbl(:,:) 819 vtr_bbl_tm(:,:) = vtr_bbl(:,:) 820 ENDIF 821 # endif 738 822 ! 739 823 #if defined key_traldf_c3d … … 945 1029 & uslp_temp(jpi,jpj,jpk) , vslp_temp(jpi,jpj,jpk), & 946 1030 #endif 1031 #if defined key_trabbl 1032 & ahu_bbl_temp(jpi,jpj) , ahv_bbl_temp(jpi,jpj), & 1033 & utr_bbl_temp(jpi,jpj) , vtr_bbl_temp(jpi,jpj), & 1034 #endif 947 1035 & rnf_temp(jpi,jpj) , h_rnf_temp(jpi,jpj) , & 948 & tsn_temp(jpi,jpj,jpk,2) , 1036 & tsn_temp(jpi,jpj,jpk,2) , emp_b_temp(jpi,jpj), & 949 1037 & emp_temp(jpi,jpj) , emps_temp(jpi,jpj) , & 950 1038 & hmld_temp(jpi,jpj) , qsr_temp(jpi,jpj) , & … … 990 1078 & hur_temp(jpi,jpj) , hvr_temp(jpi,jpj), & 991 1079 & un_tm(jpi,jpj,jpk) , vn_tm(jpi,jpj,jpk) , & 992 & wn_tm(jpi,jpj,jpk) , avt_tm(jpi,jpj,jpk), &1080 & avt_tm(jpi,jpj,jpk) , & 993 1081 & sshn_tm(jpi,jpj) , sshb_hold(jpi,jpj) , & 994 1082 & sshu_n_tm(jpi,jpj) , sshu_b_hold(jpi,jpj), & … … 1001 1089 & wslpi_tm(jpi,jpj,jpk) , wslpj_tm(jpi,jpj,jpk), & 1002 1090 & uslp_tm(jpi,jpj,jpk) , vslp_tm(jpi,jpj,jpk), & 1091 #endif 1092 #if defined key_trabbl 1093 & ahu_bbl_tm(jpi,jpj) , ahv_bbl_tm(jpi,jpj), & 1094 & utr_bbl_tm(jpi,jpj) , vtr_bbl_tm(jpi,jpj), & 1003 1095 #endif 1004 1096 & rnf_tm(jpi,jpj) , h_rnf_tm(jpi,jpj) , &
Note: See TracChangeset
for help on using the changeset viewer.