- Timestamp:
- 2014-11-27T17:13:38+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r4901 r4902 45 45 USE diadimg ! dimg direct access file format output 46 46 USE diaar5, ONLY : lk_diaar5 47 USE dynadv, ONLY : ln_dynadv_vec48 47 USE iom 49 48 USE ioipsl … … 129 128 REAL(wp) :: zztmp, zztmpx, zztmpy ! 130 129 !! 131 REAL(wp), POINTER, DIMENSION(:,:) :: z2d ! 2D workspace 130 REAL(wp), POINTER, DIMENSION(:,:) :: z2d ! 2D workspace 131 REAL(wp), POINTER, DIMENSION(:,:) :: z2ds ! 2D workspace 132 132 REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d ! 3D workspace 133 133 !!---------------------------------------------------------------------- … … 135 135 IF( nn_timing == 1 ) CALL timing_start('dia_wri') 136 136 ! 137 CALL wrk_alloc( jpi , jpj , z2d )137 CALL wrk_alloc( jpi , jpj , z2d , z2ds ) 138 138 CALL wrk_alloc( jpi , jpj, jpk , z3d ) 139 139 ! … … 192 192 CALL iom_put( "sstgrad" , z2d ) ! module of sst gradient 193 193 194 ! clem: heat and salt content 195 z2d(:,:) = 0._wp 196 z2ds(:,:) = 0._wp 197 DO jk = 1, jpkm1 198 DO jj = 2, jpjm1 199 DO ji = fs_2, fs_jpim1 ! vector opt. 200 z2d(ji,jj) = z2d(ji,jj) + rau0 * rcp * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 201 z2ds(ji,jj) = z2ds(ji,jj) + rau0 * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 202 END DO 203 END DO 204 END DO 205 CALL lbc_lnk( z2d, 'T', 1. ) 206 CALL lbc_lnk( z2ds, 'T', 1. ) 207 CALL iom_put( "heatc", z2d ) ! vertically integrated heat content (J/m2) 208 CALL iom_put( "saltc", z2ds ) ! vertically integrated salt content (PSU*kg/m2) 209 210 ! 211 rke(:,:,jk) = 0._wp ! kinetic energy 212 DO jk = 1, jpkm1 213 DO jj = 2, jpjm1 214 DO ji = fs_2, fs_jpim1 ! vector opt. 215 zztmp = 1._wp / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 216 zztmpx = 0.5 * ( un(ji-1,jj,jk) * un(ji-1,jj,jk) * e2u(ji-1,jj) * fse3u(ji-1,jj,jk) & 217 & + un(ji ,jj,jk) * un(ji ,jj,jk) * e2u(ji ,jj) * fse3u(ji ,jj,jk) ) & 218 & * zztmp 219 ! 220 zztmpy = 0.5 * ( vn(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1v(ji,jj-1) * fse3v(ji,jj-1,jk) & 221 & + vn(ji,jj ,jk) * vn(ji,jj ,jk) * e1v(ji,jj ) * fse3v(ji,jj ,jk) ) & 222 & * zztmp 223 ! 224 rke(ji,jj,jk) = 0.5_wp * ( zztmpx + zztmpy ) 225 ! 226 ENDDO 227 ENDDO 228 ENDDO 229 CALL lbc_lnk( rke, 'T', 1. ) 230 CALL iom_put( "eken", rke ) 231 194 232 IF( lk_diaar5 ) THEN 195 233 z3d(:,:,jpk) = 0.e0 196 234 DO jk = 1, jpkm1 197 z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) 235 z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 198 236 END DO 199 237 CALL iom_put( "u_masstr", z3d ) ! mass transport in i-direction 238 200 239 zztmp = 0.5 * rcp 201 240 z2d(:,:) = 0.e0 241 z2ds(:,:) = 0.e0 202 242 DO jk = 1, jpkm1 203 243 DO jj = 2, jpjm1 204 244 DO ji = fs_2, fs_jpim1 ! vector opt. 205 245 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 246 z2ds(ji,jj) = z2ds(ji,jj) + z3d(ji,jj,jk) * 0.5_wp * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) ) 206 247 END DO 207 248 END DO 208 249 END DO 209 250 CALL lbc_lnk( z2d, 'U', -1. ) 251 CALL lbc_lnk( z2ds, 'U', -1. ) 210 252 CALL iom_put( "u_heattr", z2d ) ! heat transport in i-direction 253 CALL iom_put( "u_salttr", z2ds ) ! salt transport in i-direction 254 255 z3d(:,:,jpk) = 0.e0 211 256 DO jk = 1, jpkm1 212 z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) 257 z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 213 258 END DO 214 259 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction 260 215 261 z2d(:,:) = 0.e0 262 z2ds(:,:) = 0.e0 216 263 DO jk = 1, jpkm1 217 264 DO jj = 2, jpjm1 218 265 DO ji = fs_2, fs_jpim1 ! vector opt. 219 266 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 267 z2ds(ji,jj) = z2ds(ji,jj) + z3d(ji,jj,jk) * 0.5_wp * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) ) 220 268 END DO 221 269 END DO 222 270 END DO 223 271 CALL lbc_lnk( z2d, 'V', -1. ) 224 CALL iom_put( "v_heattr", z2d ) ! heat transport in i-direction 225 ENDIF 226 ! 227 CALL wrk_dealloc( jpi , jpj , z2d ) 272 CALL lbc_lnk( z2ds, 'V', -1. ) 273 CALL iom_put( "v_heattr", z2d ) ! heat transport in j-direction 274 CALL iom_put( "v_salttr", z2ds ) ! salt transport in j-direction 275 ENDIF 276 ! 277 CALL wrk_dealloc( jpi , jpj , z2d , z2ds ) 228 278 CALL wrk_dealloc( jpi , jpj, jpk , z3d ) 229 279 !
Note: See TracChangeset
for help on using the changeset viewer.