- Timestamp:
- 2011-03-15T16:27:46+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90
r2633 r2690 4 4 !! Ocean diagnostics: momentum trends 5 5 !!===================================================================== 6 !! History : 9.0 ! 04-06 (L. Brunier, A-M. Treguier) Original code7 !! ! 04-08 (C. Talandier) New trends organization6 !! History : 1.0 ! 04-2006 (L. Brunier, A-M. Treguier) Original code 7 !! 2.0 ! 04-2008 (C. Talandier) New trends organization 8 8 !!---------------------------------------------------------------------- 9 9 #if defined key_trdvor || defined key_esopa … … 41 41 42 42 INTEGER :: nh_t, nmoydpvor, nidvor, nhoridvor, ndimvor1, icount ! needs for IOIPSL output 43 INTEGER, SAVE, ALLOCATABLE, DIMENSION(:) :: ndexvor1! needed for IOIPSL output43 INTEGER, SAVE, ALLOCATABLE, DIMENSION(:) :: ndexvor1 ! needed for IOIPSL output 44 44 INTEGER :: ndebug ! (0/1) set it to 1 in case of problem to have more print 45 45 46 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:, :) :: vor_avr ! average 47 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:, :) :: vor_avrb ! before vorticity (kt-1) 48 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:, :) :: vor_avrbb ! vorticity at begining of the nwrite-1 timestep averaging period 49 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:, :) :: vor_avrbn ! after vorticity at time step after the 50 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:, :) :: rotot ! begining of the NWRITE-1 timesteps 51 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:, :) :: vor_avrtot ! 52 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:, :) :: vor_avrres ! 53 54 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: vortrd ! curl of trends 46 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: vor_avr ! average 47 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: vor_avrb ! before vorticity (kt-1) 48 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: vor_avrbb ! vorticity at begining of the nwrite-1 timestep averaging period 49 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: vor_avrbn ! after vorticity at time step after the 50 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: rotot ! begining of the NWRITE-1 timesteps 51 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: vor_avrtot ! 52 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: vor_avrres ! 53 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: vortrd ! curl of trends 55 54 56 55 CHARACTER(len=12) :: cvort … … 71 70 !! *** ROUTINE trd_vor_alloc *** 72 71 !!---------------------------------------------------------------------------- 73 ALLOCATE( vor_avr (jpi,jpj), vor_avrb(jpi,jpj), vor_avrbb(jpi,jpj),&74 & vor_avrbn (jpi,jpj), rotot(jpi,jpj), vor_avrtot(jpi,jpj),&75 & vor_avrres(jpi,jpj) , vortrd(jpi,jpj,jpltot_vor),&76 & ndexvor1 (jpi*jpj), STAT=trd_vor_alloc)72 ALLOCATE( vor_avr (jpi,jpj) , vor_avrb(jpi,jpj) , vor_avrbb (jpi,jpj) , & 73 & vor_avrbn (jpi,jpj) , rotot (jpi,jpj) , vor_avrtot(jpi,jpj) , & 74 & vor_avrres(jpi,jpj) , vortrd (jpi,jpj,jpltot_vor) , & 75 & ndexvor1 (jpi*jpj) , STAT= trd_vor_alloc ) 77 76 ! 78 77 IF( lk_mpp ) CALL mpp_sum ( trd_vor_alloc ) … … 108 107 !! trends output in netCDF format using ioipsl 109 108 !!---------------------------------------------------------------------- 110 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 111 USE wrk_nemo, ONLY: zudpvor => wrk_2d_1, & ! total cmulative trends 112 zvdpvor => wrk_2d_2 113 !! 109 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 110 USE wrk_nemo, ONLY: zudpvor => wrk_2d_1 , zvdpvor => wrk_2d_2 ! total cmulative trends 111 ! 114 112 INTEGER , INTENT(in ) :: ktrd ! ocean trend index 115 113 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: putrdvor ! u vorticity trend 116 114 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: pvtrdvor ! v vorticity trend 117 ! !115 ! 118 116 INTEGER :: ji, jj ! dummy loop indices 119 117 INTEGER :: ikbu, ikbv ! local integers 120 118 !!---------------------------------------------------------------------- 121 119 122 IF(wrk_in_use(2, 1,2))THEN 123 CALL ctl_stop('trd_vor_zint_2d : requested workspace arrays unavailable.') 124 RETURN 125 END IF 120 IF( wrk_in_use(2, 1,2) ) THEN 121 CALL ctl_stop('trd_vor_zint_2d: requested workspace arrays unavailable') ; RETURN 122 ENDIF 126 123 127 124 ! Initialization 128 zudpvor(:,:) = 0._wp 129 zvdpvor(:,:) = 0._wp 130 ! 131 CALL lbc_lnk( putrdvor, 'U' , -1. ) ! lateral boundary condition on input momentum trends 132 CALL lbc_lnk( pvtrdvor, 'V' , -1. ) 125 zudpvor(:,:) = 0._wp ; zvdpvor(:,:) = 0._wp 126 CALL lbc_lnk( putrdvor, 'U', -1. ) ; CALL lbc_lnk( pvtrdvor, 'V', -1. ) ! lateral boundary condition 127 133 128 134 129 ! ===================================== … … 172 167 ENDIF 173 168 ! 174 IF(wrk_not_released(2, 1,2))THEN 175 CALL ctl_stop('trd_vor_zint_2d : failed to release workspace arrays.') 176 END IF 169 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('trd_vor_zint_2d : failed to release workspace arrays.') 177 170 ! 178 171 END SUBROUTINE trd_vor_zint_2d … … 206 199 !! trends output in netCDF format using ioipsl 207 200 !!---------------------------------------------------------------------- 208 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released209 USE wrk_nemo, ONLY: zubet => wrk_2d_1, zvbet => wrk_2d_2 ! Beta.V210 USE wrk_nemo, ONLY: zudpvor => wrk_2d_3, zvdpvor => wrk_2d_4 ! total cmulative trends211 ! !201 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 202 USE wrk_nemo, ONLY: zubet => wrk_2d_1, zvbet => wrk_2d_2 ! Beta.V 203 USE wrk_nemo, ONLY: zudpvor => wrk_2d_3, zvdpvor => wrk_2d_4 ! total cmulative trends 204 ! 212 205 INTEGER , INTENT(in ) :: ktrd ! ocean trend index 213 206 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: putrdvor ! u vorticity trend 214 207 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pvtrdvor ! v vorticity trend 215 ! !216 INTEGER :: ji, jj, jk 208 ! 209 INTEGER :: ji, jj, jk ! dummy loop indices 217 210 !!---------------------------------------------------------------------- 218 211 219 IF(wrk_in_use(2, 1,2,3,4))THEN 220 CALL ctl_stop('trd_vor_zint_3d : requested workspace arrays unavailable.') 221 RETURN 222 END IF 212 IF( wrk_in_use(2, 1,2,3,4) ) THEN 213 CALL ctl_stop('trd_vor_zint_3d: requested workspace arrays unavailable.') ; RETURN 214 ENDIF 223 215 224 216 ! Initialization … … 228 220 zvdpvor(:,:) = 0._wp 229 221 ! 230 CALL lbc_lnk( putrdvor, 'U' 231 CALL lbc_lnk( pvtrdvor, 'V' 222 CALL lbc_lnk( putrdvor, 'U', -1. ) ! lateral boundary condition on input momentum trends 223 CALL lbc_lnk( pvtrdvor, 'V', -1. ) 232 224 233 225 ! ===================================== … … 284 276 ENDIF 285 277 ! 286 IF(wrk_not_released(2, 1,2,3,4))THEN 287 CALL ctl_stop('trd_vor_zint_3d : failed to release workspace arrays.') 288 END IF 278 IF( wrk_not_released(2, 1,2,3,4) ) CALL ctl_stop('trd_vor_zint_3d: failed to release workspace arrays') 289 279 ! 290 280 END SUBROUTINE trd_vor_zint_3d … … 298 288 !! and make outputs (NetCDF or DIMG format) 299 289 !!---------------------------------------------------------------------- 300 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released301 USE wrk_nemo, ONLY: zun => wrk_2d_1, zvn => wrk_2d_2 ! 2D workspace302 ! !290 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 291 USE wrk_nemo, ONLY: zun => wrk_2d_1 , zvn => wrk_2d_2 ! 2D workspace 292 ! 303 293 INTEGER, INTENT(in) :: kt ! ocean time-step index 304 ! !294 ! 305 295 INTEGER :: ji, jj, jk, jl ! dummy loop indices 306 296 INTEGER :: it, itmod ! local integers … … 308 298 !!---------------------------------------------------------------------- 309 299 310 IF(wrk_in_use(2, 1,2))THEN 311 CALL ctl_stop('trd_vor : requested workspace arrays unavailable.') 312 RETURN 313 END IF 300 IF( wrk_in_use(2, 1,2) ) THEN 301 CALL ctl_stop('trd_vor: requested workspace arrays unavailable.') ; RETURN 302 ENDIF 314 303 315 304 ! ================= … … 478 467 IF( kt == nitend ) CALL histclo( nidvor ) 479 468 ! 480 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('trd_vor: failed to release workspace arrays')469 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('trd_vor: failed to release workspace arrays') 481 470 ! 482 471 END SUBROUTINE trd_vor
Note: See TracChangeset
for help on using the changeset viewer.