Changeset 5951 for branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
- Timestamp:
- 2015-11-30T12:48:01+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
r5950 r5951 25 25 USE zdf_oce 26 26 USE domvvl 27 USE div cur ! hor. divergence and curl (div & cur routines)27 USE divhor ! horizontal divergence (div_hor routine) 28 28 USE sbcrnf, ONLY: h_rnf, nk_rnf ! River runoff 29 29 USE bdy_oce … … 44 44 REAL(wp) :: r1_ndttrcp1 ! 1 / (nn_dttrc+1) 45 45 46 !!* Substitution 47 # include "top_substitute.h90" 46 ! !* iso-neutral slopes (if l_ldfslp=T) 47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: uslp_temp, vslp_temp, wslpi_temp, wslpj_temp !: hold current values 48 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: uslp_tm , vslp_tm , wslpi_tm , wslpj_tm !: time mean 49 50 !! * Substitutions 51 # include "domzgr_substitute.h90" 48 52 !!---------------------------------------------------------------------- 49 53 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 93 97 avs_tm (:,:,:) = avs_tm (:,:,:) + avs (:,:,:) * fse3w(:,:,:) 94 98 # endif 95 #if defined key_ldfslp 96 wslpi_tm(:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:)97 wslpj_tm(:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:)98 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp(:,:,:)99 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp(:,:,:)100 #endif 99 IF( l_ldfslp ) THEN 100 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp (:,:,:) 101 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) 102 wslpi_tm(:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:) 103 wslpj_tm(:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:) 104 ENDIF 101 105 # if defined key_trabbl 102 106 IF( nn_bbl_ldf == 1 ) THEN … … 131 135 avs_temp (:,:,:) = avs (:,:,:) 132 136 # endif 133 #if defined key_ldfslp 134 wslpi_temp (:,:,:) = wslpi (:,:,:) 135 wslpj_temp (:,:,:) = wslpj (:,:,:) 136 uslp_temp (:,:,:) = uslp (:,:,:) 137 vslp_temp (:,:,:) = vslp (:,:,:) 138 #endif 137 IF( l_ldfslp ) THEN 138 uslp_temp (:,:,:) = uslp (:,:,:) ; wslpi_temp (:,:,:) = wslpi (:,:,:) 139 vslp_temp (:,:,:) = vslp (:,:,:) ; wslpj_temp (:,:,:) = wslpj (:,:,:) 140 ENDIF 139 141 # if defined key_trabbl 140 142 IF( nn_bbl_ldf == 1 ) THEN … … 160 162 wndm_temp (:,:) = wndm (:,:) 161 163 ! ! Variables reset in trc_sub_ssh 162 rotn_temp (:,:,:) = rotn (:,:,:)163 164 hdivn_temp (:,:,:) = hdivn (:,:,:) 164 rotb_temp (:,:,:) = rotb (:,:,:)165 hdivb_temp (:,:,:) = hdivb (:,:,:)166 165 ! 167 166 ! 2. Create averages and reassign variables … … 175 174 avs_tm (:,:,:) = avs_tm (:,:,:) + avs (:,:,:) * fse3w(:,:,:) 176 175 # endif 177 #if defined key_ldfslp 178 wslpi_tm (:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:)179 wslpj_tm (:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:)180 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp(:,:,:)181 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:)182 #endif 176 IF( l_ldfslp ) THEN 177 uslp_tm (:,:,:) = uslp_tm (:,:,:) + uslp (:,:,:) 178 vslp_tm (:,:,:) = vslp_tm (:,:,:) + vslp (:,:,:) 179 wslpi_tm (:,:,:) = wslpi_tm(:,:,:) + wslpi(:,:,:) 180 wslpj_tm (:,:,:) = wslpj_tm(:,:,:) + wslpj(:,:,:) 181 ENDIF 183 182 # if defined key_trabbl 184 183 IF( nn_bbl_ldf == 1 ) THEN … … 255 254 tsn (ji,jj,jk,jp_sal) = tsn_tm (ji,jj,jk,jp_sal) * z1_ne3t 256 255 rhop (ji,jj,jk) = rhop_tm (ji,jj,jk) * z1_ne3t 256 !!gm : BUG? ==>> for avt & avs I don't understand the division by e3w 257 257 avt (ji,jj,jk) = avt_tm (ji,jj,jk) * z1_ne3w 258 258 # if defined key_zdfddm 259 259 avs (ji,jj,jk) = avs_tm (ji,jj,jk) * z1_ne3w 260 260 # endif 261 #if defined key_ldfslp 262 wslpi(ji,jj,jk) = wslpi_tm(ji,jj,jk)263 wslpj(ji,jj,jk) = wslpj_tm(ji,jj,jk)264 uslp (ji,jj,jk) = uslp_tm (ji,jj,jk)265 vslp (ji,jj,jk) = vslp_tm (ji,jj,jk)266 #endif 267 ENDDO268 ENDDO269 END DO261 END DO 262 END DO 263 END DO 264 IF( l_ldfslp ) THEN 265 wslpi(:,:,:) = wslpi_tm(:,:,:) 266 wslpj(:,:,:) = wslpj_tm(:,:,:) 267 uslp (:,:,:) = uslp_tm (:,:,:) 268 vslp (:,:,:) = vslp_tm (:,:,:) 269 ENDIF 270 270 ! 271 271 CALL trc_sub_ssh( kt ) ! after ssh & vertical velocity … … 276 276 ! 277 277 END SUBROUTINE trc_sub_stp 278 278 279 279 280 SUBROUTINE trc_sub_ini … … 304 305 tsn_tm (:,:,:,jp_sal) = tsn (:,:,:,jp_sal) * fse3t(:,:,:) 305 306 rhop_tm (:,:,:) = rhop (:,:,:) * fse3t(:,:,:) 307 !!gm : BUG? ==>> for avt & avs I don't understand the division by e3w 306 308 avt_tm (:,:,:) = avt (:,:,:) * fse3w(:,:,:) 307 309 # if defined key_zdfddm 308 310 avs_tm (:,:,:) = avs (:,:,:) * fse3w(:,:,:) 309 311 # endif 310 #if defined key_ldfslp 311 wslpi_tm(:,:,:)= wslpi(:,:,:)312 wslpj_tm(:,:,:)= wslpj(:,:,:)313 uslp_tm (:,:,:)= uslp (:,:,:)314 vslp_tm (:,:,:)= vslp (:,:,:)315 #endif 312 IF( l_ldfslp ) THEN 313 wslpi_tm(:,:,:) = wslpi(:,:,:) 314 wslpj_tm(:,:,:) = wslpj(:,:,:) 315 uslp_tm (:,:,:) = uslp (:,:,:) 316 vslp_tm (:,:,:) = vslp (:,:,:) 317 ENDIF 316 318 sshn_tm (:,:) = sshn (:,:) 317 319 rnf_tm (:,:) = rnf (:,:) … … 365 367 avs (:,:,:) = avs_temp (:,:,:) 366 368 # endif 367 #if defined key_ldfslp 368 wslpi (:,:,:)= wslpi_temp (:,:,:)369 wslpj (:,:,:)= wslpj_temp (:,:,:)370 uslp (:,:,:)= uslp_temp (:,:,:)371 vslp (:,:,:)= vslp_temp (:,:,:)372 #endif 369 IF( l_ldfslp ) THEN 370 wslpi (:,:,:)= wslpi_temp (:,:,:) 371 wslpj (:,:,:)= wslpj_temp (:,:,:) 372 uslp (:,:,:)= uslp_temp (:,:,:) 373 vslp (:,:,:)= vslp_temp (:,:,:) 374 ENDIF 373 375 sshn (:,:) = sshn_temp (:,:) 374 376 sshb (:,:) = sshb_temp (:,:) … … 396 398 ! 397 399 hdivn (:,:,:) = hdivn_temp (:,:,:) 398 rotn (:,:,:) = rotn_temp (:,:,:)399 hdivb (:,:,:) = hdivb_temp (:,:,:)400 rotb (:,:,:) = rotb_temp (:,:,:)401 400 ! 402 403 401 ! Start new averages 404 402 un_tm (:,:,:) = un (:,:,:) * fse3u(:,:,:) … … 411 409 avs_tm (:,:,:) = avs (:,:,:) * fse3w(:,:,:) 412 410 # endif 413 #if defined key_ldfslp 411 IF( l_ldfslp ) THEN 412 uslp_tm (:,:,:) = uslp (:,:,:) 413 vslp_tm (:,:,:) = vslp (:,:,:) 414 414 wslpi_tm(:,:,:) = wslpi(:,:,:) 415 415 wslpj_tm(:,:,:) = wslpj(:,:,:) 416 uslp_tm (:,:,:) = uslp (:,:,:) 417 vslp_tm (:,:,:) = vslp (:,:,:) 418 #endif 416 ENDIF 419 417 ! 420 418 sshb_hold (:,:) = sshn (:,:) … … 487 485 ENDIF 488 486 ! 489 CALL div_ cur( kt ) ! Horizontal divergence & Relative vorticity487 CALL div_hor( kt ) ! Horizontal divergence & Relative vorticity 490 488 ! 491 489 z2dt = 2._wp * rdt ! set time step size (Euler/Leapfrog) … … 504 502 z1_rau0 = 0.5 / rau0 505 503 ssha(:,:) = ( sshb(:,:) - z2dt * ( z1_rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) ) ) * tmask(:,:,1) 506 #if ! defined key_dynspg_ts 504 507 505 ! These lines are not necessary with time splitting since 508 506 ! boundary condition on sea level is set during ts loop … … 514 512 CALL lbc_lnk( ssha, 'T', 1. ) 515 513 #endif 516 #endif517 518 514 519 515 ! !------------------------------! … … 551 547 & sshn_temp(jpi,jpj) , sshb_temp(jpi,jpj) , & 552 548 & ssha_temp(jpi,jpj) , & 553 #if defined key_ldfslp554 & wslpi_temp(jpi,jpj,jpk) , wslpj_temp(jpi,jpj,jpk), &555 & uslp_temp(jpi,jpj,jpk) , vslp_temp(jpi,jpj,jpk), &556 #endif557 549 #if defined key_trabbl 558 550 & ahu_bbl_temp(jpi,jpj) , ahv_bbl_temp(jpi,jpj), & … … 569 561 # endif 570 562 & hdivn_temp(jpi,jpj,jpk) , hdivb_temp(jpi,jpj,jpk), & 571 & rotn_temp(jpi,jpj,jpk) , rotb_temp(jpi,jpj,jpk), &572 563 & un_tm(jpi,jpj,jpk) , vn_tm(jpi,jpj,jpk) , & 573 564 & avt_tm(jpi,jpj,jpk) , & … … 577 568 & emp_b_hold(jpi,jpj) , & 578 569 & hmld_tm(jpi,jpj) , qsr_tm(jpi,jpj) , & 579 #if defined key_ldfslp580 & wslpi_tm(jpi,jpj,jpk) , wslpj_tm(jpi,jpj,jpk), &581 & uslp_tm(jpi,jpj,jpk) , vslp_tm(jpi,jpj,jpk), &582 #endif583 570 #if defined key_trabbl 584 571 & ahu_bbl_tm(jpi,jpj) , ahv_bbl_tm(jpi,jpj), & 585 572 & utr_bbl_tm(jpi,jpj) , vtr_bbl_tm(jpi,jpj), & 586 573 #endif 587 & rnf_tm(jpi,jpj) , h_rnf_tm(jpi,jpj) , &588 & STAT=trc_sub_alloc )574 & rnf_tm(jpi,jpj) , h_rnf_tm(jpi,jpj) , STAT=trc_sub_alloc ) 575 ! 589 576 IF( trc_sub_alloc /= 0 ) CALL ctl_warn('trc_sub_alloc: failed to allocate arrays') 590 577 ! 578 IF( l_ldfslp ) THEN 579 ALLOCATE( uslp_temp(jpi,jpj,jpk) , wslpi_temp(jpi,jpj,jpk), & 580 & vslp_temp(jpi,jpj,jpk) , wslpj_temp(jpi,jpj,jpk), & 581 & uslp_tm (jpi,jpj,jpk) , wslpi_tm (jpi,jpj,jpk), & 582 & vslp_tm (jpi,jpj,jpk) , wslpj_tm (jpi,jpj,jpk), STAT=trc_sub_alloc ) 583 ENDIF 584 ! 585 IF( trc_sub_alloc /= 0 ) CALL ctl_warn('trc_sub_alloc: failed to allocate ldf_slp arrays') 591 586 ! 592 587 END FUNCTION trc_sub_alloc
Note: See TracChangeset
for help on using the changeset viewer.