- Timestamp:
- 2011-02-22T18:14:28+01:00 (13 years ago)
- Location:
- branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r2607 r2608 590 590 USE trcdta, ONLY: trc_dta_alloc 591 591 #endif 592 #if defined key_top && ( defined key_trdmld_trc || defined key_esopa ) 593 USE trdmld_trc, ONLY: trd_mld_trc_alloc 594 #endif 592 595 ! ...end of TOP-related alloc routines 593 596 … … 762 765 #if defined key_top && defined key_dtatrc 763 766 ierr = ierr + trc_dta_alloc() 767 #endif 768 #if defined key_top && ( defined key_trdmld_trc || defined key_esopa ) 769 ierr = ierr + trd_mld_trc_alloc() 764 770 #endif 765 771 ! ...end of TOP-related alloc routines -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
r2606 r2608 74 74 !! ** Method : - Update the tracer with the advection term following nadv 75 75 !!---------------------------------------------------------------------- 76 USE wrk_nemo, ONLY: wrk_use, wrk_release 77 USE wrk_nemo, ONLY: zun => wrk_3d_1, zvn => wrk_3d_2, & 78 zwn => wrk_3d_3 ! effective velocity 76 79 !! 77 80 INTEGER, INTENT( in ) :: kt ! ocean time-step index 78 81 ! 79 82 INTEGER :: jk 80 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zun, zvn, zwn ! effective velocity81 83 CHARACTER (len=22) :: charout 82 84 !!---------------------------------------------------------------------- 85 86 IF(.NOT. wrk_use(3, 1,2,3))THEN 87 CALL ctl_stop('trc_adv : requested workspace arrays unavailable.') 88 RETURN 89 END IF 83 90 84 91 IF( kt == nit000 ) CALL trc_adv_ctl ! initialisation & control of options … … 141 148 WRITE(charout, FMT="('adv ')") ; CALL prt_ctl_trc_info(charout) 142 149 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 150 END IF 151 ! 152 IF(.NOT. wrk_release(3, 1,2,3))THEN 153 CALL ctl_stop('trc_adv : failed to release workspace arrays.') 143 154 END IF 144 155 ! -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
r2528 r2608 60 60 !! 61 61 !!---------------------------------------------------------------------- 62 USE wrk_nemo, ONLY: wrk_use, wrk_release 63 USE wrk_nemo, zemps => wrk_2d_1 62 64 !! * Arguments 63 65 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 66 68 INTEGER :: ji, jj, jn ! dummy loop indices 67 69 REAL(wp) :: zsrau, zse3t ! temporary scalars 68 REAL(wp), DIMENSION(jpi,jpj) :: zemps ! surface freshwater flux69 70 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrtrd 70 71 CHARACTER (len=22) :: charout 71 72 !!---------------------------------------------------------------------- 73 74 IF(.NOT. wrk_use(2, 1))THEN 75 CALL ctl_stop('trc_sbc: requested workspace array unavailable.') 76 RETURN 77 END IF 72 78 73 79 IF( kt == nit000 ) THEN … … 120 126 ENDIF 121 127 128 IF(.NOT. wrk_release(2, 1))THEN 129 CALL ctl_stop('trc_sbc: failed to release workspace array.') 130 END IF 131 122 132 END SUBROUTINE trc_sbc 123 133 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90
r2528 r2608 39 39 40 40 PUBLIC trd_mld_trc 41 PUBLIC trd_mld_trc_alloc 41 42 PUBLIC trd_mld_bio 42 43 PUBLIC trd_mld_trc_init … … 58 59 LOGICAL :: lldebug = .TRUE. 59 60 61 ! Workspace array for trd_mld_trc() routine. Declared here as is 4D and 62 ! cannot use workspaces in wrk_nemo module. 63 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: ztmltrd2 ! 64 #if defined key_lobster 65 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ztmltrdbio2 ! only needed for mean diagnostics in trd_mld_bio() 66 #endif 67 60 68 !! * Substitutions 61 69 # include "top_substitute.h90" … … 67 75 68 76 CONTAINS 77 78 FUNCTION trd_mld_trc_alloc 79 !!---------------------------------------------------------------------- 80 !! *** ROUTINE trd_mld_trc_alloc *** 81 !!---------------------------------------------------------------------- 82 INTEGER :: trd_mld_trc_alloc 83 !!---------------------------------------------------------------------- 84 85 ALLOCATE(ztmltrd2(jpi,jpj,jpltrd_trc,jptra), & 86 #if defined key_lobster 87 ztmltrdbio2(jpi,jpj,jpdiabio) , & 88 #endif 89 Stat=trd_mld_trc_alloc) 90 91 IF(trd_mld_trc_alloc/=0)THEN 92 CALL ctl_warn('trd_mld_trc_alloc : failed to allocate arrays.') 93 END IF 94 95 END FUNCTION trd_mld_trc_alloc 96 69 97 70 98 SUBROUTINE trd_mld_trc_zint( ptrc_trdmld, ktrd, ctype, kjn ) … … 88 116 !! surface and the control surface is called "mixed-layer" 89 117 !!---------------------------------------------------------------------- 118 USE wrk_nemo, ONLY: wrk_use, wrk_release 119 USE wrk_nemo, ONLY: zvlmsk => wrk_2d_1 120 !! 90 121 INTEGER, INTENT( in ) :: ktrd, kjn ! ocean trend index and passive tracer rank 91 122 CHARACTER(len=2), INTENT( in ) :: ctype ! surface/bottom (2D) or interior (3D) physics 92 123 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) :: ptrc_trdmld ! passive tracer trend 93 124 INTEGER :: ji, jj, jk, isum 94 REAL(wp), DIMENSION(jpi,jpj) :: zvlmsk 95 !!---------------------------------------------------------------------- 125 !!---------------------------------------------------------------------- 126 127 IF(.NOT. wrk_use(2, 1))THEN 128 CALL ctl_stop('trd_mld_trc_zint : requested workspace array unavailable.') 129 RETURN 130 END IF 96 131 97 132 ! I. Definition of control surface and integration weights … … 178 213 END SELECT 179 214 215 IF(.NOT. wrk_release(2, 1))THEN 216 CALL ctl_stop('trd_mld_trc_zint : failed to release workspace array.') 217 END IF 218 180 219 END SUBROUTINE trd_mld_trc_zint 181 220 … … 198 237 !! surface and the control surface is called "mixed-layer" 199 238 !!---------------------------------------------------------------------- 239 USE wrk_nemo, ONLY: wrk_use, wrk_release 240 USE wrk_nemo, ONLY: zvlmsk => wrk_2d_1 241 !! 200 242 INTEGER, INTENT( in ) :: ktrd ! bio trend index 201 243 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) :: ptrc_trdmld ! passive trc trend … … 203 245 !! local variables 204 246 INTEGER :: ji, jj, jk, isum 205 REAL(wp), DIMENSION(jpi,jpj) :: zvlmsk 206 !!---------------------------------------------------------------------- 247 !!---------------------------------------------------------------------- 248 249 IF(.NOT. wrk_use(2, 1))THEN 250 CALL ctl_stop('trd_mld_bio_zint : requested workspace array unavailable.') 251 RETURN 252 END IF 207 253 208 254 ! I. Definition of control surface and integration weights … … 286 332 END DO 287 333 334 IF(.NOT. wrk_release(2, 1))THEN 335 CALL ctl_stop('trd_mld_bio_zint : failed to release workspace array.') 336 END IF 288 337 #endif 289 338 … … 338 387 !! - See NEMO documentation (in preparation) 339 388 !!---------------------------------------------------------------------- 389 USE wrk_nemo, ONLY: wrk_use, wrk_release 390 USE wrk_nemo, wrk_3d_1, wrk_3d_2, wrk_3d_3, wrk_3d_4, & 391 wrk_3d_5, wrk_3d_6, wrk_3d_7, wrk_3d_8, & 392 wrk_3d_9 340 393 INTEGER, INTENT( in ) :: kt ! ocean time-step index 341 394 INTEGER :: ji, jj, jk, jl, ik, it, itmod, jn 342 395 REAL(wp) :: zavt, zfn, zfn2 343 396 !! 344 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmltot ! d(trc)/dt over the anlysis window (incl. Asselin)345 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmlres ! residual = dh/dt entrainment term346 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmlatf ! for storage only347 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmlrad ! for storage only (for trb<0 corr in trcrad)348 !! 349 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmltot2 ! -+350 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmlres2 ! | working arrays to diagnose the trends351 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmltrdm2 ! | associated with the time meaned ML352 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmlatf2 ! | passive tracers353 REAL(wp), DIMENSION(jpi,jpj,jptra) :: ztmlrad2 ! | (-> for trb<0 corr in trcrad)354 REAL(wp), DIMENSION(jpi,jpj,jpltrd_trc,jptra) :: ztmltrd2 ! -+397 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmltot ! d(trc)/dt over the anlysis window (incl. Asselin) 398 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlres ! residual = dh/dt entrainment term 399 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlatf ! for storage only 400 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlrad ! for storage only (for trb<0 corr in trcrad) 401 !! 402 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmltot2 ! -+ 403 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlres2 ! | working arrays to diagnose the trends 404 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmltrdm2 ! | associated with the time meaned ML 405 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlatf2 ! | passive tracers 406 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlrad2 ! | (-> for trb<0 corr in trcrad) 407 !REAL(wp), DIMENSION(jpi,jpj,jpltrd_trc,jptra) :: ztmltrd2 ! -+ 355 408 !! 356 409 CHARACTER (LEN= 5) :: clvar … … 360 413 #endif 361 414 !!---------------------------------------------------------------------- 415 416 IF(.NOT. wrk_use(3, 1,2,3,4,5,6,7,8,9))THEN 417 CALL ctl_stop('trd_mld_trc : requested workspace arrays unavailable.') 418 RETURN 419 END IF 420 ! Set-up pointers into sub-arrays of workspaces 421 ztmltot => wrk_3d_1(:,:,1:jptra) 422 ztmlres => wrk_3d_2(:,:,1:jptra) 423 ztmlatf => wrk_3d_3(:,:,1:jptra) 424 ztmlrad => wrk_3d_4(:,:,1:jptra) 425 ztmltot2 => wrk_3d_5(:,:,1:jptra) 426 ztmlres2 => wrk_3d_6(:,:,1:jptra) 427 ztmltrdm2 => wrk_3d_7(:,:,1:jptra) 428 ztmlatf2 => wrk_3d_8(:,:,1:jptra) 429 ztmlrad2 => wrk_3d_9(:,:,1:jptra) 430 362 431 363 432 IF( nn_dttrc /= 1 ) CALL ctl_stop( " Be careful, trends diags never validated " ) … … 847 916 IF( lrst_trc ) CALL trd_mld_trc_rst_write( kt ) ! this must be after the array swap above (III.3) 848 917 918 IF(.NOT. wrk_release(3, 1,2,3,4,5,6,7,8,9))THEN 919 CALL ctl_stop('trd_mld_trc : failed to release workspace arrays.') 920 END IF 921 ! 849 922 END SUBROUTINE trd_mld_trc 850 923 … … 900 973 INTEGER :: jl, it, itmod 901 974 LOGICAL :: llwarn = .TRUE., lldebug = .TRUE. 902 REAL(wp), DIMENSION(jpi,jpj,jpdiabio) :: ztmltrdbio2 ! only needed for mean diagnostics903 975 REAL(wp) :: zfn, zfn2 904 976 #if defined key_dimgout
Note: See TracChangeset
for help on using the changeset viewer.