- Timestamp:
- 2011-11-18T22:41:44+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.