Changeset 3294 for trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90
r2715 r3294 33 33 USE trdmld_trc_rst ! restart for diagnosing the ML trends 34 34 USE prtctl ! print control 35 USE sms_pisces 36 USE sms_lobster 35 USE sms_pisces ! PISCES bio-model 36 USE sms_lobster ! LOBSTER bio-model 37 37 38 38 IMPLICIT NONE … … 60 60 LOGICAL :: lldebug = .TRUE. 61 61 62 ! Workspace array for trd_mld_trc() routine. Declared here as is 4D and63 ! cannot use workspaces in wrk_nemo module.64 62 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: ztmltrd2 ! 65 63 #if defined key_lobster … … 112 110 !! surface and the control surface is called "mixed-layer" 113 111 !!---------------------------------------------------------------------- 114 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released115 USE wrk_nemo, ONLY: zvlmsk => wrk_2d_1116 112 !! 117 113 INTEGER, INTENT( in ) :: ktrd, kjn ! ocean trend index and passive tracer rank 118 114 CHARACTER(len=2), INTENT( in ) :: ctype ! surface/bottom (2D) or interior (3D) physics 119 115 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) :: ptrc_trdmld ! passive tracer trend 116 ! 120 117 INTEGER :: ji, jj, jk, isum 121 !!---------------------------------------------------------------------- 122 123 IF( wrk_in_use(2, 1) ) THEN 124 CALL ctl_stop('trd_mld_trc_zint: requested workspace array unavailable') ; RETURN 125 ENDIF 118 REAL(wp), POINTER, DIMENSION(:,:) :: zvlmsk 119 !!---------------------------------------------------------------------- 120 121 CALL wrk_alloc( jpi, jpj, zvlmsk ) 126 122 127 123 ! I. Definition of control surface and integration weights … … 208 204 END SELECT 209 205 ! 210 IF( wrk_not_released(2, 1) ) CALL ctl_stop('trd_mld_trc_zint: failed to release workspace array')206 CALL wrk_dealloc( jpi, jpj, zvlmsk ) 211 207 ! 212 208 END SUBROUTINE trd_mld_trc_zint … … 231 227 !! surface and the control surface is called "mixed-layer" 232 228 !!---------------------------------------------------------------------- 233 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released234 USE wrk_nemo, ONLY: zvlmsk => wrk_2d_1235 229 !! 236 230 INTEGER , INTENT(in) :: ktrd ! bio trend index … … 239 233 ! 240 234 INTEGER :: ji, jj, jk, isum 241 !!---------------------------------------------------------------------- 242 243 IF( wrk_in_use(2, 1) ) THEN 244 CALL ctl_stop('trd_mld_bio_zint: requested workspace array unavailable') ; RETURN 245 ENDIF 235 REAL(wp), POINTER, DIMENSION(:,:) :: zvlmsk 236 !!---------------------------------------------------------------------- 237 238 CALL wrk_alloc( jpi, jpj, zvlmsk ) 246 239 247 240 ! I. Definition of control surface and integration weights … … 325 318 END DO 326 319 327 IF( wrk_not_released(2, 1) ) CALL ctl_stop('trd_mld_bio_zint: failed to release workspace array')320 CALL wrk_alloc( jpi, jpj, zvlmsk ) 328 321 #endif 329 322 ! … … 378 371 !! - See NEMO documentation (in preparation) 379 372 !!---------------------------------------------------------------------- 380 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released381 USE wrk_nemo, ONLY: wrk_3d_1, wrk_3d_2, wrk_3d_3, wrk_3d_4382 USE wrk_nemo, ONLY: wrk_3d_5, wrk_3d_6, wrk_3d_7, wrk_3d_8, wrk_3d_9383 373 ! 384 374 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 397 387 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlatf2 ! | passive tracers 398 388 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlrad2 ! | (-> for trb<0 corr in trcrad) 399 !REAL(wp), DIMENSION(jpi,jpj,jpltrd_trc,jptra) :: ztmltrd2 ! -+400 389 ! 401 390 CHARACTER (LEN= 5) :: clvar … … 406 395 !!---------------------------------------------------------------------- 407 396 408 IF( wrk_in_use(3, 1,2,3,4,5,6,7,8,9) ) THEN409 CALL ctl_stop('trd_mld_trc : requested workspace arrays unavailable') ; RETURN410 ENDIF411 397 ! Set-up pointers into sub-arrays of workspaces 412 ztmltot => wrk_3d_1(:,:,1:jptra) 413 ztmlres => wrk_3d_2(:,:,1:jptra) 414 ztmlatf => wrk_3d_3(:,:,1:jptra) 415 ztmlrad => wrk_3d_4(:,:,1:jptra) 416 ztmltot2 => wrk_3d_5(:,:,1:jptra) 417 ztmlres2 => wrk_3d_6(:,:,1:jptra) 418 ztmltrdm2 => wrk_3d_7(:,:,1:jptra) 419 ztmlatf2 => wrk_3d_8(:,:,1:jptra) 420 ztmlrad2 => wrk_3d_9(:,:,1:jptra) 421 398 CALL wrk_alloc( jpi, jpj, jptra, ztmltot , ztmlres , ztmlatf , ztmlrad ) 399 CALL wrk_alloc( jpi, jpj, jptra, ztmltot2, ztmlres2, ztmlatf2, ztmlrad2, ztmltrdm2 ) 422 400 423 401 IF( nn_dttrc /= 1 ) CALL ctl_stop( " Be careful, trends diags never validated " ) … … 475 453 ! II.1 Set before values of vertically averages passive tracers 476 454 ! ------------------------------------------------------------- 477 IF( kt > nit 000 ) THEN455 IF( kt > nittrc000 ) THEN 478 456 DO jn = 1, jptra 479 457 IF( ln_trdtrc(jn) ) THEN … … 497 475 ! II.3 Initialize mixed-layer "before" arrays for the 1rst analysis window 498 476 ! ------------------------------------------------------------------------ 499 IF( kt == 2) THEN ! i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1) ???477 IF( kt == nittrc000 + nn_dttrc ) THEN ! i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1) ??? 500 478 ! 501 479 DO jn = 1, jptra … … 560 538 tmltrd_trc(:,:,:,:) = tmltrd_trc(:,:,:,:) * rn_ucf_trc 561 539 562 itmod = kt - nit 000 + 1540 itmod = kt - nittrc000 + 1 563 541 it = kt 564 542 … … 907 885 IF( lrst_trc ) CALL trd_mld_trc_rst_write( kt ) ! this must be after the array swap above (III.3) 908 886 909 IF( wrk_not_released(3, 1,2,3,4,5,6,7,8,9) ) CALL ctl_stop('trd_mld_trc: failed to release workspace arrays') 887 CALL wrk_dealloc( jpi, jpj, jptra, ztmltot , ztmlres , ztmlatf , ztmlrad ) 888 CALL wrk_dealloc( jpi, jpj, jptra, ztmltot2, ztmlres2, ztmlatf2, ztmlrad2, ztmltrdm2 ) 910 889 ! 911 890 END SUBROUTINE trd_mld_trc … … 980 959 ! II.3 Initialize mixed-layer "before" arrays for the 1rst analysis window 981 960 ! ------------------------------------------------------------------------ 982 IF( kt == 2) THEN ! i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1)961 IF( kt == nittrc000 + nn_dttrc ) THEN ! i.e. ( .NOT. ln_rstart ).AND.( kt == nit000 + 1) 983 962 ! 984 963 tmltrd_csum_ub_bio (:,:,:) = 0.e0 … … 1086 1065 1087 1066 ! define time axis 1088 itmod = kt - nit 000 + 11067 itmod = kt - nittrc000 + 1 1089 1068 it = kt 1090 1069 … … 1331 1310 zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment 1332 1311 IF(lwp) WRITE(numout,*)' ' 1333 IF(lwp) WRITE(numout,*)' Date 0 used :', nit 000&1312 IF(lwp) WRITE(numout,*)' Date 0 used :', nittrc000 & 1334 1313 & ,' YEAR ', nyear, ' MONTH ', nmonth,' DAY ', nday & 1335 1314 & ,'Julian day : ', zjulian … … 1360 1339 CALL dia_nam( clhstnam, nn_trd_trc, csuff ) 1361 1340 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 1362 & 1, jpi, 1, jpj, nit 000, zjulian, rdt, nh_t(jn), nidtrd(jn), domain_id=nidom, snc4chunks=snc4set )1341 & 1, jpi, 1, jpj, nittrc000, zjulian, rdt, nh_t(jn), nidtrd(jn), domain_id=nidom, snc4chunks=snc4set ) 1363 1342 1364 1343 !-- Define the ML depth variable … … 1373 1352 CALL dia_nam( clhstnam, nn_trd_trc, 'trdbio' ) 1374 1353 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 1375 & 1, jpi, 1, jpj, nit 000, zjulian, rdt, nh_tb, nidtrdbio, domain_id=nidom, snc4chunks=snc4set )1354 & 1, jpi, 1, jpj, nittrc000, zjulian, rdt, nh_tb, nidtrdbio, domain_id=nidom, snc4chunks=snc4set ) 1376 1355 #endif 1377 1356
Note: See TracChangeset
for help on using the changeset viewer.