- Timestamp:
- 2016-06-09T18:34:00+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GC3p0_package_v2/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90
r6462 r6679 28 28 USE wrk_nemo ! Memory Allocation 29 29 USE timing ! Timing 30 USE diaptr ! Heat/Salt transport diagnostics 30 31 31 32 IMPLICIT NONE … … 78 79 # endif 79 80 REAL(wp), POINTER, DIMENSION(:,:) :: zu_eiv, zv_eiv, zw_eiv, z2d 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d 80 82 !!---------------------------------------------------------------------- 81 83 ! … … 84 86 # if defined key_diaeiv 85 87 CALL wrk_alloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv, z2d ) 88 IF( ln_diaptr ) CALL wrk_alloc( jpi, jpj, jpk, z3d ) 86 89 # else 87 90 CALL wrk_alloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv ) … … 160 163 CALL iom_put( "voce_eiv", v_eiv ) ! j-eiv current 161 164 CALL iom_put( "woce_eiv", w_eiv ) ! vert. eiv current 165 IF( iom_use('weiv_masstr') ) THEN ! vertical mass transport & its square value 166 z2d(:,:) = rau0 * e12t(:,:) 167 DO jk = 1, jpk 168 z3d(:,:,jk) = w_eiv(:,:,jk) * z2d(:,:) 169 END DO 170 CALL iom_put( "weiv_masstr" , z3d ) 171 ENDIF 172 IF( iom_use("ueiv_masstr") .OR. iom_use("ueiv_heattr") ) THEN 173 z3d(:,:,jpk) = 0.e0 174 z2d(:,:) = 0.e0 175 DO jk = 1, jpkm1 176 z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 177 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 178 END DO 179 CALL iom_put( "ueiv_masstr", z3d ) ! mass transport in i-direction 180 ENDIF 181 162 182 IF( iom_use('ueiv_heattr') ) THEN 163 183 zztmp = 0.5 * rau0 * rcp … … 166 186 DO jj = 2, jpjm1 167 187 DO ji = fs_2, fs_jpim1 ! vector opt. 168 z2d(ji,jj) = z2d(ji,jj) + u_eiv(ji,jj,jk) & 169 & * (tsn(ji,jj,jk,jp_tem)+tsn(ji+1,jj,jk,jp_tem)) * e2u(ji,jj) * fse3u(ji,jj,jk) 188 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 170 189 END DO 171 190 END DO … … 174 193 CALL iom_put( "ueiv_heattr", zztmp * z2d ) ! heat transport in i-direction 175 194 ENDIF 195 196 IF( iom_use("veiv_masstr") .OR. iom_use("veiv_heattr") ) THEN 197 z3d(:,:,jpk) = 0.e0 198 z2d(:,:) = 0.e0 199 DO jk = 1, jpkm1 200 z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 201 END DO 202 CALL iom_put( "veiv_masstr", z3d ) ! mass transport in j-direction 203 ENDIF 176 204 177 205 IF( iom_use('veiv_heattr') ) THEN 178 zztmp = 0.5 * rau0 * rcp179 206 z2d(:,:) = 0.e0 180 207 DO jk = 1, jpkm1 181 208 DO jj = 2, jpjm1 182 209 DO ji = fs_2, fs_jpim1 ! vector opt. 183 z2d(ji,jj) = z2d(ji,jj) + v_eiv(ji,jj,jk) & 184 & * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) * e1v(ji,jj) * fse3v(ji,jj,jk) 210 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 185 211 END DO 186 212 END DO … … 190 216 ENDIF 191 217 END IF 218 ! 219 IF( ln_diaptr .AND. cdtype == 'TRA' ) THEN 220 z3d(:,:,:) = 0._wp 221 DO jk = 1, jpkm1 222 DO jj = 2, jpjm1 223 DO ji = fs_2, fs_jpim1 ! vector opt. 224 z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) & 225 & * e1v(ji,jj) * fse3v(ji,jj,jk) 226 END DO 227 END DO 228 END DO 229 CALL dia_ptr_ohst_components( jp_tem, 'eiv', z3d ) 230 z3d(:,:,:) = 0._wp 231 DO jk = 1, jpkm1 232 DO jj = 2, jpjm1 233 DO ji = fs_2, fs_jpim1 ! vector opt. 234 z3d(ji,jj,jk) = v_eiv(ji,jj,jk) * 0.5 * (tsn(ji,jj,jk,jp_sal)+tsn(ji,jj+1,jk,jp_sal)) & 235 & * e1v(ji,jj) * fse3v(ji,jj,jk) 236 END DO 237 END DO 238 END DO 239 CALL dia_ptr_ohst_components( jp_sal, 'eiv', z3d ) 240 ENDIF 192 241 # endif 193 ! 242 194 243 # if defined key_diaeiv 195 244 CALL wrk_dealloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv, z2d ) 245 IF( ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, z3d ) 196 246 # else 197 247 CALL wrk_dealloc( jpi, jpj, zu_eiv, zv_eiv, zw_eiv )
Note: See TracChangeset
for help on using the changeset viewer.