Changeset 3294 for trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90
r2715 r3294 19 19 USE lib_mpp ! distribued memory computing library 20 20 USE iom ! I/O manager library 21 USE timing ! preformance summary 22 USE wrk_nemo ! working arrays 21 23 22 24 IMPLICIT NONE … … 65 67 !! ** Purpose : compute and output some AR5 diagnostics 66 68 !!---------------------------------------------------------------------- 67 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released68 USE wrk_nemo, ONLY: zarea_ssh => wrk_2d_1 , zbotpres => wrk_2d_2 ! 2D workspace69 USE wrk_nemo, ONLY: zrhd => wrk_3d_1 , zrhop => wrk_3d_2 ! 3D -70 USE wrk_nemo, ONLY: ztsn => wrk_4d_1 ! 4D -71 69 ! 72 70 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 74 72 INTEGER :: ji, jj, jk ! dummy loop arguments 75 73 REAL(wp) :: zvolssh, zvol, zssh_steric, zztmp, zarho, ztemp, zsal, zmass 74 ! 75 REAL(wp), POINTER, DIMENSION(:,:) :: zarea_ssh , zbotpres ! 2D workspace 76 REAL(wp), POINTER, DIMENSION(:,:,:) :: zrhd , zrhop ! 3D workspace 77 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztsn ! 4D workspace 76 78 !!-------------------------------------------------------------------- 77 78 IF( wrk_in_use(2, 1,2) .OR. & 79 wrk_in_use(3, 1,2) .OR. & 80 wrk_in_use(4, 1) ) THEN 81 CALL ctl_stop('dia_ar5: requested workspace arrays unavailable') ; RETURN 82 ENDIF 79 IF( nn_timing == 1 ) CALL timing_start('dia_ar5') 80 81 CALL wrk_alloc( jpi , jpj , zarea_ssh , zbotpres ) 82 CALL wrk_alloc( jpi , jpj , jpk , zrhd , zrhop ) 83 CALL wrk_alloc( jpi , jpj , jpk , jpts , ztsn ) 83 84 84 85 CALL iom_put( 'cellthc', fse3t(:,:,:) ) … … 94 95 CALL iom_put( 'sshtot', zvolssh / area_tot ) 95 96 96 ! ! thermosteric ssh97 ztsn(:,:,:,jp_tem) = t n (:,:,:)97 ! 98 ztsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) ! thermosteric ssh 98 99 ztsn(:,:,:,jp_sal) = sn0(:,:,:) 99 100 CALL eos( ztsn, zrhd ) ! now in situ density using initial salinity … … 138 139 DO ji = 1, jpi 139 140 zztmp = area(ji,jj) * fse3t(ji,jj,jk) 140 ztemp = ztemp + zztmp * t n(ji,jj,jk)141 zsal = zsal + zztmp * sn(ji,jj,jk)141 ztemp = ztemp + zztmp * tsn(ji,jj,jk,jp_tem) 142 zsal = zsal + zztmp * tsn(ji,jj,jk,jp_sal) 142 143 END DO 143 144 END DO 144 145 END DO 145 146 IF( .NOT.lk_vvl ) THEN 146 ztemp = ztemp + SUM( zarea_ssh(:,:) * t n(:,:,1) )147 zsal = zsal + SUM( zarea_ssh(:,:) * sn(:,:,1) )147 ztemp = ztemp + SUM( zarea_ssh(:,:) * tsn(:,:,1,jp_tem) ) 148 zsal = zsal + SUM( zarea_ssh(:,:) * tsn(:,:,1,jp_sal) ) 148 149 ENDIF 149 150 IF( lk_mpp ) THEN … … 160 161 CALL iom_put( 'saltot' , zsal ) 161 162 ! 162 IF( wrk_not_released(2, 1,2) .OR. & 163 wrk_not_released(3, 1,2) .OR. & 164 wrk_not_released(4, 1) ) CALL ctl_stop('dia_ar5: failed to release workspace arrays') 163 CALL wrk_dealloc( jpi , jpj , zarea_ssh , zbotpres ) 164 CALL wrk_dealloc( jpi , jpj , jpk , zrhd , zrhop ) 165 CALL wrk_dealloc( jpi , jpj , jpk , jpts , ztsn ) 166 ! 167 IF( nn_timing == 1 ) CALL timing_stop('dia_ar5') 165 168 ! 166 169 END SUBROUTINE dia_ar5 … … 173 176 !! ** Purpose : initialization for AR5 diagnostic computation 174 177 !!---------------------------------------------------------------------- 175 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released176 USE wrk_nemo, ONLY: wrk_4d_1 ! 4D workspace177 !178 178 INTEGER :: inum 179 179 INTEGER :: ik … … 183 183 !!---------------------------------------------------------------------- 184 184 ! 185 IF(wrk_in_use(4, 1) ) THEN 186 CALL ctl_stop('dia_ar5_init: requested workspace array unavailable.') ; RETURN 187 ENDIF 188 zsaldta => wrk_4d_1(:,:,:,1:2) 189 185 IF( nn_timing == 1 ) CALL timing_start('dia_ar5_init') 186 ! 187 CALL wrk_alloc( jpi , jpj , jpk, jpts, zsaldta ) 190 188 ! ! allocate dia_ar5 arrays 191 189 IF( dia_ar5_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' ) … … 221 219 ENDIF 222 220 ! 223 IF( wrk_not_released(4, 1) ) CALL ctl_stop('dia_ar5_init: failed to release workspace array') 221 CALL wrk_dealloc( jpi , jpj , jpk, jpts, zsaldta ) 222 ! 223 IF( nn_timing == 1 ) CALL timing_stop('dia_ar5_init') 224 224 ! 225 225 END SUBROUTINE dia_ar5_init
Note: See TracChangeset
for help on using the changeset viewer.