- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/tests
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/tests
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/tests/CANAL/MY_SRC/diawri.F90
r11536 r11949 57 57 USE lib_mpp ! MPP library 58 58 USE timing ! preformance summary 59 USE diu rnal_bulk! diurnal warm layer60 USE cool_skin! Cool skin59 USE diu_bulk ! diurnal warm layer 60 USE diu_coolskin ! Cool skin 61 61 62 62 IMPLICIT NONE … … 97 97 98 98 99 SUBROUTINE dia_wri( kt )99 SUBROUTINE dia_wri( kt, Kmm ) 100 100 !!--------------------------------------------------------------------- 101 101 !! *** ROUTINE dia_wri *** … … 107 107 !!---------------------------------------------------------------------- 108 108 INTEGER, INTENT( in ) :: kt ! ocean time-step index 109 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 109 110 !! 110 111 INTEGER :: ji, jj, jk ! dummy loop indices … … 115 116 REAL(wp), DIMENSION(jpi,jpj) :: z2d ! 2D workspace 116 117 REAL(wp), DIMENSION(jpi,jpj,jpk) :: z3d ! 3D workspace 117 REAL(wp), DIMENSION(jpi,jpj,jpk) :: bu, bv ! volume of u- and v-boxes118 REAL(wp), DIMENSION(jpi,jpj,jpk) :: r1_bt ! inverse of t-box volume119 118 !!---------------------------------------------------------------------- 120 119 ! … … 123 122 ! Output the initial state and forcings 124 123 IF( ninist == 1 ) THEN 125 CALL dia_wri_state( 'output.init' )124 CALL dia_wri_state( Kmm, 'output.init' ) 126 125 ninist = 0 127 126 ENDIF … … 132 131 CALL iom_put("e3v_0", e3v_0(:,:,:) ) 133 132 ! 134 CALL iom_put( "e3t" , e3t _n(:,:,:) )135 CALL iom_put( "e3u" , e3u _n(:,:,:) )136 CALL iom_put( "e3v" , e3v _n(:,:,:) )137 CALL iom_put( "e3w" , e3w _n(:,:,:) )133 CALL iom_put( "e3t" , e3t(:,:,:,Kmm) ) 134 CALL iom_put( "e3u" , e3u(:,:,:,Kmm) ) 135 CALL iom_put( "e3v" , e3v(:,:,:,Kmm) ) 136 CALL iom_put( "e3w" , e3w(:,:,:,Kmm) ) 138 137 IF( iom_use("e3tdef") ) & 139 CALL iom_put( "e3tdef" , ( ( e3t _n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 )138 CALL iom_put( "e3tdef" , ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 140 139 141 140 IF( ll_wd ) THEN 142 CALL iom_put( "ssh" , (ssh n+ssh_ref)*tmask(:,:,1) ) ! sea surface height (brought back to the reference used for wetting and drying)141 CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*tmask(:,:,1) ) ! sea surface height (brought back to the reference used for wetting and drying) 143 142 ELSE 144 CALL iom_put( "ssh" , ssh n) ! sea surface height143 CALL iom_put( "ssh" , ssh(:,:,Kmm) ) ! sea surface height 145 144 ENDIF 146 145 147 146 IF( iom_use("wetdep") ) & ! wet depth 148 CALL iom_put( "wetdep" , ht_0(:,:) + ssh n(:,:) )147 CALL iom_put( "wetdep" , ht_0(:,:) + ssh(:,:,Kmm) ) 149 148 150 CALL iom_put( "toce", ts n(:,:,:,jp_tem) ) ! 3D temperature151 CALL iom_put( "sst", ts n(:,:,1,jp_tem) ) ! surface temperature149 CALL iom_put( "toce", ts(:,:,:,jp_tem,Kmm) ) ! 3D temperature 150 CALL iom_put( "sst", ts(:,:,1,jp_tem,Kmm) ) ! surface temperature 152 151 IF ( iom_use("sbt") ) THEN 153 152 DO jj = 1, jpj 154 153 DO ji = 1, jpi 155 154 ikbot = mbkt(ji,jj) 156 z2d(ji,jj) = ts n(ji,jj,ikbot,jp_tem)155 z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) 157 156 END DO 158 157 END DO … … 160 159 ENDIF 161 160 162 CALL iom_put( "soce", ts n(:,:,:,jp_sal) ) ! 3D salinity163 CALL iom_put( "sss", ts n(:,:,1,jp_sal) ) ! surface salinity161 CALL iom_put( "soce", ts(:,:,:,jp_sal,Kmm) ) ! 3D salinity 162 CALL iom_put( "sss", ts(:,:,1,jp_sal,Kmm) ) ! surface salinity 164 163 IF ( iom_use("sbs") ) THEN 165 164 DO jj = 1, jpj 166 165 DO ji = 1, jpi 167 166 ikbot = mbkt(ji,jj) 168 z2d(ji,jj) = ts n(ji,jj,ikbot,jp_sal)167 z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) 169 168 END DO 170 169 END DO … … 177 176 DO jj = 2, jpjm1 178 177 DO ji = fs_2, fs_jpim1 ! vector opt. 179 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * u n(ji ,jj,mbku(ji ,jj)) )**2 &180 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * u n(ji-1,jj,mbku(ji-1,jj)) )**2 &181 & + ( ( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj ) ) * v n(ji,jj ,mbkv(ji,jj )) )**2 &182 & + ( ( rCdU_bot(ji,jj )+rCdU_bot(ji,jj-1) ) * v n(ji,jj-1,mbkv(ji,jj-1)) )**2178 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * uu(ji ,jj,mbku(ji ,jj),Kmm) )**2 & 179 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * uu(ji-1,jj,mbku(ji-1,jj),Kmm) )**2 & 180 & + ( ( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj ) ) * vv(ji,jj ,mbkv(ji,jj ),Kmm) )**2 & 181 & + ( ( rCdU_bot(ji,jj )+rCdU_bot(ji,jj-1) ) * vv(ji,jj-1,mbkv(ji,jj-1),Kmm) )**2 183 182 z2d(ji,jj) = zztmp * SQRT( zztmp2 ) * tmask(ji,jj,1) 184 183 ! … … 189 188 ENDIF 190 189 191 CALL iom_put( "uoce", u n(:,:,:) ) ! 3D i-current192 CALL iom_put( "ssu", u n(:,:,1) ) ! surface i-current190 CALL iom_put( "uoce", uu(:,:,:,Kmm) ) ! 3D i-current 191 CALL iom_put( "ssu", uu(:,:,1,Kmm) ) ! surface i-current 193 192 IF ( iom_use("sbu") ) THEN 194 193 DO jj = 1, jpj 195 194 DO ji = 1, jpi 196 195 ikbot = mbku(ji,jj) 197 z2d(ji,jj) = u n(ji,jj,ikbot)196 z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) 198 197 END DO 199 198 END DO … … 201 200 ENDIF 202 201 203 CALL iom_put( "voce", v n(:,:,:) ) ! 3D j-current204 CALL iom_put( "ssv", v n(:,:,1) ) ! surface j-current202 CALL iom_put( "voce", vv(:,:,:,Kmm) ) ! 3D j-current 203 CALL iom_put( "ssv", vv(:,:,1,Kmm) ) ! surface j-current 205 204 IF ( iom_use("sbv") ) THEN 206 205 DO jj = 1, jpj 207 206 DO ji = 1, jpi 208 207 ikbot = mbkv(ji,jj) 209 z2d(ji,jj) = v n(ji,jj,ikbot)208 z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) 210 209 END DO 211 210 END DO … … 213 212 ENDIF 214 213 215 CALL iom_put( "woce", w n) ! vertical velocity214 CALL iom_put( "woce", ww ) ! vertical velocity 216 215 IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN ! vertical mass transport & its square value 217 216 ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 218 217 z2d(:,:) = rau0 * e1e2t(:,:) 219 218 DO jk = 1, jpk 220 z3d(:,:,jk) = w n(:,:,jk) * z2d(:,:)219 z3d(:,:,jk) = ww(:,:,jk) * z2d(:,:) 221 220 END DO 222 221 CALL iom_put( "w_masstr" , z3d ) … … 236 235 DO jj = 2, jpjm1 ! sal gradient 237 236 DO ji = fs_2, fs_jpim1 ! vector opt. 238 zztmp = ts n(ji,jj,jk,jp_sal)239 zztmpx = ( ts n(ji+1,jj,jk,jp_sal) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - tsn(ji-1,jj ,jk,jp_sal) ) * r1_e1u(ji-1,jj)240 zztmpy = ( ts n(ji,jj+1,jk,jp_sal) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - tsn(ji ,jj-1,jk,jp_sal) ) * r1_e2v(ji,jj-1)237 zztmp = ts(ji,jj,jk,jp_sal,Kmm) 238 zztmpx = ( ts(ji+1,jj,jk,jp_sal,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj ,jk,jp_sal,Kmm) ) * r1_e1u(ji-1,jj) 239 zztmpy = ( ts(ji,jj+1,jk,jp_sal,Kmm) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - ts(ji ,jj-1,jk,jp_sal,Kmm) ) * r1_e2v(ji,jj-1) 241 240 z3d(ji,jj,jk) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 242 241 & * umask(ji,jj,jk) * umask(ji-1,jj,jk) * vmask(ji,jj,jk) * umask(ji,jj-1,jk) … … 253 252 DO jj = 2, jpjm1 ! sst gradient 254 253 DO ji = fs_2, fs_jpim1 ! vector opt. 255 zztmp = ts n(ji,jj,1,jp_tem)256 zztmpx = ( ts n(ji+1,jj,1,jp_tem) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - tsn(ji-1,jj ,1,jp_tem) ) * r1_e1u(ji-1,jj)257 zztmpy = ( ts n(ji,jj+1,1,jp_tem) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - tsn(ji ,jj-1,1,jp_tem) ) * r1_e2v(ji,jj-1)254 zztmp = ts(ji,jj,1,jp_tem,Kmm) 255 zztmpx = ( ts(ji+1,jj,1,jp_tem,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj ,1,jp_tem,Kmm) ) * r1_e1u(ji-1,jj) 256 zztmpy = ( ts(ji,jj+1,1,jp_tem,Kmm) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - ts(ji ,jj-1,1,jp_tem,Kmm) ) * r1_e2v(ji,jj-1) 258 257 z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 259 258 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) … … 272 271 DO jj = 1, jpj 273 272 DO ji = 1, jpi 274 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk)273 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 275 274 END DO 276 275 END DO … … 284 283 DO jj = 1, jpj 285 284 DO ji = 1, jpi 286 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk)285 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 287 286 END DO 288 287 END DO … … 296 295 DO jj = 1, jpj 297 296 DO ji = 1, jpi 298 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk)297 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 299 298 END DO 300 299 END DO … … 306 305 z3d(:,:,jpk) = 0._wp 307 306 DO jk = 1, jpkm1 308 DO jj = 2, jpj 309 DO ji = 2, jpi 310 zztmpx = 0.5 * ( un(ji-1,jj ,jk) + un(ji,jj,jk) ) 311 zztmpy = 0.5 * ( vn(ji ,jj-1,jk) + vn(ji,jj,jk) ) 312 z3d(ji,jj,jk) = 0.5 * ( zztmpx*zztmpx + zztmpy*zztmpy ) 307 DO jj = 2, jpjm1 308 DO ji = fs_2, fs_jpim1 ! vector opt. 309 zztmp = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 310 z3d(ji,jj,jk) = zztmp * ( uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 311 & + uu(ji ,jj,jk,Kmm)**2 * e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 312 & + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) & 313 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 313 314 END DO 314 315 END DO … … 326 327 DO jj = 2, jpj 327 328 DO ji = 2, jpi 328 z3d(ji,jj,jk) = 0.25_wp * ( u n(ji ,jj,jk) * un(ji ,jj,jk) * e1e2u(ji ,jj) * e3u_n(ji ,jj,jk) &329 & + u n(ji-1,jj,jk) * un(ji-1,jj,jk) * e1e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) &330 & + v n(ji,jj ,jk) * vn(ji,jj ,jk) * e1e2v(ji,jj ) * e3v_n(ji,jj ,jk) &331 & + v n(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1e2v(ji,jj-1) * e3v_n(ji,jj-1,jk) ) &332 & * r1_e1e2t(ji,jj) / e3t _n(ji,jj,jk) * tmask(ji,jj,jk)329 z3d(ji,jj,jk) = 0.25_wp * ( uu(ji ,jj,jk,Kmm) * uu(ji ,jj,jk,Kmm) * e1e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 330 & + uu(ji-1,jj,jk,Kmm) * uu(ji-1,jj,jk,Kmm) * e1e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 331 & + vv(ji,jj ,jk,Kmm) * vv(ji,jj ,jk,Kmm) * e1e2v(ji,jj ) * e3v(ji,jj ,jk,Kmm) & 332 & + vv(ji,jj-1,jk,Kmm) * vv(ji,jj-1,jk,Kmm) * e1e2v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) ) & 333 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 333 334 END DO 334 335 END DO … … 342 343 DO jj = 1, jpj 343 344 DO ji = 1, jpi 344 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * z3d(ji,jj,jk) * tmask(ji,jj,jk)345 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * tmask(ji,jj,jk) 345 346 END DO 346 347 END DO … … 350 351 ENDIF 351 352 ! 352 CALL iom_put( "hdiv", hdiv n) ! Horizontal divergence353 CALL iom_put( "hdiv", hdiv ) ! Horizontal divergence 353 354 354 355 IF ( iom_use("relvor") .OR. iom_use("absvor") .OR. iom_use("potvor") ) THEN … … 358 359 DO jj = 1, jpjm1 359 360 DO ji = 1, fs_jpim1 ! vector opt. 360 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) &361 & - e1u(ji ,jj+1) * u n(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) * r1_e1e2f(ji,jj)361 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vv(ji+1,jj ,jk,Kmm) - e2v(ji,jj) * vv(ji,jj,jk,Kmm) & 362 & - e1u(ji ,jj+1) * uu(ji ,jj+1,jk,Kmm) + e1u(ji,jj) * uu(ji,jj,jk,Kmm) ) * r1_e1e2f(ji,jj) 362 363 END DO 363 364 END DO … … 378 379 DO jj = 1, jpjm1 379 380 DO ji = 1, fs_jpim1 ! vector opt. 380 ze3 = ( e3t _n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) &381 & + e3t _n(ji,jj ,jk)*tmask(ji,jj ,jk) + e3t_n(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) )381 ze3 = ( e3t(ji,jj+1,jk,Kmm)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk) & 382 & + e3t(ji,jj ,jk,Kmm)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 382 383 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 383 384 ELSE ; ze3 = 0._wp … … 397 398 z2d(:,:) = 0.e0 398 399 DO jk = 1, jpkm1 399 z3d(:,:,jk) = rau0 * u n(:,:,jk) * e2u(:,:) * e3u_n(:,:,jk) * umask(:,:,jk)400 z3d(:,:,jk) = rau0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 400 401 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 401 402 END DO … … 409 410 DO jj = 2, jpjm1 410 411 DO ji = fs_2, fs_jpim1 ! vector opt. 411 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )412 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 412 413 END DO 413 414 END DO … … 422 423 DO jj = 2, jpjm1 423 424 DO ji = fs_2, fs_jpim1 ! vector opt. 424 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )425 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 425 426 END DO 426 427 END DO … … 434 435 z3d(:,:,jpk) = 0.e0 435 436 DO jk = 1, jpkm1 436 z3d(:,:,jk) = rau0 * v n(:,:,jk) * e1v(:,:) * e3v_n(:,:,jk) * vmask(:,:,jk)437 z3d(:,:,jk) = rau0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 437 438 END DO 438 439 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction … … 444 445 DO jj = 2, jpjm1 445 446 DO ji = fs_2, fs_jpim1 ! vector opt. 446 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) )447 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 447 448 END DO 448 449 END DO … … 457 458 DO jj = 2, jpjm1 458 459 DO ji = fs_2, fs_jpim1 ! vector opt. 459 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) )460 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 460 461 END DO 461 462 END DO … … 470 471 DO jj = 2, jpjm1 471 472 DO ji = fs_2, fs_jpim1 ! vector opt. 472 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_tem)473 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 473 474 END DO 474 475 END DO … … 482 483 DO jj = 2, jpjm1 483 484 DO ji = fs_2, fs_jpim1 ! vector opt. 484 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal)485 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 485 486 END DO 486 487 END DO … … 493 494 ! 494 495 495 IF (ln_diatmb) CALL dia_tmb 496 IF (ln_diatmb) CALL dia_tmb( Kmm ) ! tmb values 496 497 497 IF (ln_dia25h) CALL dia_25h( kt )! 25h averaging498 IF (ln_dia25h) CALL dia_25h( kt, Kmm ) ! 25h averaging 498 499 499 500 IF( ln_timing ) CALL timing_stop('dia_wri') … … 521 522 522 523 523 SUBROUTINE dia_wri( kt )524 SUBROUTINE dia_wri( kt, Kmm ) 524 525 !!--------------------------------------------------------------------- 525 526 !! *** ROUTINE dia_wri *** … … 534 535 !!---------------------------------------------------------------------- 535 536 INTEGER, INTENT( in ) :: kt ! ocean time-step index 537 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 536 538 ! 537 539 LOGICAL :: ll_print = .FALSE. ! =T print and flush numout … … 549 551 ! 550 552 IF( ninist == 1 ) THEN !== Output the initial state and forcings ==! 551 CALL dia_wri_state( 'output.init' )553 CALL dia_wri_state( Kmm, 'output.init' ) 552 554 ninist = 0 553 555 ENDIF … … 690 692 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 691 693 IF( .NOT.ln_linssh ) THEN 692 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t _n694 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t(:,:,:,Kmm) 693 695 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 694 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t _n696 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t(:,:,:,Kmm) 695 697 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 696 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t _n698 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t(:,:,:,Kmm) 697 699 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 698 700 ENDIF … … 711 713 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 712 714 IF( ln_linssh ) THEN 713 CALL histdef( nid_T, "sosst_cd", "Concentration/Dilution term on temperature" & ! emp * ts n(:,:,1,jp_tem)715 CALL histdef( nid_T, "sosst_cd", "Concentration/Dilution term on temperature" & ! emp * ts(:,:,1,jp_tem,Kmm) 714 716 & , "KgC/m2/s", & ! sosst_cd 715 717 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 716 CALL histdef( nid_T, "sosss_cd", "Concentration/Dilution term on salinity" & ! emp * ts n(:,:,1,jp_sal)718 CALL histdef( nid_T, "sosss_cd", "Concentration/Dilution term on salinity" & ! emp * ts(:,:,1,jp_sal,Kmm) 717 719 & , "KgPSU/m2/s",& ! sosss_cd 718 720 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) … … 790 792 791 793 ! !!! nid_U : 3D 792 CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! u n794 CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! uu(:,:,:,Kmm) 793 795 & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 794 796 IF( ln_wave .AND. ln_sdw) THEN … … 803 805 804 806 ! !!! nid_V : 3D 805 CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! v n807 CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! vv(:,:,:,Kmm) 806 808 & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 807 809 IF( ln_wave .AND. ln_sdw) THEN … … 816 818 817 819 ! !!! nid_W : 3D 818 CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! w n820 CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! ww 819 821 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 820 822 CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity" , "m2/s" , & ! avt … … 854 856 855 857 IF( .NOT.ln_linssh ) THEN 856 CALL histwrite( nid_T, "votemper", it, ts n(:,:,:,jp_tem) * e3t_n(:,:,:) , ndim_T , ndex_T ) ! heat content857 CALL histwrite( nid_T, "vosaline", it, ts n(:,:,:,jp_sal) * e3t_n(:,:,:) , ndim_T , ndex_T ) ! salt content858 CALL histwrite( nid_T, "sosstsst", it, ts n(:,:,1,jp_tem) * e3t_n(:,:,1) , ndim_hT, ndex_hT ) ! sea surface heat content859 CALL histwrite( nid_T, "sosaline", it, ts n(:,:,1,jp_sal) * e3t_n(:,:,1) , ndim_hT, ndex_hT ) ! sea surface salinity content858 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! heat content 859 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! salt content 860 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface heat content 861 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface salinity content 860 862 ELSE 861 CALL histwrite( nid_T, "votemper", it, ts n(:,:,:,jp_tem) , ndim_T , ndex_T ) ! temperature862 CALL histwrite( nid_T, "vosaline", it, ts n(:,:,:,jp_sal) , ndim_T , ndex_T ) ! salinity863 CALL histwrite( nid_T, "sosstsst", it, ts n(:,:,1,jp_tem) , ndim_hT, ndex_hT ) ! sea surface temperature864 CALL histwrite( nid_T, "sosaline", it, ts n(:,:,1,jp_sal) , ndim_hT, ndex_hT ) ! sea surface salinity863 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) , ndim_T , ndex_T ) ! temperature 864 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) , ndim_T , ndex_T ) ! salinity 865 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) , ndim_hT, ndex_hT ) ! sea surface temperature 866 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) , ndim_hT, ndex_hT ) ! sea surface salinity 865 867 ENDIF 866 868 IF( .NOT.ln_linssh ) THEN 867 zw3d(:,:,:) = ( ( e3t _n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2868 CALL histwrite( nid_T, "vovvle3t", it, e3t _n (:,:,:) , ndim_T , ndex_T ) ! level thickness869 CALL histwrite( nid_T, "vovvldep", it, gdept _n(:,:,:) , ndim_T , ndex_T ) ! t-point depth869 zw3d(:,:,:) = ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 870 CALL histwrite( nid_T, "vovvle3t", it, e3t (:,:,:,Kmm) , ndim_T , ndex_T ) ! level thickness 871 CALL histwrite( nid_T, "vovvldep", it, gdept(:,:,:,Kmm) , ndim_T , ndex_T ) ! t-point depth 870 872 CALL histwrite( nid_T, "vovvldef", it, zw3d , ndim_T , ndex_T ) ! level thickness deformation 871 873 ENDIF 872 CALL histwrite( nid_T, "sossheig", it, ssh n, ndim_hT, ndex_hT ) ! sea surface height874 CALL histwrite( nid_T, "sossheig", it, ssh(:,:,Kmm) , ndim_hT, ndex_hT ) ! sea surface height 873 875 CALL histwrite( nid_T, "sowaflup", it, ( emp-rnf ) , ndim_hT, ndex_hT ) ! upward water flux 874 876 CALL histwrite( nid_T, "sorunoff", it, rnf , ndim_hT, ndex_hT ) ! river runoffs … … 877 879 ! in linear free surface case) 878 880 IF( ln_linssh ) THEN 879 zw2d(:,:) = emp (:,:) * ts n(:,:,1,jp_tem)881 zw2d(:,:) = emp (:,:) * ts(:,:,1,jp_tem,Kmm) 880 882 CALL histwrite( nid_T, "sosst_cd", it, zw2d, ndim_hT, ndex_hT ) ! c/d term on sst 881 zw2d(:,:) = emp (:,:) * ts n(:,:,1,jp_sal)883 zw2d(:,:) = emp (:,:) * ts(:,:,1,jp_sal,Kmm) 882 884 CALL histwrite( nid_T, "sosss_cd", it, zw2d, ndim_hT, ndex_hT ) ! c/d term on sss 883 885 ENDIF … … 915 917 CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping 916 918 CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping 917 zw2d(:,:) = erp(:,:) * ts n(:,:,1,jp_sal) * tmask(:,:,1)919 zw2d(:,:) = erp(:,:) * ts(:,:,1,jp_sal,Kmm) * tmask(:,:,1) 918 920 CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping 919 921 ENDIF … … 928 930 #endif 929 931 930 CALL histwrite( nid_U, "vozocrtx", it, u n, ndim_U , ndex_U ) ! i-current932 CALL histwrite( nid_U, "vozocrtx", it, uu(:,:,:,Kmm) , ndim_U , ndex_U ) ! i-current 931 933 CALL histwrite( nid_U, "sozotaux", it, utau , ndim_hU, ndex_hU ) ! i-wind stress 932 934 933 CALL histwrite( nid_V, "vomecrty", it, v n, ndim_V , ndex_V ) ! j-current935 CALL histwrite( nid_V, "vomecrty", it, vv(:,:,:,Kmm) , ndim_V , ndex_V ) ! j-current 934 936 CALL histwrite( nid_V, "sometauy", it, vtau , ndim_hV, ndex_hV ) ! j-wind stress 935 937 936 CALL histwrite( nid_W, "vovecrtz", it, w n, ndim_T, ndex_T ) ! vert. current938 CALL histwrite( nid_W, "vovecrtz", it, ww , ndim_T, ndex_T ) ! vert. current 937 939 CALL histwrite( nid_W, "votkeavt", it, avt , ndim_T, ndex_T ) ! T vert. eddy diff. coef. 938 940 CALL histwrite( nid_W, "votkeavm", it, avm , ndim_T, ndex_T ) ! T vert. eddy visc. coef. … … 961 963 #endif 962 964 963 SUBROUTINE dia_wri_state( cdfile_name )965 SUBROUTINE dia_wri_state( Kmm, cdfile_name ) 964 966 !!--------------------------------------------------------------------- 965 967 !! *** ROUTINE dia_wri_state *** … … 974 976 !! File 'output.abort.nc' is created in case of abnormal job end 975 977 !!---------------------------------------------------------------------- 978 INTEGER , INTENT( in ) :: Kmm ! time level index 976 979 CHARACTER (len=* ), INTENT( in ) :: cdfile_name ! name of the file created 977 980 !! … … 990 993 #endif 991 994 992 CALL iom_rstput( 0, 0, inum, 'votemper', ts n(:,:,:,jp_tem) ) ! now temperature993 CALL iom_rstput( 0, 0, inum, 'vosaline', ts n(:,:,:,jp_sal) ) ! now salinity994 CALL iom_rstput( 0, 0, inum, 'sossheig', ssh n) ! sea surface height995 CALL iom_rstput( 0, 0, inum, 'vozocrtx', u n) ! now i-velocity996 CALL iom_rstput( 0, 0, inum, 'vomecrty', v n) ! now j-velocity997 CALL iom_rstput( 0, 0, inum, 'vovecrtz', w n) ! now k-velocity995 CALL iom_rstput( 0, 0, inum, 'votemper', ts(:,:,:,jp_tem,Kmm) ) ! now temperature 996 CALL iom_rstput( 0, 0, inum, 'vosaline', ts(:,:,:,jp_sal,Kmm) ) ! now salinity 997 CALL iom_rstput( 0, 0, inum, 'sossheig', ssh(:,:,Kmm) ) ! sea surface height 998 CALL iom_rstput( 0, 0, inum, 'vozocrtx', uu(:,:,:,Kmm) ) ! now i-velocity 999 CALL iom_rstput( 0, 0, inum, 'vomecrty', vv(:,:,:,Kmm) ) ! now j-velocity 1000 CALL iom_rstput( 0, 0, inum, 'vovecrtz', ww ) ! now k-velocity 998 1001 IF( ALLOCATED(ahtu) ) THEN 999 1002 CALL iom_rstput( 0, 0, inum, 'ahtu', ahtu ) ! aht at u-point … … 1011 1014 CALL iom_rstput( 0, 0, inum, 'sometauy', vtau ) ! j-wind stress 1012 1015 IF( .NOT.ln_linssh ) THEN 1013 CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept _n) ! T-cell depth1014 CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t _n) ! T-cell thickness1016 CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept(:,:,:,Kmm) ) ! T-cell depth 1017 CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t(:,:,:,Kmm) ) ! T-cell thickness 1015 1018 END IF 1016 1019 IF( ln_wave .AND. ln_sdw ) THEN
Note: See TracChangeset
for help on using the changeset viewer.