Changeset 3181 for branches/2011/dev_NEMO_MERGE_2011
- Timestamp:
- 2011-11-25T12:07:40+01:00 (13 years ago)
- Location:
- branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRD
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRD/trdicp.F90
r2977 r3181 26 26 USE eosbn2 ! equation of state 27 27 USE phycst ! physical constants 28 USE wrk_nemo_2 ! Memory allocation 29 28 30 29 31 IMPLICIT NONE … … 251 253 !! ** Purpose : write dynamic trends in ocean.output 252 254 !!---------------------------------------------------------------------- 253 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released254 USE wrk_nemo, ONLY: zkepe => wrk_3d_1 , zkx => wrk_3d_2 ! 3D workspace255 USE wrk_nemo, ONLY: zky => wrk_3d_3 , zkz => wrk_3d_4 ! - -256 255 ! 257 256 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 259 258 INTEGER :: ji, jj, jk ! dummy loop indices 260 259 REAL(wp) :: zcof ! local scalar 261 !!---------------------------------------------------------------------- 262 263 IF( wrk_in_use(3, 1,2,3,4) ) THEN 264 CALL ctl_stop('trd_dwr: requested workspace arrays unavailable') ; RETURN 265 ENDIF 260 REAL(wp), POINTER, DIMENSION(:,:,:) :: zkx, zky, zkz, zkepe 261 !!---------------------------------------------------------------------- 262 263 CALL wrk_alloc( jpi, jpj, jpk, zkx, zky, zkz, zkepe ) 266 264 267 265 ! I. Momentum trends … … 439 437 ENDIF 440 438 ! 441 IF( wrk_not_released(3, 1,2,3,4) ) CALL ctl_stop('trd_dwr: failed to release workspace arrays')439 CALL wrk_dealloc( jpi, jpj, jpk, zkx, zky, zkz, zkepe ) 442 440 ! 443 441 END SUBROUTINE trd_dwr -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRD/trdmld.F90
r2977 r3181 38 38 USE restart ! for lrst_oce 39 39 USE lib_mpp ! MPP library 40 USE wrk_nemo_2 ! Memory allocation 40 41 41 42 IMPLICIT NONE … … 93 94 !! surface and the control surface is called "mixed-layer" 94 95 !!---------------------------------------------------------------------- 95 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released96 USE wrk_nemo, ONLY: zvlmsk => wrk_2d_10 ! 2D workspace97 96 ! 98 97 INTEGER , INTENT( in ) :: ktrd ! ocean trend index … … 102 101 ! 103 102 INTEGER :: ji, jj, jk, isum 104 !!---------------------------------------------------------------------- 105 106 IF( wrk_in_use(2, 10) ) THEN 107 CALL ctl_stop('trd_mld_zint : requested workspace arrays unavailable') ; RETURN 108 ENDIF 103 REAL(wp), POINTER, DIMENSION(:,:) :: zvlmsk 104 !!---------------------------------------------------------------------- 105 106 CALL wrk_alloc( jpi, jpj, zvlmsk ) 109 107 110 108 ! I. Definition of control surface and associated fields … … 195 193 END SELECT 196 194 ! 197 IF( wrk_not_released(2, 10) ) CALL ctl_stop('trd_mld_zint: failed to release workspace arrays')195 CALL wrk_dealloc( jpi, jpj, zvlmsk ) 198 196 ! 199 197 END SUBROUTINE trd_mld_zint … … 247 245 !! - See NEMO documentation (in preparation) 248 246 !!---------------------------------------------------------------------- 249 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released250 USE wrk_nemo, ONLY: ztmltot => wrk_2d_1, zsmltot => wrk_2d_2 ! dT/dt over the anlysis window (including Asselin)251 USE wrk_nemo, ONLY: ztmlres => wrk_2d_3, zsmlres => wrk_2d_4 ! residual = dh/dt entrainment term252 USE wrk_nemo, ONLY: ztmlatf => wrk_2d_5, zsmlatf => wrk_2d_6 ! needed for storage only253 USE wrk_nemo, ONLY: ztmltot2 => wrk_2d_7, ztmlres2 => wrk_2d_8, ztmltrdm2 => wrk_2d_9 ! \ working arrays to diagnose the trends254 USE wrk_nemo, ONLY: zsmltot2 => wrk_2d_10, zsmlres2 => wrk_2d_11, zsmltrdm2 => wrk_2d_12 ! > associated with the time meaned ML T & S255 USE wrk_nemo, ONLY: ztmlatf2 => wrk_2d_13, zsmlatf2 => wrk_2d_14256 USE wrk_nemo, ONLY: wrk_3d_1, wrk_3d_2 ! /257 247 ! 258 248 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 261 251 LOGICAL :: lldebug = .TRUE. 262 252 REAL(wp) :: zavt, zfn, zfn2 253 ! ! z(ts)mltot : dT/dt over the anlysis window (including Asselin) 254 ! ! z(ts)mlres : residual = dh/dt entrainment term 255 REAL(wp), POINTER, DIMENSION(:,: ) :: ztmltot , zsmltot , ztmlres , zsmlres , ztmlatf , zsmlatf 256 REAL(wp), POINTER, DIMENSION(:,: ) :: ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2 263 257 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmltrd2, zsmltrd2 ! only needed for mean diagnostics 264 258 #if defined key_dimgout … … 267 261 #endif 268 262 !!---------------------------------------------------------------------- 269 270 ! Check that the workspace arrays are all OK to be used 271 IF( wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR. & 272 wrk_in_use(3, 1,2) ) THEN 273 CALL ctl_stop('trd_mld : requested workspace arrays unavailable') ; RETURN 274 ELSE IF(jpltrd > jpk) THEN 275 ! ARPDBG, is this reasonable or will this cause trouble in the future? 276 CALL ctl_stop('trd_mld : no. of mixed-layer trends (jpltrd) exceeds no. of model levels so cannot use 3D workspaces.') 277 RETURN 278 END IF 279 ! Set-up pointers into sub-arrays of 3d-workspaces 280 ztmltrd2 => wrk_3d_1(1:,:,1:jpltrd) 281 zsmltrd2 => wrk_3d_2(1:,:,1:jpltrd) 263 264 CALL wrk_alloc( jpi, jpj, ztmltot , zsmltot , ztmlres , zsmlres , ztmlatf , zsmlatf ) 265 CALL wrk_alloc( jpi, jpj, ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2 ) 266 CALL wrk_alloc( jpi, jpj, jpltrd, ztmltrd2, zsmltrd2 ) 282 267 283 268 ! ====================================================================== … … 740 725 IF( lrst_oce ) CALL trd_mld_rst_write( kt ) 741 726 742 IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR. &743 wrk_not_released(3, 1,2) ) &744 CALL ctl_stop('trd_mld : failed to release workspace arrays.')727 CALL wrk_dealloc( jpi, jpj, ztmltot , zsmltot , ztmlres , zsmlres , ztmlatf , zsmlatf ) 728 CALL wrk_dealloc( jpi, jpj, ztmltot2, zsmltot2, ztmlres2, zsmlres2, ztmlatf2, zsmlatf2, ztmltrdm2, zsmltrdm2 ) 729 CALL wrk_dealloc( jpi, jpj, jpltrd, ztmltrd2, zsmltrd2 ) 745 730 ! 746 731 END SUBROUTINE trd_mld -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRD/trdmod.F90
r2977 r3181 24 24 USE trdmld ! ocean active mixed layer tracers trends 25 25 USE in_out_manager ! I/O manager 26 USE lib_mpp ! MPP library 26 USE lib_mpp ! MPP library 27 USE wrk_nemo_2 ! Memory allocation 28 27 29 28 30 IMPLICIT NONE … … 52 54 !! integral constraints 53 55 !!---------------------------------------------------------------------- 54 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released55 USE wrk_nemo, ONLY: ztswu => wrk_2d_1, &56 ztswv => wrk_2d_2, &57 ztbfu => wrk_2d_3, &58 ztbfv => wrk_2d_4, &59 z2dx => wrk_2d_5, &60 z2dy => wrk_2d_661 56 ! 62 57 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: ptrdx ! Temperature or U trend … … 67 62 !! 68 63 INTEGER :: ji, jj ! dummy loop indices 69 !!---------------------------------------------------------------------- 70 71 IF(wrk_in_use(2, 1,2,3,4,5,6))THEN 72 CALL ctl_warn('trd_mod: Requested workspace arrays already in use.') ; RETURN 73 END IF 64 REAL(wp), POINTER, DIMENSION(:,:) :: ztswu, ztswv, ztbfu, ztbfv, z2dx, z2dy 65 !!---------------------------------------------------------------------- 66 67 CALL wrk_alloc( jpi, jpj, ztswu, ztswv, ztbfu, ztbfv, z2dx, z2dy ) 74 68 75 69 z2dx(:,:) = 0._wp ; z2dy(:,:) = 0._wp ! initialization of workspace arrays … … 227 221 ENDIF 228 222 ! 229 IF( wrk_not_released(2, 1,2,3,4,5,6) ) CALL ctl_warn('trd_mod: Failed to release workspace arrays.')223 CALL wrk_dealloc( jpi, jpj, ztswu, ztswv, ztbfu, ztbfv, z2dx, z2dy ) 230 224 ! 231 225 END SUBROUTINE trd_mod -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
r2715 r3181 18 18 USE in_out_manager ! I/O manager 19 19 USE lib_mpp ! MPP library 20 USE wrk_nemo_2 ! Memory allocation 21 20 22 21 23 IMPLICIT NONE … … 61 63 !! nn_ctls > 1 : use fixed level surface jk = nn_ctls 62 64 !!---------------------------------------------------------------------- 63 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released64 USE wrk_nemo, ONLY: ztrds => wrk_3d_10 ! 3D workspace65 65 ! 66 66 INTEGER , INTENT(in) :: kt ! time step … … 70 70 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: ptrd ! tracer trend or flux 71 71 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in), OPTIONAL :: pun ! velocity 72 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in), OPTIONAL :: ptra ! Tracer variable 73 ! !----------------------------------------------------------------------74 75 IF( wrk_in_use(3, 10) ) THEN76 CALL ctl_stop('trd_tra: requested workspace array unavailable') ; RETURN 77 ENDIF72 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in), OPTIONAL :: ptra ! Tracer variablea 73 ! 74 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrds 75 !!---------------------------------------------------------------------- 76 77 CALL wrk_alloc( jpi, jpj, jpk, ztrds ) 78 78 79 79 IF( .NOT. ALLOCATED( trdtx ) ) THEN ! allocate trdtra arrays … … 138 138 ENDIF 139 139 ! 140 IF( wrk_not_released(3, 10) ) CALL ctl_stop('trd_tra: failed to release workspace array')140 CALL wrk_dealloc( jpi, jpj, jpk, ztrds ) 141 141 ! 142 142 END SUBROUTINE trd_tra -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90
r2715 r3181 27 27 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 28 28 USE lib_mpp ! MPP library 29 USE wrk_nemo_2 ! Memory allocation 30 29 31 30 32 IMPLICIT NONE … … 107 109 !! trends output in netCDF format using ioipsl 108 110 !!---------------------------------------------------------------------- 109 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released110 USE wrk_nemo, ONLY: zudpvor => wrk_2d_1 , zvdpvor => wrk_2d_2 ! total cmulative trends111 111 ! 112 112 INTEGER , INTENT(in ) :: ktrd ! ocean trend index … … 116 116 INTEGER :: ji, jj ! dummy loop indices 117 117 INTEGER :: ikbu, ikbv ! local integers 118 !!----------------------------------------------------------------------119 120 IF( wrk_in_use(2, 1,2) ) THEN 121 CALL ctl_stop('trd_vor_zint_2d: requested workspace arrays unavailable') ; RETURN122 ENDIF123 124 ! Initialization 125 zudpvor(:,:) = 0._wp ; zvdpvor(:,:) = 0._wp 118 REAL(wp), POINTER, DIMENSION(:,:) :: zudpvor, zvdpvor ! total cmulative trends 119 !!---------------------------------------------------------------------- 120 121 ! 122 CALL wrk_alloc( jpi, jpj, zudpvor, zvdpvor ) ! Memory allocation 123 ! 124 125 zudpvor(:,:) = 0._wp ; zvdpvor(:,:) = 0._wp ! Initialisation 126 126 CALL lbc_lnk( putrdvor, 'U', -1. ) ; CALL lbc_lnk( pvtrdvor, 'V', -1. ) ! lateral boundary condition 127 127 … … 167 167 ENDIF 168 168 ! 169 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('trd_vor_zint_2d : failed to release workspace arrays.')169 CALL wrk_dealloc( jpi, jpj, zudpvor, zvdpvor ) 170 170 ! 171 171 END SUBROUTINE trd_vor_zint_2d … … 199 199 !! trends output in netCDF format using ioipsl 200 200 !!---------------------------------------------------------------------- 201 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released202 USE wrk_nemo, ONLY: zubet => wrk_2d_1, zvbet => wrk_2d_2 ! Beta.V203 USE wrk_nemo, ONLY: zudpvor => wrk_2d_3, zvdpvor => wrk_2d_4 ! total cmulative trends204 201 ! 205 202 INTEGER , INTENT(in ) :: ktrd ! ocean trend index … … 208 205 ! 209 206 INTEGER :: ji, jj, jk ! dummy loop indices 207 REAL(wp), POINTER, DIMENSION(:,: ) :: zubet , zvbet ! Beta.V 208 REAL(wp), POINTER, DIMENSION(:,:,:) :: zudpvor, zvdpvor ! total cmulative trends 210 209 !!---------------------------------------------------------------------- 211 210 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 211 CALL wrk_alloc( jpi, jpj, zubet , zvbet ) 212 CALL wrk_alloc( jpi, jpj, jpk, zudpvor, zvdpvor ) 215 213 216 214 ! Initialization … … 276 274 ENDIF 277 275 ! 278 IF( wrk_not_released(2, 1,2,3,4) ) CALL ctl_stop('trd_vor_zint_3d: failed to release workspace arrays') 276 CALL wrk_dealloc( jpi, jpj, zubet , zvbet ) 277 CALL wrk_dealloc( jpi, jpj, jpk, zudpvor, zvdpvor ) 279 278 ! 280 279 END SUBROUTINE trd_vor_zint_3d … … 288 287 !! and make outputs (NetCDF or DIMG format) 289 288 !!---------------------------------------------------------------------- 290 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released291 USE wrk_nemo, ONLY: zun => wrk_2d_1 , zvn => wrk_2d_2 ! 2D workspace292 289 ! 293 290 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 296 293 INTEGER :: it, itmod ! local integers 297 294 REAL(wp) :: zmean ! local scalars 298 !!---------------------------------------------------------------------- 299 300 IF( wrk_in_use(2, 1,2) ) THEN 301 CALL ctl_stop('trd_vor: requested workspace arrays unavailable.') ; RETURN 302 ENDIF 295 REAL(wp), POINTER, DIMENSION(:,:) :: zun, zvn 296 !!---------------------------------------------------------------------- 297 298 CALL wrk_alloc( jpi, jpj, zun, zvn ) 303 299 304 300 ! ================= … … 467 463 IF( kt == nitend ) CALL histclo( nidvor ) 468 464 ! 469 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('trd_vor: failed to release workspace arrays')465 CALL wrk_dealloc( jpi, jpj, zun, zvn ) 470 466 ! 471 467 END SUBROUTINE trd_vor
Note: See TracChangeset
for help on using the changeset viewer.