Changeset 3159
- Timestamp:
- 2011-11-18T22:41:44+01:00 (12 years ago)
- Location:
- branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA
- Files:
-
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r3116 r3159 37 37 USE lib_mpp ! MPP library 38 38 USE prtctl ! Print control 39 USE wrk_nemo_2 ! Memory Allocation 40 USE timing ! Timing 39 41 40 42 IMPLICIT NONE … … 108 110 !! References : Jackett and McDougall, J. Atmos. Ocean. Tech., 1994 109 111 !!---------------------------------------------------------------------- 110 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released111 USE wrk_nemo, ONLY: zws => wrk_3d_1 ! 3D workspace112 112 !! 113 113 REAL(wp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celcius] … … 122 122 REAL(wp) :: zb1, za1, zkw, zk0 ! - - 123 123 REAL(wp) :: zrau0r ! - - 124 !!---------------------------------------------------------------------- 125 126 IF( wrk_in_use(3, 1) ) THEN 127 CALL ctl_stop('eos_insitu: requested workspace array unavailable') ; RETURN 128 ENDIF 129 124 REAL(wp), POINTER, DIMENSION(:,:,:) :: zws 125 !!---------------------------------------------------------------------- 126 127 ! 128 IF( nn_timing == 1 ) CALL timing_start('eos') 129 ! 130 CALL wrk_alloc( jpi, jpj, jpk, zws ) 131 ! 130 132 SELECT CASE( nn_eos ) 131 133 ! … … 191 193 IF(ln_ctl) CALL prt_ctl( tab3d_1=prd, clinfo1=' eos : ', ovlap=1, kdim=jpk ) 192 194 ! 193 IF( wrk_not_released(3, 1) ) CALL ctl_stop('eos_insitu: failed to release workspace array') 195 CALL wrk_dealloc( jpi, jpj, jpk, zws ) 196 ! 197 IF( nn_timing == 1 ) CALL timing_stop('eos') 194 198 ! 195 199 END SUBROUTINE eos_insitu … … 242 246 !! Brown and Campana, Mon. Weather Rev., 1978 243 247 !!---------------------------------------------------------------------- 244 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released245 USE wrk_nemo, ONLY: zws => wrk_3d_1 ! 3D workspace246 248 !! 247 249 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celcius] … … 253 255 REAL(wp) :: zt, zs, zh, zsr, zr1, zr2, zr3, zr4, zrhop, ze, zbw ! local scalars 254 256 REAL(wp) :: zb, zd, zc, zaw, za, zb1, za1, zkw, zk0, zrau0r ! - - 255 !!---------------------------------------------------------------------- 256 257 IF( wrk_in_use(3, 1) ) THEN 258 CALL ctl_stop('eos_insitu_pot: requested workspace array unavailable') ; RETURN 259 ENDIF 260 257 REAL(wp), POINTER, DIMENSION(:,:,:) :: zws 258 !!---------------------------------------------------------------------- 259 ! 260 IF( nn_timing == 1 ) CALL timing_start('eos-p') 261 ! 262 CALL wrk_alloc( jpi, jpj, jpk, zws ) 263 ! 261 264 SELECT CASE ( nn_eos ) 262 265 ! … … 327 330 IF(ln_ctl) CALL prt_ctl( tab3d_1=prd, clinfo1=' eos-p: ', tab3d_2=prhop, clinfo2=' pot : ', ovlap=1, kdim=jpk ) 328 331 ! 329 IF( wrk_not_released(3, 1) ) CALL ctl_stop('eos_insitu_pot: failed to release workspace array') 332 CALL wrk_dealloc( jpi, jpj, jpk, zws ) 333 ! 334 IF( nn_timing == 1 ) CALL timing_stop('eos-p') 330 335 ! 331 336 END SUBROUTINE eos_insitu_pot … … 368 373 !! References : Jackett and McDougall, J. Atmos. Ocean. Tech., 1994 369 374 !!---------------------------------------------------------------------- 370 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released371 USE wrk_nemo, ONLY: zws => wrk_2d_5 ! 2D workspace372 375 !! 373 376 REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celcius] … … 379 382 REAL(wp) :: zt, zs, zh, zsr, zr1, zr2, zr3, zr4, zrhop, ze, zbw ! temporary scalars 380 383 REAL(wp) :: zb, zd, zc, zaw, za, zb1, za1, zkw, zk0, zmask ! - - 381 !!---------------------------------------------------------------------- 382 383 IF( wrk_in_use(2, 5) ) THEN 384 CALL ctl_stop('eos_insitu_2d: requested workspace array unavailable') ; RETURN 385 ENDIF 384 REAL(wp), POINTER, DIMENSION(:,:) :: zws 385 !!---------------------------------------------------------------------- 386 ! 387 IF( nn_timing == 1 ) CALL timing_start('eos2d') 388 ! 389 CALL wrk_alloc( jpi, jpj, zws ) 390 ! 386 391 387 392 prd(:,:) = 0._wp … … 457 462 IF(ln_ctl) CALL prt_ctl( tab2d_1=prd, clinfo1=' eos2d: ' ) 458 463 ! 459 IF( wrk_not_released(2, 5) ) CALL ctl_stop('eos_insitu_2d: failed to release workspace array') 464 CALL wrk_dealloc( jpi, jpj, zws ) 465 ! 466 IF( nn_timing == 1 ) CALL timing_stop('eos2d') 460 467 ! 461 468 END SUBROUTINE eos_insitu_2d … … 503 510 !!---------------------------------------------------------------------- 504 511 512 ! 513 IF( nn_timing == 1 ) CALL timing_start('bn2') 514 ! 505 515 ! pn2 : interior points only (2=< jk =< jpkm1 ) 506 516 ! -------------------------- … … 584 594 #endif 585 595 ! 596 IF( nn_timing == 1 ) CALL timing_stop('bn2') 597 ! 586 598 END SUBROUTINE eos_bn2 587 599 … … 615 627 REAL(wp) :: zt, zs, zh ! local scalars 616 628 !!---------------------------------------------------------------------- 629 ! 630 IF( nn_timing == 1 ) CALL timing_start('eos_alpbet') 617 631 ! 618 632 SELECT CASE ( nn_eos ) … … 659 673 END SELECT 660 674 ! 675 IF( nn_timing == 1 ) CALL timing_stop('eos_alpbet') 676 ! 661 677 END SUBROUTINE eos_alpbet 662 678 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
r3116 r3159 27 27 USE prtctl ! Print control 28 28 USE lib_mpp ! MPP library 29 USE wrk_nemo_2 ! Memory Allocation 30 USE timing ! Timing 31 29 32 30 33 IMPLICIT NONE … … 62 65 !! ** Method : - Update (ua,va) with the advection term following nadv 63 66 !!---------------------------------------------------------------------- 64 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released65 USE wrk_nemo, ONLY: zun => wrk_3d_1 , zvn => wrk_3d_2 , zwn => wrk_3d_3 ! 3D workspace66 67 ! 67 68 INTEGER, INTENT( in ) :: kt ! ocean time-step index 68 69 ! 69 70 INTEGER :: jk ! dummy loop index 70 !!---------------------------------------------------------------------- 71 ! 72 IF( wrk_in_use(3, 1,2,3) ) THEN 73 CALL ctl_stop('tra_adv: requested workspace arrays unavailable') ; RETURN 74 ENDIF 71 REAL(wp), POINTER, DIMENSION(:,:,:) :: zun, zvn, zwn 72 !!---------------------------------------------------------------------- 73 ! 74 IF( nn_timing == 1 ) CALL timing_start('tra_adv') 75 ! 76 CALL wrk_alloc( jpi, jpj, jpk, zun, zvn, zwn ) 75 77 ! ! set time step 76 78 IF( neuler == 0 .AND. kt == nit000 ) THEN ! at nit000 … … 132 134 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 133 135 ! 134 IF( wrk_not_released(3,1,2,3) ) CALL ctl_stop('tra_adv: failed to release workspace arrays') 135 ! 136 IF( nn_timing == 1 ) CALL timing_stop('tra_adv') 137 ! 138 CALL wrk_dealloc( jpi, jpj, jpk, zun, zvn, zwn ) 139 ! 136 140 END SUBROUTINE tra_adv 137 141 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90
r3116 r3159 32 32 USE trc_oce ! share passive tracers/Ocean variables 33 33 USE lib_mpp ! MPP library 34 USE wrk_nemo_2 ! Memory Allocation 35 USE timing ! Timing 34 36 35 37 IMPLICIT NONE … … 110 112 !! - save trends if needed 111 113 !!---------------------------------------------------------------------- 112 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released113 114 USE oce , ONLY: zwx => ua , zwy => va ! (ua,va) used as 3D workspace 114 USE wrk_nemo, ONLY: zwz => wrk_3d_12 , zind => wrk_3d_13 ! 3D workspace115 USE wrk_nemo, ONLY: ztfreez => wrk_2d_1 ! 2D -116 115 ! 117 116 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 130 129 REAL(wp) :: zupsut, zcenut, zupst ! - - 131 130 REAL(wp) :: zupsvt, zcenvt, zcent, zice ! - - 132 !!---------------------------------------------------------------------- 133 134 IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 12,13) ) THEN 135 CALL ctl_stop('tra_adv_cen2: requested workspace arrays unavailable') ; RETURN 136 ENDIF 131 REAL(wp), POINTER, DIMENSION(:,: ) :: ztfreez 132 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwz, zind 133 !!---------------------------------------------------------------------- 134 ! 135 IF( nn_timing == 1 ) CALL timing_start('tra_adv_cen2') 136 ! 137 CALL wrk_alloc( jpi, jpj, ztfreez ) 138 CALL wrk_alloc( jpi, jpj, jpk, zwz, zind ) 139 ! 137 140 138 141 IF( kt == kit000 ) THEN … … 279 282 ENDIF 280 283 ! 281 IF( wrk_not_released(2, 1) .OR. & 282 wrk_not_released(3, 12,13) ) CALL ctl_stop('tra_adv_cen2: failed to release workspace arrays') 284 CALL wrk_dealloc( jpi, jpj, ztfreez ) 285 CALL wrk_dealloc( jpi, jpj, jpk, zwz, zind ) 286 ! 287 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_cen2') 283 288 ! 284 289 END SUBROUTINE tra_adv_cen2 … … 300 305 !!---------------------------------------------------------------------- 301 306 307 ! 308 IF( nn_timing == 1 ) CALL timing_start('ups_orca_set') 309 ! 302 310 ! mixed upstream/centered scheme near river mouths 303 311 ! ------------------------------------------------ … … 343 351 CALL clo_ups( upsmsk(:,:) ) 344 352 ! 353 IF( nn_timing == 1 ) CALL timing_stop('ups_orca_set') 354 ! 345 355 END SUBROUTINE ups_orca_set 346 356 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90
r3116 r3159 27 27 USE diaar5, ONLY: lk_diaar5 28 28 # endif 29 USE wrk_nemo_2 ! Memory Allocation 30 USE timing ! Timing 29 31 30 32 IMPLICIT NONE … … 63 65 !! ** Action : - add to p.n the eiv component 64 66 !!---------------------------------------------------------------------- 65 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released66 USE wrk_nemo, ONLY: zu_eiv => wrk_2d_1 , zv_eiv => wrk_2d_2 , zw_eiv => wrk_2d_3 ! 2D workspace67 # if defined key_diaeiv68 USE wrk_nemo, ONLY: z2d => wrk_2d_4 ! 2D workspace69 #endif70 67 INTEGER , INTENT(in ) :: kt ! ocean time-step index 71 68 INTEGER , INTENT(in ) :: kit000 ! first time step index … … 81 78 REAL(wp) :: zztmp ! local scalar 82 79 # endif 80 REAL(wp), POINTER, DIMENSION(:,:) :: zu_eiv, zv_eiv, zw_eiv, z2d 83 81 !!---------------------------------------------------------------------- 84 85 # if defined key_diaeiv 86 IF( wrk_in_use(2, 1,2,3,4) ) THEN 82 ! 83 IF( nn_timing == 1 ) CALL timing_start( 'tra_adv_eiv') 84 ! 85 # if defined key_diaeiv 86 CALL wrk_alloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv, z2d ) 87 87 # else 88 IF( wrk_in_use(2, 1,2,3) ) THEN 89 # endif 90 CALL ctl_stop('tra_adv_eiv: requested workspace arrays are unavailable') ; RETURN 91 ENDIF 88 CALL wrk_alloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv ) 89 # endif 92 90 93 91 IF( kt == kit000 ) THEN … … 192 190 ! 193 191 # if defined key_diaeiv 194 IF( wrk_not_released(2, 1,2,3,4) ) CALL ctl_stop('tra_adv_eiv: failed to release workspace arrays')192 CALL wrk_dealloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv, z2d ) 195 193 # else 196 IF( wrk_not_released(2, 1,2,3) ) CALL ctl_stop('tra_adv_eiv: failed to release workspace arrays') 197 # endif 194 CALL wrk_dealloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv ) 195 # endif 196 ! 197 IF( nn_timing == 1 ) CALL timing_stop( 'tra_adv_eiv') 198 198 ! 199 199 END SUBROUTINE tra_adv_eiv -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90
r3116 r3159 25 25 USE diaptr ! poleward transport diagnostics 26 26 USE trc_oce ! share passive tracers/Ocean variables 27 27 USE wrk_nemo_2 ! Memory Allocation 28 USE timing ! Timing 28 29 29 30 IMPLICIT NONE … … 61 62 !! IPSL, Sept. 2000 (http://www.lodyc.jussieu.fr/opa) 62 63 !!---------------------------------------------------------------------- 63 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 64 USE oce , ONLY: zwx => ua , zwy => va ! (ua,va) used as workspace 65 USE wrk_nemo, ONLY: zslpx => wrk_3d_11 , zslpy => wrk_3d_12 ! 3D workspace 64 USE oce , ONLY: zwx => ua , zwy => va ! (ua,va) used as workspace 66 65 ! 67 66 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 78 77 REAL(wp) :: zv, z0v, zzwy, z0w ! - - 79 78 REAL(wp) :: ztra, zbtr, zdt, zalpha ! - - 79 REAL(wp), POINTER, DIMENSION(:,:,:) :: zslpx, zslpy 80 80 !!---------------------------------------------------------------------- 81 82 IF( wrk_in_use(3, 11,12) ) THEN 83 CALL ctl_stop('tra_adv_muscl: requested workspace arrays unavailable') ; RETURN 84 ENDIF 81 ! 82 IF( nn_timing == 1 ) CALL timing_start('tra_adv_muscl') 83 ! 84 CALL wrk_alloc( jpi, jpj, jpk, zslpx, zslpy ) 85 ! 85 86 86 87 IF( kt == kit000 ) THEN … … 253 254 ENDDO 254 255 ! 255 IF( wrk_not_released(3, 11,12) ) CALL ctl_stop('tra_adv_muscl: requested workspace arrays unavailable') 256 CALL wrk_dealloc( jpi, jpj, jpk, zslpx, zslpy ) 257 ! 258 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_muscl') 256 259 ! 257 260 END SUBROUTINE tra_adv_muscl -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90
r3116 r3159 23 23 USE diaptr ! poleward transport diagnostics 24 24 USE trc_oce ! share passive tracers/Ocean variables 25 USE wrk_nemo_2 ! Memory Allocation 26 USE timing ! Timing 25 27 26 28 … … 59 61 !! IPSL, Sept. 2000 (http://www.lodyc.jussieu.fr/opa) 60 62 !!---------------------------------------------------------------------- 61 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 62 USE oce , ONLY: zwx => ua , zwy => va ! (ua,va) used as 3D workspace 63 USE wrk_nemo, ONLY: zslpx => wrk_3d_11, zslpy => wrk_3d_12 ! 3D workspace 63 USE oce , ONLY: zwx => ua , zwy => va ! (ua,va) used as 3D workspace 64 64 !! 65 65 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 76 76 REAL(wp) :: zv, z0v, zzwy, z0w ! - - 77 77 REAL(wp) :: ztra, zbtr, zdt, zalpha ! - - 78 REAL(wp), POINTER, DIMENSION(:,:,:) :: zslpx, zslpy 78 79 !!---------------------------------------------------------------------- 79 80 IF( wrk_in_use(3, 11,12) ) THEN 81 CALL ctl_stop('tra_adv_muscl2: requested workspace arrays are unavailable') ; RETURN 82 ENDIF 80 ! 81 IF( nn_timing == 1 ) CALL timing_start('tra_adv_muscl2') 82 ! 83 CALL wrk_alloc( jpi, jpj, jpk, zslpx, zslpy ) 84 ! 83 85 84 86 IF( kt == kit000 ) THEN … … 286 288 END DO 287 289 ! 288 IF( wrk_not_released(3, 11,12) ) CALL ctl_stop('tra_adv_muscl2: failed to release workspace arrays') 290 CALL wrk_dealloc( jpi, jpj, jpk, zslpx, zslpy ) 291 ! 292 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_muscl2') 289 293 ! 290 294 END SUBROUTINE tra_adv_muscl2 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90
r3116 r3159 26 26 USE diaptr ! poleward transport diagnostics 27 27 USE trc_oce ! share passive tracers/Ocean variables 28 USE wrk_nemo_2 ! Memory Allocation 29 USE timing ! Timing 28 30 29 31 IMPLICIT NONE … … 91 93 !!---------------------------------------------------------------------- 92 94 95 ! 96 IF( nn_timing == 1 ) CALL timing_start('tra_adv_qck') 97 ! 93 98 IF( kt == kit000 ) THEN 94 99 IF(lwp) WRITE(numout,*) … … 108 113 CALL tra_adv_cen2_k( kt, cdtype, pwn, ptn, pta, kjpt ) 109 114 ! 115 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_qck') 116 ! 110 117 END SUBROUTINE tra_adv_qck 111 118 … … 116 123 !! 117 124 !!---------------------------------------------------------------------- 118 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released119 125 USE oce , ONLY: zwx => ua ! ua used as workspace 120 USE wrk_nemo, ONLY: zfu => wrk_3d_11 , zfc => wrk_3d_12, zfd => wrk_3d_13 ! 3D workspace121 126 ! 122 127 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 130 135 INTEGER :: ji, jj, jk, jn ! dummy loop indices 131 136 REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk ! local scalars 137 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfc, zfd 132 138 !---------------------------------------------------------------------- 133 139 ! 134 IF( wrk_in_use(3, 11,12,13) ) THEN 135 CALL ctl_stop('tra_adv_qck_i: requested workspace arrays unavailable') ; RETURN 136 ENDIF 140 CALL wrk_alloc( jpi, jpj, jpk, zfu, zfc, zfd ) 137 141 ! ! =========== 138 142 DO jn = 1, kjpt ! tracer loop … … 229 233 END DO 230 234 ! 231 IF( wrk_not_released(3, 11,12,13) ) CALL ctl_stop('tra_adv_qck_i: failed to release workspace arrays')235 CALL wrk_dealloc( jpi, jpj, jpk, zfu, zfc, zfd ) 232 236 ! 233 237 END SUBROUTINE tra_adv_qck_i … … 239 243 !! 240 244 !!---------------------------------------------------------------------- 241 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released242 245 USE oce , ONLY: zwy => ua ! ua used as workspace 243 USE wrk_nemo, ONLY: zfu => wrk_3d_11 , zfc => wrk_3d_12, zfd => wrk_3d_13 ! 3D workspace244 246 ! 245 247 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 253 255 INTEGER :: ji, jj, jk, jn ! dummy loop indices 254 256 REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk ! local scalars 257 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfc, zfd 255 258 !---------------------------------------------------------------------- 256 259 ! 257 IF(wrk_in_use(3, 11,12,13))THEN 258 CALL ctl_stop('tra_adv_qck_j: ERROR: requested workspace arrays unavailable') 259 RETURN 260 END IF 260 CALL wrk_alloc( jpi, jpj, jpk, zfu, zfc, zfd ) 261 ! 261 262 ! ! =========== 262 263 DO jn = 1, kjpt ! tracer loop … … 360 361 END DO 361 362 ! 362 IF( wrk_not_released(3, 11,12,13) ) CALL ctl_stop('tra_adv_qck_j: failed to release workspace arrays')363 CALL wrk_dealloc( jpi, jpj, jpk, zfu, zfc, zfd ) 363 364 ! 364 365 END SUBROUTINE tra_adv_qck_j … … 437 438 REAL(wp) :: zc, zcurv, zfho ! - - 438 439 !---------------------------------------------------------------------- 439 440 ! 441 IF( nn_timing == 1 ) CALL timing_start('quickest') 442 ! 440 443 DO jk = 1, jpkm1 441 444 DO jj = 1, jpj … … 468 471 END DO 469 472 ! 473 IF( nn_timing == 1 ) CALL timing_stop('quickest') 474 ! 470 475 END SUBROUTINE quickest 471 476 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90
r3116 r3159 32 32 USE diaptr ! poleward transport diagnostics 33 33 USE trc_oce ! share passive tracers/Ocean variables 34 34 USE wrk_nemo_2 ! Memory Allocation 35 USE timing ! Timing 35 36 36 37 IMPLICIT NONE … … 66 67 !! - save the trends 67 68 !!---------------------------------------------------------------------- 68 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released69 69 USE oce , ONLY: zwx => ua , zwy => va ! (ua,va) used as workspace 70 USE wrk_nemo, ONLY: zwi => wrk_3d_12 , zwz => wrk_3d_13 ! 3D workspace71 70 ! 72 71 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 83 82 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk ! - - 84 83 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk ! - - 85 REAL(wp), DIMENSION (:,:,:), ALLOCATABLE :: ztrdx, ztrdy, ztrdz 86 !!---------------------------------------------------------------------- 87 88 IF( wrk_in_use(3, 12,13) ) THEN 89 CALL ctl_stop('tra_adv_tvd: requested workspace arrays unavailable') ; RETURN 90 ENDIF 91 84 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz 85 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz 86 !!---------------------------------------------------------------------- 87 ! 88 IF( nn_timing == 1 ) CALL timing_start('tra_adv_tvd') 89 ! 90 CALL wrk_alloc( jpi, jpj, jpk, zwi, zwz ) 91 ! 92 92 IF( kt == kit000 ) THEN 93 93 IF(lwp) WRITE(numout,*) … … 100 100 ! 101 101 IF( l_trd ) THEN 102 ALLOCATE( ztrdx(jpi,jpj,jpk) ) ; ztrdx(:,:,:) = 0.e0 103 ALLOCATE( ztrdy(jpi,jpj,jpk) ) ; ztrdy(:,:,:) = 0.e0 104 ALLOCATE( ztrdz(jpi,jpj,jpk) ) ; ztrdz(:,:,:) = 0.e0 105 END IF 102 CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 103 ztrdx(:,:,:) = 0.e0 ; ztrdy(:,:,:) = 0.e0 ; ztrdz(:,:,:) = 0.e0 104 ENDIF 106 105 ! 107 106 zwi(:,:,:) = 0.e0 … … 242 241 END DO 243 242 ! 244 IF( l_trd ) THEN 245 DEALLOCATE( ztrdx ) ; DEALLOCATE( ztrdy ) ; DEALLOCATE( ztrdz ) 246 END IF 247 ! 248 IF( wrk_not_released(3, 12,13) ) CALL ctl_stop('tra_adv_tvd: failed to release workspace arrays') 243 CALL wrk_dealloc( jpi, jpj, jpk, zwi, zwz ) 244 IF( l_trd ) CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 245 ! 246 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_tvd') 249 247 ! 250 248 END SUBROUTINE tra_adv_tvd … … 264 262 !! in-space based differencing for fluid 265 263 !!---------------------------------------------------------------------- 266 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 267 USE wrk_nemo, ONLY: zbetup => wrk_3d_8 , zbetdo => wrk_3d_9 ! 3D workspace 268 USE wrk_nemo, ONLY: zbup => wrk_3d_10 , zbdo => wrk_3d_11 ! - - 269 ! 264 ! 265 !!---------------------------------------------------------------------- 270 266 REAL(wp), DIMENSION(jpk) , INTENT(in ) :: p2dt ! vertical profile of tracer time-step 271 267 REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(in ) :: pbef, paft ! before & after field … … 276 272 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt ! local scalars 277 273 REAL(wp) :: zau, zbu, zcu, zav, zbv, zcv, zup, zdo ! - - 278 !!---------------------------------------------------------------------- 279 280 IF( wrk_in_use(3, 8,9,10,11) ) THEN 281 CALL ctl_stop('nonosc: requested workspace array unavailable') ; RETURN 282 ENDIF 274 REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo, zbup, zbdo 275 !!---------------------------------------------------------------------- 276 ! 277 IF( nn_timing == 1 ) CALL timing_start('nonosc') 278 ! 279 CALL wrk_alloc( jpi, jpj, jpk, zbetup, zbetdo, zbup, zbdo ) 280 ! 283 281 284 282 zbig = 1.e+40_wp … … 331 329 END DO 332 330 CALL lbc_lnk( zbetup, 'T', 1. ) ; CALL lbc_lnk( zbetdo, 'T', 1. ) ! lateral boundary cond. (unchanged sign) 333 334 335 331 336 332 ! 3. monotonic flux in the i & j direction (paa & pbb) … … 360 356 CALL lbc_lnk( paa, 'U', -1. ) ; CALL lbc_lnk( pbb, 'V', -1. ) ! lateral boundary condition (changed sign) 361 357 ! 362 IF( wrk_not_released(3, 8,9,10,11) ) CALL ctl_stop('nonosc: failed to release workspace arrays') 358 CALL wrk_dealloc( jpi, jpj, jpk, zbetup, zbetdo, zbup, zbdo ) 359 ! 360 IF( nn_timing == 1 ) CALL timing_stop('nonosc') 363 361 ! 364 362 END SUBROUTINE nonosc -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90
r3116 r3159 22 22 USE dynspg_oce ! choice/control of key cpp for surface pressure gradient 23 23 USE trc_oce ! share passive tracers/Ocean variables 24 USE wrk_nemo_2 ! Memory Allocation 25 USE timing ! Timing 24 26 25 27 IMPLICIT NONE … … 73 75 !! Farrow, D.E., Stevens, D.P., 1995, J. Phys. Ocean. 25, 1731Ð1741. 74 76 !!---------------------------------------------------------------------- 75 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released76 77 USE oce , ONLY: zwx => ua , zwy => va ! (ua,va) used as workspace 77 USE wrk_nemo, ONLY: ztu => wrk_3d_1 , ztv => wrk_3d_2 ! 3D workspace78 USE wrk_nemo, ONLY: zltu => wrk_3d_3 , zltv => wrk_3d_4 ! - -79 USE wrk_nemo, ONLY: zti => wrk_3d_5 , ztw => wrk_3d_6 ! - -80 78 ! 81 79 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 92 90 REAL(wp) :: zfp_ui, zfm_ui, zcenut, ztak, zfp_wk, zfm_wk ! - - 93 91 REAL(wp) :: zfp_vj, zfm_vj, zcenvt, zeeu, zeev, z_hdivn ! - - 94 !!---------------------------------------------------------------------- 95 96 IF( wrk_in_use(3, 1,2,3,4,5,6) )THEN 97 CALL ctl_stop('tra_adv_ubs: requested workspace arrays unavailable') ; RETURN 98 ENDIF 92 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztu, ztv, zltu, zltv, zti, ztw 93 !!---------------------------------------------------------------------- 94 ! 95 IF( nn_timing == 1 ) CALL timing_start('tra_adv_ubs') 96 ! 97 CALL wrk_alloc( jpi, jpj, jpk, ztu, ztv, zltu, zltv, zti, ztw ) 98 ! 99 99 100 100 IF( kt == kit000 ) THEN … … 269 269 ENDDO 270 270 ! 271 IF( wrk_not_released(3, 1,2,3,4,5,6) ) CALL ctl_stop('tra_adv_ubs: failed to release workspace arrays') 271 CALL wrk_dealloc( jpi, jpj, jpk, ztu, ztv, zltu, zltv, zti, ztw ) 272 ! 273 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_ubs') 272 274 ! 273 275 END SUBROUTINE tra_adv_ubs … … 287 289 !! in-space based differencing for fluid 288 290 !!---------------------------------------------------------------------- 289 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released290 USE wrk_nemo, ONLY: zbetup => wrk_3d_1, zbetdo => wrk_3d_2 ! 3D workspace291 291 ! 292 292 REAL(wp), INTENT(in ), DIMENSION(jpk) :: p2dt ! vertical profile of tracer time-step … … 298 298 INTEGER :: ikm1 ! local integer 299 299 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt ! local scalars 300 !!---------------------------------------------------------------------- 301 302 IF( wrk_in_use(3, 1,2) ) THEN 303 CALL ctl_stop('nonosc_z: requested workspace arrays unavailable') ; RETURN 304 ENDIF 300 REAL(wp), POINTER, DIMENSION(:,:,:) :: zbetup, zbetdo 301 !!---------------------------------------------------------------------- 302 ! 303 IF( nn_timing == 1 ) CALL timing_start('nonosc_z') 304 ! 305 CALL wrk_alloc( jpi, jpj, jpk, zbetup, zbetdo ) 306 ! 305 307 306 308 zbig = 1.e+40_wp … … 374 376 END DO 375 377 ! 376 IF( wrk_not_released(3, 1,2) ) CALL ctl_stop('nonosc_z: failed to release workspace arrays') 378 CALL wrk_dealloc( jpi, jpj, jpk, zbetup, zbetdo ) 379 ! 380 IF( nn_timing == 1 ) CALL timing_stop('nonosc_z') 377 381 ! 378 382 END SUBROUTINE nonosc_z -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90
r2715 r3159 22 22 USE in_out_manager ! I/O manager 23 23 USE prtctl ! Print control 24 USE wrk_nemo_2 ! Memory Allocation 25 USE timing ! Timing 24 26 25 27 IMPLICIT NONE … … 71 73 INTEGER :: ji, jj, ik ! dummy loop indices 72 74 REAL(wp) :: zqgh_trd ! geothermal heat flux trend 73 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE:: ztrdt75 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt 74 76 !!---------------------------------------------------------------------- 75 77 ! 78 IF( nn_timing == 1 ) CALL timing_start('tra_bbc') 79 ! 76 80 IF( l_trdtra ) THEN ! Save ta and sa trends 77 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 81 CALL wrk_alloc( jpi, jpj, jpk, ztrdt ) 82 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 78 83 ENDIF 79 84 ! … … 95 100 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 96 101 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_bbc, ztrdt ) 97 DEALLOCATE(ztrdt )102 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt ) 98 103 ENDIF 99 104 ! 100 105 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbc - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 106 ! 107 IF( nn_timing == 1 ) CALL timing_stop('tra_bbc') 101 108 ! 102 109 END SUBROUTINE tra_bbc -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
r3116 r3159 34 34 USE lbclnk ! ocean lateral boundary conditions 35 35 USE prtctl ! Print control 36 USE wrk_nemo_2 ! Memory Allocation 37 USE timing ! Timing 38 36 39 37 40 IMPLICIT NONE … … 103 106 INTEGER, INTENT( in ) :: kt ! ocean time-step 104 107 !! 105 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt, ztrds 106 !!---------------------------------------------------------------------- 107 108 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds 109 !!---------------------------------------------------------------------- 110 ! 111 IF( nn_timing == 1 ) CALL timing_start( 'tra_bbl') 112 ! 108 113 IF( l_trdtra ) THEN !* Save ta and sa trends 109 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 110 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = tsa(:,:,:,jp_sal) 114 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 115 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 116 ztrds(:,:,:) = tsa(:,:,:,jp_sal) 111 117 ENDIF 112 118 113 119 IF( l_bbl ) CALL bbl( kt, nit000, 'TRA' ) !* bbl coef. and transport (only if not already done in trcbbl) 114 115 120 116 121 IF( nn_bbl_ldf == 1 ) THEN !* Diffusive bbl 122 ! 117 123 CALL tra_bbl_dif( tsb, tsa, jpts ) 118 124 IF( ln_ctl ) & … … 123 129 CALL iom_put( "ahu_bbl", ahu_bbl ) ! bbl diffusive flux i-coef 124 130 CALL iom_put( "ahv_bbl", ahv_bbl ) ! bbl diffusive flux j-coef 131 ! 125 132 END IF 126 133 127 134 IF( nn_bbl_adv /= 0 ) THEN !* Advective bbl 135 ! 128 136 CALL tra_bbl_adv( tsb, tsa, jpts ) 129 137 IF(ln_ctl) & … … 134 142 CALL iom_put( "uoce_bbl", utr_bbl ) ! bbl i-transport 135 143 CALL iom_put( "voce_bbl", vtr_bbl ) ! bbl j-transport 144 ! 136 145 END IF 137 146 … … 141 150 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_bbl, ztrdt ) 142 151 CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_bbl, ztrds ) 143 DEALLOCATE( ztrdt ) ; DEALLOCATE(ztrds )152 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 144 153 ENDIF 154 ! 155 IF( nn_timing == 1 ) CALL timing_stop( 'tra_bbl') 145 156 ! 146 157 END SUBROUTINE tra_bbl … … 169 180 !! Campin, J.-M., and H. Goosse, 1999, Tellus, 412-430. 170 181 !!---------------------------------------------------------------------- 171 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released172 USE wrk_nemo, ONLY: zptb => wrk_2d_1173 182 ! 174 183 INTEGER , INTENT(in ) :: kjpt ! number of tracers … … 179 188 INTEGER :: ik ! local integers 180 189 REAL(wp) :: zbtr ! local scalars 181 !!---------------------------------------------------------------------- 182 ! 183 IF( wrk_in_use(2,1) ) THEN 184 CALL ctl_stop('tra_bbl_dif: ERROR: requested workspace array unavailable') ; RETURN 185 ENDIF 190 REAL(wp), POINTER, DIMENSION(:,:) :: zptb 191 !!---------------------------------------------------------------------- 192 ! 193 IF( nn_timing == 1 ) CALL timing_start('tra_bbl_dif') 194 ! 195 CALL wrk_alloc( jpi, jpj, zptb ) 186 196 ! 187 197 DO jn = 1, kjpt ! tracer loop … … 218 228 END DO ! end tracer 219 229 ! ! =========== 220 IF( wrk_not_released(2,1) ) CALL ctl_stop('tra_bbl_dif: failed to release workspace array') 230 CALL wrk_dealloc( jpi, jpj, zptb ) 231 ! 232 IF( nn_timing == 1 ) CALL timing_stop('tra_bbl_dif') 221 233 ! 222 234 END SUBROUTINE tra_bbl_dif … … 249 261 !!---------------------------------------------------------------------- 250 262 ! 263 IF( nn_timing == 1 ) CALL timing_start( 'tra_bbl_adv') 251 264 ! ! =========== 252 265 DO jn = 1, kjpt ! tracer loop … … 308 321 END DO ! end tracer 309 322 ! ! =========== 323 ! 324 IF( nn_timing == 1 ) CALL timing_stop( 'tra_bbl_adv') 325 ! 310 326 END SUBROUTINE tra_bbl_adv 311 327 … … 338 354 !! Campin, J.-M., and H. Goosse, 1999, Tellus, 412-430. 339 355 !!---------------------------------------------------------------------- 340 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released341 USE wrk_nemo, ONLY: zub => wrk_2d_1 , ztb => wrk_2d_2 ! 2D workspace342 USE wrk_nemo, ONLY: zvb => wrk_2d_3 , zsb => wrk_2d_4 , zdep => wrk_2d_5343 356 ! 344 357 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 354 367 !! 355 368 REAL(wp) :: fsalbt, fsbeta, pft, pfs, pfh ! statement function 369 REAL(wp), POINTER, DIMENSION(:,:) :: zub, zvb, ztb, zsb, zdep 356 370 !!----------------------- zv_bbl----------------------------------------------- 357 371 ! ratio alpha/beta = fsalbt : ratio of thermal over saline expension coefficients … … 385 399 - 0.121555e-07 ) * pfh 386 400 !!---------------------------------------------------------------------- 387 388 IF( wrk_in_use(2, 1,2,3,4,5) ) THEN 389 CALL ctl_stop('bbl: requested workspace arrays unavailable') ; RETURN 390 ENDIF 401 402 ! 403 IF( nn_timing == 1 ) CALL timing_start( 'bbl') 404 ! 405 CALL wrk_alloc( jpi, jpj, zub, zvb, ztb, zsb, zdep ) 406 ! 391 407 392 408 IF( kt == kit000 ) THEN … … 526 542 ENDIF 527 543 ! 528 IF( wrk_not_released(2, 1,2,3,4,5) ) CALL ctl_stop('bbl: failed to release workspace arrays') 544 CALL wrk_dealloc( jpi, jpj, zub, zvb, ztb, zsb, zdep ) 545 ! 546 IF( nn_timing == 1 ) CALL timing_stop( 'bbl') 529 547 ! 530 548 END SUBROUTINE bbl … … 540 558 !! called by nemo_init at the first timestep (kit000) 541 559 !!---------------------------------------------------------------------- 542 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released543 USE wrk_nemo, ONLY: zmbk => wrk_2d_1 ! 2D workspace544 560 INTEGER :: ji, jj ! dummy loop indices 545 561 INTEGER :: ii0, ii1, ij0, ij1 ! temporary integer 562 REAL(wp), POINTER, DIMENSION(:,:) :: zmbk 546 563 !! 547 564 NAMELIST/nambbl/ nn_bbl_ldf, nn_bbl_adv, rn_ahtbbl, rn_gambbl 548 565 !!---------------------------------------------------------------------- 549 550 IF( wrk_in_use(2,1) ) THEN 551 CALL ctl_stop('tra_bbl_init: requested workspace array unavailable') ; RETURN 552 ENDIF 566 ! 567 IF( nn_timing == 1 ) CALL timing_start( 'tra_bbl_init') 568 ! 569 CALL wrk_alloc( jpi, jpj, zmbk ) 570 ! 553 571 554 572 REWIND ( numnam ) !* Read Namelist nambbl : bottom boundary layer scheme … … 636 654 ENDIF 637 655 ! 638 IF( wrk_not_released(2,1) ) CALL ctl_stop('tra_bbl_init: failed to release workspace array') 656 CALL wrk_dealloc( jpi, jpj, zmbk ) 657 ! 658 IF( nn_timing == 1 ) CALL timing_stop( 'tra_bbl_init') 639 659 ! 640 660 END SUBROUTINE tra_bbl_init -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90
r2977 r3159 36 36 USE lib_mpp ! MPP library 37 37 USE prtctl ! Print control 38 USE wrk_nemo_2 ! Memory allocation 39 USE timing ! Timing 38 40 39 41 IMPLICIT NONE … … 98 100 !! ** Action : - (ta,sa) tracer trends updated with the damping trend 99 101 !!---------------------------------------------------------------------- 100 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released101 USE wrk_nemo, ONLY: zts_dta => wrk_4d_2 ! 4D workspace102 102 ! 103 103 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 105 105 INTEGER :: ji, jj, jk ! dummy loop indices 106 106 REAL(wp) :: zta, zsa ! local scalars 107 !!---------------------------------------------------------------------- 108 ! 109 IF( wrk_in_use(4, 2) ) THEN 110 CALL ctl_stop('tra_dmp: requested workspace arrays unavailable') ; RETURN 111 ENDIF 107 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zts_dta 108 !!---------------------------------------------------------------------- 109 ! 110 IF( nn_timing == 1 ) CALL timing_start( 'tra_dmp') 111 ! 112 CALL wrk_alloc( jpi, jpj, jpk, jpts, zts_dta ) 112 113 ! !== input T-S data at kt ==! 113 114 CALL dta_tsd( kt, zts_dta ) ! read and interpolates T-S data at kt … … 177 178 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 178 179 ! 179 IF( wrk_not_released(4, 2) ) CALL ctl_stop('tra_dmp: failed to release workspace arrays') 180 CALL wrk_dealloc( jpi, jpj, jpk, jpts, zts_dta ) 181 ! 182 IF( nn_timing == 1 ) CALL timing_stop( 'tra_dmp') 180 183 ! 181 184 END SUBROUTINE tra_dmp … … 270 273 REAL(wp), DIMENSION(6) :: zfact ! 1Dworkspace 271 274 !!---------------------------------------------------------------------- 275 ! 276 IF( nn_timing == 1 ) CALL timing_start( 'dtacof_zoom') 277 ! 272 278 273 279 zfact(1) = 1._wp … … 321 327 presto(:,:,:) = presto(:,:,:) * tmask(:,:,:) 322 328 ! 329 IF( nn_timing == 1 ) CALL timing_stop( 'dtacof_zoom') 330 ! 323 331 END SUBROUTINE dtacof_zoom 324 332 … … 339 347 USE iom 340 348 USE ioipsl 341 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released342 USE wrk_nemo, ONLY: zhfac => wrk_1d_1, zmrs => wrk_2d_1 , zdct => wrk_3d_1 ! 1D, 2D, 3D workspace343 349 !! 344 350 INTEGER , INTENT(in ) :: kn_hdmp ! damping option … … 356 362 REAL(wp) :: zlat, zlat0, zlat1, zlat2 ! - - 357 363 REAL(wp) :: zsdmp, zbdmp ! - - 358 CHARACTER(len=20) :: cfile 359 !!---------------------------------------------------------------------- 360 361 IF( wrk_in_use(1, 1) .OR. wrk_in_use(2, 1) .OR. wrk_in_use(3, 1) ) THEN 362 CALL ctl_stop('dtacof: requested workspace arrays unavailable') ; RETURN 363 ENDIF 364 CHARACTER(len=20) :: cfile 365 REAL(wp), POINTER, DIMENSION(: ) :: zhfac 366 REAL(wp), POINTER, DIMENSION(:,: ) :: zmrs 367 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdct 368 !!---------------------------------------------------------------------- 369 ! 370 IF( nn_timing == 1 ) CALL timing_start('dtacof') 371 ! 372 CALL wrk_alloc( jpk, zhfac ) 373 CALL wrk_alloc( jpi, jpj, zmrs ) 374 CALL wrk_alloc( jpi, jpj, jpk, zdct ) 364 375 ! ! ==================== 365 376 ! ! ORCA configuration : global domain … … 554 565 ENDIF 555 566 ! 556 IF( wrk_not_released(1, 1) .OR. wrk_not_released(2, 1) .OR. wrk_not_released(3, 1) ) & 557 & CALL ctl_stop('dtacof: failed to release workspace arrays') 567 CALL wrk_dealloc( jpk, zhfac) 568 CALL wrk_dealloc( jpi, jpj, zmrs ) 569 CALL wrk_dealloc( jpi, jpj, jpk, zdct ) 570 ! 571 IF( nn_timing == 1 ) CALL timing_stop('dtacof') 558 572 ! 559 573 END SUBROUTINE dtacof … … 581 595 !!---------------------------------------------------------------------- 582 596 USE ioipsl ! IOipsl librairy 583 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released584 USE wrk_nemo, ONLY: zxt => wrk_2d_1, zyt => wrk_2d_2585 USE wrk_nemo, ONLY: zzt => wrk_2d_3, zmask => wrk_2d_4586 597 !! 587 598 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( out ) :: pdct ! distance to the coastline … … 591 602 CHARACTER (len=32) :: clname ! local name 592 603 REAL(wp) :: zdate0 ! local scalar 593 LOGICAL , ALLOCATABLE, DIMENSION(:,:) :: llcotu, llcotv, llcotf ! 2D logical workspace 594 REAL(wp), ALLOCATABLE, DIMENSION(:) :: zxc, zyc, zzc, zdis ! temporary workspace 595 !!---------------------------------------------------------------------- 596 597 IF( wrk_in_use(2, 1,2,3,4) ) THEN 598 CALL ctl_stop('cofdis: requested workspace arrays unavailable') ; RETURN 599 ENDIF 600 601 ALLOCATE( llcotu(jpi,jpj) , llcotv(jpi,jpj) , llcotf(jpi,jpj) , & 602 & zxc (3*jpi*jpj) , zyc (3*jpi*jpj) , zzc (3*jpi*jpj) , zdis (3*jpi*jpj) , STAT=ierr ) 604 REAL(wp), POINTER, DIMENSION(:,:) :: zxt, zyt, zzt, zmask 605 REAL(wp), POINTER, DIMENSION(: ) :: zxc, zyc, zzc, zdis ! temporary workspace 606 LOGICAL , ALLOCATABLE, DIMENSION(:,:) :: llcotu, llcotv, llcotf ! 2D logical workspace 607 !!---------------------------------------------------------------------- 608 ! 609 IF( nn_timing == 1 ) CALL timing_start('cofdis') 610 ! 611 CALL wrk_alloc( jpi, jpj , zxt, zyt, zzt, zmask ) 612 CALL wrk_alloc( 3*jpi*jpj, zxc, zyc, zzc, zdis ) 613 ALLOCATE( llcotu(jpi,jpj), llcotv(jpi,jpj), llcotf(jpi,jpj) ) 614 ! 603 615 IF( lk_mpp ) CALL mpp_sum( ierr ) 604 616 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'cofdis: requested local arrays unavailable') … … 754 766 CALL restclo( icot ) 755 767 ! 756 IF( wrk_not_released(2, 1,2,3,4) ) CALL ctl_stop('cofdis: failed to release workspace arrays') 757 DEALLOCATE( llcotu, llcotv, llcotf, zyc, zzc, zdis ) 768 CALL wrk_dealloc( jpi, jpj , zxt, zyt, zzt, zmask ) 769 CALL wrk_dealloc( 3*jpi*jpj, zxc, zyc, zzc, zdis ) 770 DEALLOCATE( llcotu, llcotv, llcotf ) 771 ! 772 IF( nn_timing == 1 ) CALL timing_stop('cofdis') 758 773 ! 759 774 END SUBROUTINE cofdis -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90
r3116 r3159 29 29 USE lib_mpp ! distribued memory computing library 30 30 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 USE wrk_nemo_2 ! Memory allocation 32 USE timing ! Timing 31 33 32 34 IMPLICIT NONE … … 59 61 INTEGER, INTENT( in ) :: kt ! ocean time-step index 60 62 !! 61 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt, ztrds 62 !!---------------------------------------------------------------------- 63 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds 64 !!---------------------------------------------------------------------- 65 ! 66 IF( nn_timing == 1 ) CALL timing_start('tra_ldf') 67 ! 64 68 rldf = 1 ! For active tracers the 65 69 66 70 IF( l_trdtra ) THEN !* Save ta and sa trends 67 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 68 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = tsa(:,:,:,jp_sal) 71 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 72 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 73 ztrds(:,:,:) = tsa(:,:,:,jp_sal) 69 74 ENDIF 70 75 … … 109 114 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_ldf, ztrdt ) 110 115 CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_ldf, ztrds ) 111 DEALLOCATE( ztrdt ) ; DEALLOCATE(ztrds )116 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 112 117 ENDIF 113 118 ! ! print mean trends (used for debugging) 114 119 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf - Ta: ', mask1=tmask, & 115 120 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 121 ! 122 IF( nn_timing == 1 ) CALL timing_stop('tra_ldf') 116 123 ! 117 124 END SUBROUTINE tra_ldf … … 239 246 !! ** Purpose : initializations of 240 247 !!---------------------------------------------------------------------- 241 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released242 USE wrk_nemo, ONLY: zt_ref => wrk_3d_1, ztb => wrk_3d_2, zavt => wrk_3d_3 ! 3D workspaces243 USE wrk_nemo, ONLY: zs_ref => wrk_3d_4, zsb => wrk_3d_5 ! 3D workspaces244 248 ! 245 249 USE zdf_oce ! vertical mixing … … 251 255 LOGICAL :: llsave ! local logical 252 256 REAL(wp) :: zt0, zs0, z12 ! local scalar 253 !!---------------------------------------------------------------------- 254 255 IF( wrk_in_use(3, 1,2,3,4,5) ) THEN 256 CALL ctl_stop('ldf_ano : requested workspace arrays unavailable') ; RETURN 257 ENDIF 257 REAL(wp), POINTER, DIMENSION(:,:,:) :: zt_ref, zs_ref, ztb, zsb, zavt 258 !!---------------------------------------------------------------------- 259 ! 260 IF( nn_timing == 1 ) CALL timing_start('ldf_ano') 261 ! 262 CALL wrk_alloc( jpi, jpj, jpk, zt_ref, zs_ref, ztb, zsb, zavt ) 263 ! 258 264 259 265 IF(lwp) THEN … … 322 328 avt(:,:,:) = zavt(:,:,:) 323 329 ! 324 IF( wrk_not_released(3, 1,2,3,4,5) ) CALL ctl_stop('ldf_ano: failed to release workspace arrays') 330 CALL wrk_dealloc( jpi, jpj, jpk, zt_ref, zs_ref, ztb, zsb, zavt ) 331 ! 332 IF( nn_timing == 1 ) CALL timing_stop('ldf_ano') 325 333 ! 326 334 END SUBROUTINE ldf_ano -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90
r3116 r3159 29 29 USE trc_oce ! share passive tracers/Ocean variables 30 30 USE lib_mpp ! MPP library 31 USE wrk_nemo_2 ! Memory Allocation 32 USE timing ! Timing 31 33 32 34 IMPLICIT NONE … … 74 76 !! biharmonic mixing trend. 75 77 !!---------------------------------------------------------------------- 76 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released77 78 USE oce , ONLY: ztu => ua , ztv => va ! (ua,va) used as workspace 78 USE wrk_nemo, ONLY: zeeu => wrk_2d_1 , zeev => wrk_2d_2 , zlt => wrk_2d_3 ! 2D workspace79 79 !! 80 80 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 88 88 INTEGER :: ji, jj, jk, jn ! dummy loop indices 89 89 REAL(wp) :: zbtr, ztra ! local scalars 90 REAL(wp), POINTER, DIMENSION(:,:) :: zeeu, zeev, zlt 90 91 !!---------------------------------------------------------------------- 91 92 IF( wrk_in_use(2, 1,2,3) ) THEN 93 CALL ctl_stop('tra_ldf_bilap: requested workspace arrays unavailable') ; RETURN 94 ENDIF 92 ! 93 IF( nn_timing == 1 ) CALL timing_start( 'tra_ldf_bilap') 94 ! 95 CALL wrk_alloc( jpi, jpj, zeeu, zeev, zlt ) 96 ! 95 97 96 98 IF( kt == kit000 ) THEN … … 166 168 END DO ! tracer loop 167 169 ! ! =========== 168 IF( wrk_not_released(2, 1,2,3) ) CALL ctl_stop('tra_ldf_bilap: failed to release workspace arrays') 170 IF( nn_timing == 1 ) CALL timing_stop( 'tra_ldf_bilap') 171 ! 172 CALL wrk_dealloc( jpi, jpj, zeeu, zeev, zlt ) 169 173 ! 170 174 END SUBROUTINE tra_ldf_bilap -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90
r3116 r3159 25 25 USE trc_oce ! share passive tracers/Ocean variables 26 26 USE lib_mpp ! MPP library 27 USE wrk_nemo_2 ! Memory Allocation 28 USE timing ! Timing 27 29 28 30 IMPLICIT NONE … … 66 68 !! biharmonic mixing trend. 67 69 !!---------------------------------------------------------------------- 68 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released69 USE wrk_nemo, ONLY: wk1 => wrk_4d_1 , wk2 => wrk_4d_2 ! 4D workspace70 70 ! 71 71 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 77 77 ! 78 78 INTEGER :: ji, jj, jk, jn ! dummy loop indices 79 !!---------------------------------------------------------------------- 80 81 IF( wrk_in_use(4, 1,2) ) THEN 82 CALL ctl_stop('tra_ldf_bilapg: requested workspace arrays unavailable') ; RETURN 83 ENDIF 84 79 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zwk1, zwk2 80 !!---------------------------------------------------------------------- 81 ! 82 IF( nn_timing == 1 ) CALL timing_start('tra_ldf_bilapg') 83 ! 84 CALL wrk_alloc( jpi, jpj, jpk, kjpt, zwk1, zwk2 ) 85 ! 85 86 IF( kt == kit000 ) THEN 86 87 IF(lwp) WRITE(numout,*) … … 91 92 ! 1. Laplacian of ptb * aht 92 93 ! ----------------------------- 93 CALL ldfght( kt, cdtype, ptb, wk1, kjpt, 1 ) ! rotated harmonic operator applied to ptb and multiply by aht94 CALL ldfght( kt, cdtype, ptb, zwk1, kjpt, 1 ) ! rotated harmonic operator applied to ptb and multiply by aht 94 95 ! ! output in wk1 95 96 ! 96 97 DO jn = 1, kjpt 97 CALL lbc_lnk( wk1(:,:,:,jn) , 'T', 1. ) ! Lateral boundary conditions on wk1 (unchanged sign)98 CALL lbc_lnk( zwk1(:,:,:,jn) , 'T', 1. ) ! Lateral boundary conditions on wk1 (unchanged sign) 98 99 END DO 99 100 100 101 ! 2. Bilaplacian of ptb 101 102 ! ------------------------- 102 CALL ldfght( kt, cdtype, wk1,wk2, kjpt, 2 ) ! rotated harmonic operator applied to wk1 ; output in wk2103 CALL ldfght( kt, cdtype, zwk1, zwk2, kjpt, 2 ) ! rotated harmonic operator applied to wk1 ; output in wk2 103 104 104 105 … … 110 111 DO ji = 2, jpim1 111 112 ! add it to the general tracer trends 112 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + wk2(ji,jj,jk,jn)113 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + zwk2(ji,jj,jk,jn) 113 114 END DO 114 115 END DO … … 116 117 END DO 117 118 ! 118 IF( wrk_not_released(4, 1,2) ) CALL ctl_stop('tra_ldf_bilapg : failed to release workspace arrays.') 119 CALL wrk_dealloc( jpi, jpj, jpk, kjpt, zwk1, zwk2 ) 120 ! 121 IF( nn_timing == 1 ) CALL timing_stop('tra_ldf_bilapg') 119 122 ! 120 123 END SUBROUTINE tra_ldf_bilapg … … 159 162 !! 160 163 !!---------------------------------------------------------------------- 161 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, wrk_in_use_xz, wrk_not_released_xz162 164 USE oce , ONLY: zftv => ua ! ua used as workspace 163 USE wrk_nemo, ONLY: zftu => wrk_2d_1 , zdkt => wrk_2d_2 , zdk1t => wrk_2d_3164 USE wrk_nemo, ONLY: zftw => wrk_xz_1 , zdit => wrk_xz_2165 USE wrk_nemo, ONLY: zdjt => wrk_xz_3 , zdj1t => wrk_xz_4166 165 ! 167 166 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 180 179 REAL(wp) :: zbtr, ztah, ztav 181 180 REAL(wp) :: zcof0, zcof1, zcof2, zcof3, zcof4 182 !!---------------------------------------------------------------------- 183 184 IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use_xz(1,2,3,4) )THEN 185 CALL ctl_stop('ldfght : requested workspace arrays unavailable') ; RETURN 186 ENDIF 181 REAL(wp), POINTER, DIMENSION(:,:) :: zftu, zdkt, zdk1t 182 REAL(wp), POINTER, DIMENSION(:,:) :: zftw, zdit, zdjt, zdj1t 183 !!---------------------------------------------------------------------- 184 ! 185 IF( nn_timing == 1 ) CALL timing_start('ldfght') 186 ! 187 CALL wrk_alloc( jpi, jpj, zftu, zdkt, zdk1t ) 188 CALL wrk_alloc( jpi, jpk, zftw, zdit, zdjt, zdj1t ) 187 189 ! 188 190 DO jn = 1, kjpt … … 336 338 END DO 337 339 ! 338 IF( wrk_not_released(2, 1,2,3) .OR. & 339 wrk_not_released_xz(1,2,3,4) ) CALL ctl_stop('ldfght : failed to release workspace arrays.') 340 CALL wrk_dealloc( jpi, jpj, zftu, zdkt, zdk1t ) 341 CALL wrk_dealloc( jpi, jpk, zftw, zdit, zdjt, zdj1t ) 342 ! 343 IF( nn_timing == 1 ) CALL timing_stop('ldfght') 340 344 ! 341 345 END SUBROUTINE ldfght -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
r3116 r3159 32 32 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 33 33 #endif 34 USE wrk_nemo_2 ! Memory Allocation 35 USE timing ! Timing 34 36 35 37 IMPLICIT NONE … … 90 92 !! ** Action : Update pta arrays with the before rotated diffusion 91 93 !!---------------------------------------------------------------------- 92 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released93 94 USE oce , ONLY: zftu => ua , zftv => va ! (ua,va) used as workspace 94 USE wrk_nemo, ONLY: zdkt => wrk_2d_1 , zdk1t => wrk_2d_2 , z2d => wrk_2d_3 ! 2D workspace95 USE wrk_nemo, ONLY: zdit => wrk_3d_6 , zdjt => wrk_3d_7 , ztfw => wrk_3d_8 ! 3D workspace96 95 ! 97 96 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 111 110 REAL(wp) :: zztmp ! local scalar 112 111 #endif 112 REAL(wp), POINTER, DIMENSION(:,: ) :: zdkt, zdk1t, z2d 113 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdit, zdjt, ztfw 113 114 !!---------------------------------------------------------------------- 114 115 IF( wrk_in_use(3, 6,7,8) .OR. wrk_in_use(2, 1,2,3) ) THEN 116 CALL ctl_stop('tra_ldf_iso : requested workspace array unavailable') ; RETURN 117 ENDIF 115 ! 116 IF( nn_timing == 1 ) CALL timing_start('tra_ldf_iso') 117 ! 118 CALL wrk_alloc( jpi, jpj, zdkt, zdk1t, z2d ) 119 CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw ) 120 ! 118 121 119 122 IF( kt == kit000 ) THEN … … 292 295 END DO 293 296 ! 294 IF( wrk_not_released(3, 6,7,8) .OR. & 295 wrk_not_released(2, 1,2,3) ) CALL ctl_stop('tra_ldf_iso: failed to release workspace arrays') 297 CALL wrk_dealloc( jpi, jpj, zdkt, zdk1t, z2d ) 298 CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw ) 299 ! 300 IF( nn_timing == 1 ) CALL timing_stop('tra_ldf_iso') 296 301 ! 297 302 END SUBROUTINE tra_ldf_iso -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90
r3116 r3159 26 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 27 USE lib_mpp ! MPP library 28 USE wrk_nemo_2 ! Memory Allocation 29 USE timing ! Timing 30 28 31 29 32 IMPLICIT NONE … … 89 92 !! ** Action : Update pta arrays with the before rotated diffusion 90 93 !!---------------------------------------------------------------------- 91 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released92 94 USE oce , ONLY: zftu => ua , zftv => va ! (ua,va) used as 3D workspace 93 USE wrk_nemo, ONLY: zdit => wrk_3d_6 , zdjt => wrk_3d_7 , ztfw => wrk_3d_8 ! 3D workspace94 USE wrk_nemo, ONLY: z2d => wrk_2d_1 ! 2D workspace95 95 ! 96 96 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 116 116 REAL(wp) :: zztmp ! local scalar 117 117 #endif 118 REAL(wp), POINTER, DIMENSION(:,: ) :: z2d 119 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdit, zdjt, ztfw 118 120 !!---------------------------------------------------------------------- 119 120 IF( wrk_in_use(3, 6,7,8) .OR. wrk_in_use(2, 1) ) THEN 121 CALL ctl_stop('tra_ldf_iso_grif: requested workspace arrays unavailable.') ; RETURN 122 ENDIF 121 ! 122 IF( nn_timing == 1 ) CALL timing_start('tra_ldf_iso_grif') 123 ! 124 CALL wrk_alloc( jpi, jpj, z2d ) 125 CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw ) 126 ! 123 127 124 128 IF( kt == kit000 .AND. .NOT.ALLOCATED(ah_wslp2) ) THEN … … 394 398 END DO 395 399 ! 396 IF( wrk_not_released(3, 6,7,8) .OR. & 397 wrk_not_released(2, 1) ) CALL ctl_stop('tra_ldf_iso_grif: failed to release workspace arrays') 400 CALL wrk_dealloc( jpi, jpj, z2d ) 401 CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw ) 402 ! 403 IF( nn_timing == 1 ) CALL timing_stop('tra_ldf_iso_grif') 398 404 ! 399 405 END SUBROUTINE tra_ldf_iso_grif -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap.F90
r3116 r3159 25 25 USE trc_oce ! share passive tracers/Ocean variables 26 26 USE lib_mpp ! MPP library 27 USE timing ! Timing 27 28 28 29 IMPLICIT NONE … … 77 78 REAL(wp) :: zabe1, zabe2, zbtr ! local scalars 78 79 !!---------------------------------------------------------------------- 79 80 ! 81 CALL timing_start('tra_ldf_lap') 82 ! 80 83 IF( kt == kit000 ) THEN 81 84 IF(lwp) WRITE(numout,*) … … 150 153 END DO ! end of tracer loop 151 154 ! ! ================== 155 CALL timing_stop('tra_ldf_lap') 156 ! 152 157 END SUBROUTINE tra_ldf_lap 153 158 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90
r2715 r3159 23 23 USE in_out_manager ! I/O manager 24 24 USE lib_mpp ! MPP library 25 USE wrk_nemo_2 ! Memory Allocation 26 USE timing ! Timing 25 27 26 28 IMPLICIT NONE … … 56 58 !! References : Madec, et al., 1991, JPO, 21, 9, 1349-1371. 57 59 !!---------------------------------------------------------------------- 58 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, wrk_in_use_xz, wrk_not_released_xz59 USE wrk_nemo, ONLY: ztrdt => wrk_3d_1 , ztrds => wrk_3d_2 , zrhop => wrk_3d_360 USE wrk_nemo, ONLY: zwx => wrk_xz_1 , zwy => wrk_xz_2 , zwz => wrk_xz_361 60 ! 62 61 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 68 67 INTEGER :: ikbot, ik, ikup, ikdown ! ??? 69 68 REAL(wp) :: ze3tot, zta, zsa, zraua, ze3dwn 69 REAL(wp), POINTER, DIMENSION(:,: ) :: zwx, zwy, zwz 70 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds, zrhop 70 71 !!---------------------------------------------------------------------- 71 72 ! Strictly 1 and 2 3D workspaces only needed if(l_trdtra) but it doesn't 73 ! cost us anything and makes code simpler. 74 IF( wrk_in_use(3, 1,2,3) .OR. wrk_in_use_xz(1,2,3) ) THEN 75 CALL ctl_stop('tra_npc: requested workspace arrays unavailable') ; RETURN 76 ENDIF 77 72 ! 73 IF( nn_timing == 1 ) CALL timing_start('tra_npc') 74 ! 75 CALL wrk_alloc(jpi, jpj, jpk, zrhop ) 76 CALL wrk_alloc(jpi, jpk, zwx, zwy, zwz ) 77 ! 78 78 IF( MOD( kt, nn_npc ) == 0 ) THEN 79 79 … … 84 84 85 85 IF( l_trdtra ) THEN !* Save ta and sa trends 86 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 86 87 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 87 88 ztrds(:,:,:) = tsa(:,:,:,jp_sal) … … 200 201 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_npc, ztrdt ) 201 202 CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_npc, ztrds ) 203 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 202 204 ENDIF 203 205 … … 216 218 ENDIF 217 219 ! 218 IF( wrk_not_released(3, 1,2,3) .OR. & 219 wrk_not_released_xz(1,2,3) ) CALL ctl_stop('tra_npc: failed to release workspace arrays') 220 CALL wrk_dealloc(jpi, jpj, jpk, zrhop ) 221 CALL wrk_dealloc(jpi, jpk, zwx, zwy, zwz ) 222 ! 223 IF( nn_timing == 1 ) CALL timing_stop('tra_npc') 220 224 ! 221 225 END SUBROUTINE tra_npc -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r3116 r3159 46 46 USE agrif_opa_interp 47 47 #endif 48 USE wrk_nemo_2 ! Memory allocation 49 USE timing ! Timing 48 50 49 51 IMPLICIT NONE … … 92 94 INTEGER :: jk, jn ! dummy loop indices 93 95 REAL(wp) :: zfact ! local scalars 94 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt, ztrds 95 !!---------------------------------------------------------------------- 96 96 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds 97 !!---------------------------------------------------------------------- 98 ! 99 IF( nn_timing == 1 ) CALL timing_start( 'tra_nxt') 100 ! 97 101 IF( kt == nit000 ) THEN 98 102 IF(lwp) WRITE(numout,*) … … 125 129 ! trends computation initialisation 126 130 IF( l_trdtra ) THEN ! store now fields before applying the Asselin filter 127 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsn(:,:,:,jp_tem) 128 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = tsn(:,:,:,jp_sal) 131 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 132 ztrdt(:,:,:) = tsn(:,:,:,jp_tem) 133 ztrds(:,:,:) = tsn(:,:,:,jp_sal) 129 134 ENDIF 130 135 … … 156 161 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_atf, ztrdt ) 157 162 CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_atf, ztrds ) 158 DEALLOCATE( ztrdt ) ; DEALLOCATE( ztrds )163 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 159 164 END IF 160 165 ! … … 162 167 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsn(:,:,:,jp_tem), clinfo1=' nxt - Tn: ', mask1=tmask, & 163 168 & tab3d_2=tsn(:,:,:,jp_sal), clinfo2= ' Sn: ', mask2=tmask ) 169 ! 170 ! 171 IF( nn_timing == 1 ) CALL timing_stop('tra_nxt') 164 172 ! 165 173 END SUBROUTINE tra_nxt … … 270 278 REAL(wp) :: zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d ! - - 271 279 !!---------------------------------------------------------------------- 272 280 ! 273 281 IF( kt == kit000 ) THEN 274 282 IF(lwp) WRITE(numout,*) -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r2715 r3159 29 29 USE restart ! ocean restart 30 30 USE lib_mpp ! MPP library 31 USE wrk_nemo_2 ! Memory Allocation 32 USE timing ! Timing 33 31 34 32 35 IMPLICIT NONE … … 90 93 !! Lengaigne et al. 2007, Clim. Dyn., V28, 5, 503-516. 91 94 !!---------------------------------------------------------------------- 92 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released93 USE wrk_nemo, ONLY: zekb => wrk_2d_1 , zekg => wrk_2d_2 , zekr => wrk_2d_394 USE wrk_nemo, ONLY: ze0 => wrk_3d_1 , ze1 => wrk_3d_2 , ze2 => wrk_3d_395 USE wrk_nemo, ONLY: ze3 => wrk_3d_4 , zea => wrk_3d_596 95 ! 97 96 INTEGER, INTENT(in) :: kt ! ocean time-step … … 102 101 REAL(wp) :: zc0, zc1, zc2, zc3 ! - - 103 102 REAL(wp) :: zz0, zz1, z1_e3t ! - - 104 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt 103 REAL(wp), POINTER, DIMENSION(:,: ) :: zekb, zekg, zekr 104 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 105 105 !!---------------------------------------------------------------------- 106 107 IF( wrk_in_use(3, 1,2,3,4,5) .OR. wrk_in_use(2, 1,2,3) )THEN 108 CALL ctl_stop('tra_qsr: requested workspace arrays unavailable') ; RETURN 109 ENDIF 110 106 ! 107 IF( nn_timing == 1 ) CALL timing_start('tra_qsr') 108 ! 109 CALL wrk_alloc( jpi, jpj, zekb, zekg, zekr ) 110 CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 111 ! 111 112 IF( kt == nit000 ) THEN 112 113 IF(lwp) WRITE(numout,*) … … 117 118 118 119 IF( l_trdtra ) THEN ! Save ta and sa trends 119 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 120 CALL wrk_alloc( jpi, jpj, jpk, ztrdt ) 121 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 120 122 ENDIF 121 123 … … 283 285 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 284 286 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_qsr, ztrdt ) 285 DEALLOCATE( ztrdt )287 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt ) 286 288 ENDIF 287 289 ! ! print mean trends (used for debugging) 288 290 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' qsr - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 289 291 ! 290 IF( wrk_not_released(3, 1,2,3,4,5) .OR. & 291 wrk_not_released(2, 1,2,3) ) CALL ctl_stop('tra_qsr: failed to release workspace arrays') 292 CALL wrk_dealloc( jpi, jpj, zekb, zekg, zekr ) 293 CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 294 ! 295 IF( nn_timing == 1 ) CALL timing_stop('tra_qsr') 292 296 ! 293 297 END SUBROUTINE tra_qsr … … 311 315 !! Reference : Jerlov, N. G., 1968 Optical Oceanography, Elsevier, 194pp. 312 316 !!---------------------------------------------------------------------- 313 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released314 USE wrk_nemo, ONLY: zekb => wrk_2d_1 , zekg => wrk_2d_2 , zekr => wrk_2d_3315 USE wrk_nemo, ONLY: ze0 => wrk_3d_1 , ze1 => wrk_3d_2 , ze2 => wrk_3d_3316 USE wrk_nemo, ONLY: ze3 => wrk_3d_4 , zea => wrk_3d_5317 317 ! 318 318 INTEGER :: ji, jj, jk ! dummy loop indices … … 320 320 REAL(wp) :: zz0, zc0 , zc1, zcoef ! local scalars 321 321 REAL(wp) :: zz1, zc2 , zc3, zchl ! - - 322 REAL(wp), POINTER, DIMENSION(:,: ) :: zekb, zekg, zekr 323 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea 322 324 ! 323 325 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files … … 328 330 !!---------------------------------------------------------------------- 329 331 330 IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use(3, 1,2,3,4,5) )THEN 331 CALL ctl_stop('tra_qsr_init: requested workspace arrays unavailable') ; RETURN 332 ENDIF 332 ! 333 IF( nn_timing == 1 ) CALL timing_start('tra_qsr_init') 334 ! 335 CALL wrk_alloc( jpi, jpj, zekb, zekg, zekr ) 336 CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 337 ! 333 338 334 339 cn_dir = './' ! directory in which the model is executed … … 504 509 ENDIF 505 510 ! 506 IF( wrk_not_released(2, 1,2,3) .OR. & 507 wrk_not_released(3, 1,2,3,4,5) ) CALL ctl_stop('tra_qsr_init: failed to release workspace arrays') 511 CALL wrk_dealloc( jpi, jpj, zekb, zekg, zekr ) 512 CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 513 ! 514 IF( nn_timing == 1 ) CALL timing_stop('tra_qsr_init') 508 515 ! 509 516 END SUBROUTINE tra_qsr_init -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r2715 r3159 28 28 USE iom 29 29 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 30 USE wrk_nemo_2 ! Memory Allocation 31 USE timing ! Timing 30 32 31 33 IMPLICIT NONE … … 108 110 INTEGER :: ji, jj, jk, jn ! dummy loop indices 109 111 REAL(wp) :: zfact, z1_e3t, zsrau, zdep 110 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE:: ztrdt, ztrds112 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds 111 113 !!---------------------------------------------------------------------- 112 114 ! 115 IF( nn_timing == 1 ) CALL timing_start('tra_sbc') 116 ! 113 117 IF( kt == nit000 ) THEN 114 118 IF(lwp) WRITE(numout,*) … … 120 124 121 125 IF( l_trdtra ) THEN !* Save ta and sa trends 122 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 123 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = tsa(:,:,:,jp_sal) 126 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 127 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 128 ztrds(:,:,:) = tsa(:,:,:,jp_sal) 124 129 ENDIF 125 130 … … 228 233 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_nsr, ztrdt ) 229 234 CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_nsr, ztrds ) 230 DEALLOCATE( ztrdt ) ; DEALLOCATE( ztrds )235 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 231 236 ENDIF 232 237 ! … … 234 239 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 235 240 ! 241 IF( nn_timing == 1 ) CALL timing_stop('tra_sbc') 242 ! 236 243 END SUBROUTINE tra_sbc 237 244 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90
r3116 r3159 30 30 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 31 USE lib_mpp ! MPP library 32 USE wrk_nemo_2 ! Memory allocation 33 USE timing ! Timing 32 34 33 35 … … 60 62 !! 61 63 INTEGER :: jk ! Dummy loop indices 62 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE:: ztrdt, ztrds ! 3D workspace64 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds ! 3D workspace 63 65 !!--------------------------------------------------------------------- 64 65 ! ! set time step 66 ! 67 IF( nn_timing == 1 ) CALL timing_start('tra_zdf') 68 ! 66 69 IF( neuler == 0 .AND. kt == nit000 ) THEN ! at nit000 67 70 r2dtra(:) = rdttra(:) ! = rdtra (restarting with Euler time stepping) … … 71 74 72 75 IF( l_trdtra ) THEN !* Save ta and sa trends 73 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 74 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = tsa(:,:,:,jp_sal) 76 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 77 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 78 ztrds(:,:,:) = tsa(:,:,:,jp_sal) 75 79 ENDIF 76 80 … … 94 98 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_zdf, ztrdt ) 95 99 CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_zdf, ztrds ) 96 DEALLOCATE( ztrdt ) ; DEALLOCATE( ztrds )100 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 97 101 ENDIF 98 102 … … 100 104 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' zdf - Ta: ', mask1=tmask, & 101 105 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 106 ! 107 IF( nn_timing == 1 ) CALL timing_stop('tra_zdf') 102 108 ! 103 109 END SUBROUTINE tra_zdf -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90
r3116 r3159 31 31 USE in_out_manager ! I/O manager 32 32 USE lib_mpp ! MPP library 33 USE wrk_nemo_2 ! Memory Allocation 34 USE timing ! Timing 33 35 34 36 IMPLICIT NONE … … 73 75 !! ** Action : - after tracer fields pta 74 76 !!--------------------------------------------------------------------- 75 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released76 USE wrk_nemo, ONLY: zwx => wrk_3d_6, zwy => wrk_3d_7 ! 3D workspace77 77 ! 78 78 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 88 88 REAL(wp) :: zlavmr, zave3r, ze3tr ! local scalars 89 89 REAL(wp) :: ztra, ze3tb ! - - 90 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwx, zwy 90 91 !!--------------------------------------------------------------------- 91 92 IF( wrk_in_use(3, 6,7) ) THEN 93 CALL ctl_stop('tra_zdf_exp: requested workspace arrays unavailable') ; RETURN 94 ENDIF 92 ! 93 IF( nn_timing == 1 ) CALL timing_start('tra_zdf_exp') 94 ! 95 CALL wrk_alloc( jpi, jpj, jpk, zwx, zwy ) 96 ! 95 97 96 98 IF( kt == kit000 ) THEN … … 165 167 END DO 166 168 ! 167 IF( wrk_not_released(3, 6,7) ) CALL ctl_stop('tra_zdf_exp: failed to release workspace arrays') 169 CALL wrk_dealloc( jpi, jpj, jpk, zwx, zwy ) 170 ! 171 IF( nn_timing == 1 ) CALL timing_stop('tra_zdf_exp') 168 172 ! 169 173 END SUBROUTINE tra_zdf_exp -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90
r3116 r3159 35 35 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 36 36 USE lib_mpp ! MPP library 37 USE wrk_nemo_2 ! Memory Allocation 38 USE timing ! Timing 37 39 38 40 IMPLICIT NONE … … 74 76 !! ** Action : - pta becomes the after tracer 75 77 !!--------------------------------------------------------------------- 76 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released77 78 USE oce , ONLY: zwd => ua , zws => va ! (ua,va) used as 3D workspace 78 USE wrk_nemo, ONLY: zwi => wrk_3d_6 , zwt => wrk_3d_7 ! 3D workspace79 79 ! 80 80 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 88 88 INTEGER :: ji, jj, jk, jn ! dummy loop indices 89 89 REAL(wp) :: zrhs, ze3tb, ze3tn, ze3ta ! local scalars 90 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwt 90 91 !!--------------------------------------------------------------------- 91 92 IF( wrk_in_use(3, 6,7) ) THEN93 CALL ctl_stop('tra_zdf_imp : requested workspace arrays unavailable.') ; RETURN94 ENDIF95 92 ! 93 IF( nn_timing == 1 ) CALL timing_start('tra_zdf_imp') 94 ! 95 CALL wrk_alloc( jpi, jpj, jpk, zwi, zwt ) 96 ! 96 97 IF( kt == kit000 ) THEN 97 98 IF(lwp)WRITE(numout,*) … … 229 230 ! ! ================= ! 230 231 ! 231 IF( wrk_not_released(3, 6,7) ) CALL ctl_stop('tra_zdf_imp: failed to release workspace arrays') 232 CALL wrk_dealloc( jpi, jpj, jpk, zwi, zwt ) 233 ! 234 IF( nn_timing == 1 ) CALL timing_stop('tra_zdf_imp') 232 235 ! 233 236 END SUBROUTINE tra_zdf_imp -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90
r2715 r3159 21 21 USE lbclnk ! lateral boundary conditions (or mpp link) 22 22 USE lib_mpp ! MPP library 23 USE wrk_nemo_2 ! Memory allocation 24 USE timing ! Timing 23 25 24 26 IMPLICIT NONE … … 81 83 !! - pgru, pgrv: horizontal gradient of rho (if present) at u- & v-points 82 84 !!---------------------------------------------------------------------- 83 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released84 USE wrk_nemo, ONLY: zri => wrk_2d_1 , zrj => wrk_2d_2 ! interpolated value of rd85 USE wrk_nemo, ONLY: zhi => wrk_2d_3 , zhj => wrk_2d_4 ! depth of interpolation for eos2d86 85 ! 87 86 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 95 94 INTEGER :: iku, ikv, ikum1, ikvm1 ! partial step level (ocean bottom level) at u- and v-points 96 95 REAL(wp) :: ze3wu, ze3wv, zmaxu, zmaxv ! temporary scalars 97 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zti, ztj ! interpolated value of tracer 96 REAL(wp), POINTER, DIMENSION(:,: ) :: zri, zrj, zhi, zhj 97 REAL(wp), POINTER, DIMENSION(:,:,:) :: zti, ztj ! interpolated value of tracer 98 98 !!---------------------------------------------------------------------- 99 100 IF( wrk_in_use(2, 1,2,3,4) ) THEN 101 CALL ctl_stop('zps_hde: requested workspace arrays unavailable') ; RETURN 102 END IF 103 104 ! Allocate workspaces whose dimension is > jpk 105 ALLOCATE( zti(jpi,jpj,kjpt) ) 106 ALLOCATE( ztj(jpi,jpj,kjpt) ) 107 99 ! 100 IF( nn_timing == 1 ) CALL timing_start( 'zps_hde') 101 ! 102 CALL wrk_alloc( jpi, jpj, zri, zrj, zhi, zhj ) 103 CALL wrk_alloc( jpi, jpj, kjpt, zti, ztj ) 104 ! 108 105 DO jn = 1, kjpt !== Interpolation of tracers at the last ocean level ==! 109 106 ! … … 183 180 ! Compute interpolated rd from zti, ztj for the 2 cases at the depth of the partial 184 181 ! step and store it in zri, zrj for each case 185 CALL eos( zti, zhi, zri ) ; CALL eos( ztj, zhj, zrj ) 182 CALL eos( zti, zhi, zri ) 183 CALL eos( ztj, zhj, zrj ) 186 184 187 185 ! Gradient of density at the last level … … 211 209 END IF 212 210 ! 213 IF( wrk_not_released(2, 1,2,3,4) ) CALL ctl_stop('zps_hde: failed to release workspace arrays')214 !215 DEALLOCATE( zti )216 DEALLOCATE( ztj)211 CALL wrk_dealloc( jpi, jpj, zri, zrj, zhi, zhj ) 212 CALL wrk_dealloc( jpi, jpj, kjpt, zti, ztj ) 213 ! 214 IF( nn_timing == 1 ) CALL timing_stop( 'zps_hde') 217 215 ! 218 216 END SUBROUTINE zps_hde
Note: See TracChangeset
for help on using the changeset viewer.