- Timestamp:
- 2014-05-12T22:46:18+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r4045 r4634 12 12 !! ! 1999-02 (E. Guilyardi) name of netCDF files + variables 13 13 !! 8.2 ! 2000-06 (M. Imbard) Original code (diabort.F) 14 !! NEMO 1.0 ! 2002-06 ( A.Bozec, E. Durand) Original code (diainit.F)14 !! NEMO 1.0 ! 2002-06 (RUN025_CTL_DIAGA.Bozec, E. Durand) Original code (diainit.F) 15 15 !! - ! 2002-09 (G. Madec) F90: Free form and module 16 16 !! - ! 2002-12 (G. Madec) merge of diabort and diainit, F90 … … 129 129 REAL(wp) :: zztmp, zztmpx, zztmpy ! 130 130 !! 131 REAL(wp), POINTER, DIMENSION(:,:) :: z2d ! 2D workspace 131 REAL(wp), POINTER, DIMENSION(:,:) :: z2d ! 2D workspace 132 REAL(wp), POINTER, DIMENSION(:,:) :: z2ds ! 2D workspace 132 133 REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d ! 3D workspace 133 134 !!---------------------------------------------------------------------- … … 135 136 IF( nn_timing == 1 ) CALL timing_start('dia_wri') 136 137 ! 137 CALL wrk_alloc( jpi , jpj , z2d )138 CALL wrk_alloc( jpi , jpj , z2d , z2ds ) 138 139 CALL wrk_alloc( jpi , jpj, jpk , z3d ) 139 140 ! … … 176 177 CALL iom_put( "sstgrad" , z2d ) ! module of sst gradient 177 178 179 ! clem: heat and salt content 180 z2d(:,:) = 0._wp 181 z2ds(:,:) = 0._wp 182 DO jk = 1, jpkm1 183 DO jj = 2, jpjm1 184 DO ji = fs_2, fs_jpim1 ! vector opt. 185 z2d(ji,jj) = z2d(ji,jj) + rau0 * rcp * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 186 z2ds(ji,jj) = z2ds(ji,jj) + rau0 * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 187 END DO 188 END DO 189 END DO 190 CALL lbc_lnk( z2d, 'T', 1. ) 191 CALL lbc_lnk( z2ds, 'T', 1. ) 192 CALL iom_put( "heatc", z2d ) ! vertically integrated heat content (J/m2) 193 CALL iom_put( "saltc", z2ds ) ! vertically integrated salt content (PSU*kg/m2) 194 195 178 196 IF( lk_diaar5 ) THEN 179 197 z3d(:,:,jpk) = 0.e0 180 198 DO jk = 1, jpkm1 181 z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) 199 z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 182 200 END DO 183 201 CALL iom_put( "u_masstr", z3d ) ! mass transport in i-direction 202 184 203 zztmp = 0.5 * rcp 185 204 z2d(:,:) = 0.e0 205 z2ds(:,:) = 0.e0 186 206 DO jk = 1, jpkm1 187 207 DO jj = 2, jpjm1 188 208 DO ji = fs_2, fs_jpim1 ! vector opt. 189 209 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 210 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) ) 190 211 END DO 191 212 END DO 192 213 END DO 193 214 CALL lbc_lnk( z2d, 'U', -1. ) 215 CALL lbc_lnk( z2ds, 'U', -1. ) 194 216 CALL iom_put( "u_heattr", z2d ) ! heat transport in i-direction 217 CALL iom_put( "u_salttr", z2ds ) ! salt transport in i-direction 218 219 z3d(:,:,jpk) = 0.e0 195 220 DO jk = 1, jpkm1 196 z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) 221 z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 197 222 END DO 198 223 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction 224 199 225 z2d(:,:) = 0.e0 226 z2ds(:,:) = 0.e0 200 227 DO jk = 1, jpkm1 201 228 DO jj = 2, jpjm1 202 229 DO ji = fs_2, fs_jpim1 ! vector opt. 203 230 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 231 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) ) 204 232 END DO 205 233 END DO 206 234 END DO 207 235 CALL lbc_lnk( z2d, 'V', -1. ) 208 CALL iom_put( "v_heattr", z2d ) ! heat transport in i-direction 209 ENDIF 210 ! 211 CALL wrk_dealloc( jpi , jpj , z2d ) 236 CALL lbc_lnk( z2ds, 'V', -1. ) 237 CALL iom_put( "v_heattr", z2d ) ! heat transport in j-direction 238 CALL iom_put( "v_salttr", z2ds ) ! salt transport in j-direction 239 ENDIF 240 ! 241 CALL wrk_dealloc( jpi , jpj , z2d , z2ds ) 212 242 CALL wrk_dealloc( jpi , jpj, jpk , z3d ) 213 243 !
Note: See TracChangeset
for help on using the changeset viewer.