Changeset 3294 for trunk/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
r2715 r3294 27 27 USE sbc_oce, ONLY : ln_rnf ! surface boundary condition: ocean 28 28 USE sbcrnf ! river runoff 29 USE obc_oce ! ocean lateral open boundary condition30 29 USE cla ! cross land advection (cla_div routine) 31 30 USE in_out_manager ! I/O manager 32 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 33 32 USE lib_mpp ! MPP library 33 USE wrk_nemo ! Memory Allocation 34 USE timing ! Timing 34 35 35 36 IMPLICIT NONE … … 84 85 INTEGER, INTENT(in) :: kt ! ocean time-step index 85 86 ! 86 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zwu ! specific 2D workspace87 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zwv ! specific 2D workspace88 !89 87 INTEGER :: ji, jj, jk, jl ! dummy loop indices 90 88 INTEGER :: ii, ij, ijt, iju, ierr ! local integer 91 89 REAL(wp) :: zraur, zdep ! local scalar 92 !!---------------------------------------------------------------------- 93 90 REAL(wp), POINTER, DIMENSION(:,:) :: zwu ! specific 2D workspace 91 REAL(wp), POINTER, DIMENSION(:,:) :: zwv ! specific 2D workspace 92 !!---------------------------------------------------------------------- 93 ! 94 IF( nn_timing == 1 ) CALL timing_start('div_cur') 95 ! 96 CALL wrk_alloc( jpi , jpj+2, zwu ) 97 CALL wrk_alloc( jpi+4, jpj , zwv, kjstart = -1 ) 98 ! 94 99 IF( kt == nit000 ) THEN 95 100 IF(lwp) WRITE(numout,*) 96 101 IF(lwp) WRITE(numout,*) 'div_cur : horizontal velocity divergence and relative vorticity' 97 102 IF(lwp) WRITE(numout,*) '~~~~~~~ NOT optimal for auto-tasking case' 98 !99 ALLOCATE( zwu( jpi, 1:jpj+2) , zwv(-1:jpi+2, jpj) , STAT=ierr )100 IF( lk_mpp ) CALL mpp_sum( ierr )101 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'div_cur : unable to allocate arrays' )102 103 ENDIF 103 104 … … 121 122 END DO 122 123 123 #if defined key_obc124 IF( Agrif_Root() ) THEN125 ! open boundaries (div must be zero behind the open boundary)126 ! mpp remark: The zeroing of hdivn can probably be extended to 1->jpi/jpj for the correct row/column127 IF( lp_obc_east ) hdivn(nie0p1:nie1p1,nje0 :nje1 ,jk) = 0.e0 ! east128 IF( lp_obc_west ) hdivn(niw0 :niw1 ,njw0 :njw1 ,jk) = 0.e0 ! west129 IF( lp_obc_north ) hdivn(nin0 :nin1 ,njn0p1:njn1p1,jk) = 0.e0 ! north130 IF( lp_obc_south ) hdivn(nis0 :nis1 ,njs0 :njs1 ,jk) = 0.e0 ! south131 ENDIF132 #endif133 124 IF( .NOT. AGRIF_Root() ) THEN 134 125 IF ((nbondi == 1).OR.(nbondi == 2)) hdivn(nlci-1 , : ,jk) = 0.e0 ! east … … 241 232 CALL lbc_lnk( hdivn, 'T', 1. ) ; CALL lbc_lnk( rotn , 'F', 1. ) ! lateral boundary cond. (no sign change) 242 233 ! 234 CALL wrk_dealloc( jpi , jpj+2, zwu ) 235 CALL wrk_dealloc( jpi+4, jpj , zwv, kjstart = -1 ) 236 ! 237 IF( nn_timing == 1 ) CALL timing_stop('div_cur') 238 ! 243 239 END SUBROUTINE div_cur 244 240 … … 278 274 REAL(wp) :: zraur, zdep ! local scalars 279 275 !!---------------------------------------------------------------------- 280 276 ! 277 IF( nn_timing == 1 ) CALL timing_start('div_cur') 278 ! 281 279 IF( kt == nit000 ) THEN 282 280 IF(lwp) WRITE(numout,*) … … 304 302 END DO 305 303 306 #if defined key_obc307 IF( Agrif_Root() ) THEN308 ! open boundaries (div must be zero behind the open boundary)309 ! mpp remark: The zeroing of hdivn can probably be extended to 1->jpi/jpj for the correct row/column310 IF( lp_obc_east ) hdivn(nie0p1:nie1p1,nje0 :nje1 ,jk) = 0.e0 ! east311 IF( lp_obc_west ) hdivn(niw0 :niw1 ,njw0 :njw1 ,jk) = 0.e0 ! west312 IF( lp_obc_north ) hdivn(nin0 :nin1 ,njn0p1:njn1p1,jk) = 0.e0 ! north313 IF( lp_obc_south ) hdivn(nis0 :nis1 ,njs0 :njs1 ,jk) = 0.e0 ! south314 ENDIF315 #endif316 304 IF( .NOT. AGRIF_Root() ) THEN 317 305 IF ((nbondi == 1).OR.(nbondi == 2)) hdivn(nlci-1 , : ,jk) = 0.e0 ! east … … 340 328 CALL lbc_lnk( hdivn, 'T', 1. ) ; CALL lbc_lnk( rotn , 'F', 1. ) ! lateral boundary cond. (no sign change) 341 329 ! 330 IF( nn_timing == 1 ) CALL timing_stop('div_cur') 331 ! 342 332 END SUBROUTINE div_cur 343 333
Note: See TracChangeset
for help on using the changeset viewer.