Changeset 12377 for NEMO/trunk/tests/CANAL/MY_SRC/diawri.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/tests/CANAL/MY_SRC/diawri.F90
r12206 r12377 56 56 USE lib_mpp ! MPP library 57 57 USE timing ! preformance summary 58 USE diu rnal_bulk! diurnal warm layer59 USE cool_skin! Cool skin58 USE diu_bulk ! diurnal warm layer 59 USE diu_coolskin ! Cool skin 60 60 61 61 IMPLICIT NONE … … 76 76 INTEGER, SAVE, ALLOCATABLE, DIMENSION(:) :: ndex_bT 77 77 78 !! * Substitutions79 # include "vectopt_loop_substitute.h90"80 78 !!---------------------------------------------------------------------- 81 79 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 96 94 97 95 98 SUBROUTINE dia_wri( kt )96 SUBROUTINE dia_wri( kt, Kmm ) 99 97 !!--------------------------------------------------------------------- 100 98 !! *** ROUTINE dia_wri *** … … 106 104 !!---------------------------------------------------------------------- 107 105 INTEGER, INTENT( in ) :: kt ! ocean time-step index 106 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 108 107 !! 109 108 INTEGER :: ji, jj, jk ! dummy loop indices … … 114 113 REAL(wp), DIMENSION(jpi,jpj) :: z2d ! 2D workspace 115 114 REAL(wp), DIMENSION(jpi,jpj,jpk) :: z3d ! 3D workspace 116 REAL(wp), DIMENSION(jpi,jpj,jpk) :: bu, bv ! volume of u- and v-boxes117 REAL(wp), DIMENSION(jpi,jpj,jpk) :: r1_bt ! inverse of t-box volume118 115 !!---------------------------------------------------------------------- 119 116 ! … … 122 119 ! Output the initial state and forcings 123 120 IF( ninist == 1 ) THEN 124 CALL dia_wri_state( 'output.init' )121 CALL dia_wri_state( Kmm, 'output.init' ) 125 122 ninist = 0 126 123 ENDIF … … 131 128 CALL iom_put("e3v_0", e3v_0(:,:,:) ) 132 129 ! 133 CALL iom_put( "e3t" , e3t _n(:,:,:) )134 CALL iom_put( "e3u" , e3u _n(:,:,:) )135 CALL iom_put( "e3v" , e3v _n(:,:,:) )136 CALL iom_put( "e3w" , e3w _n(:,:,:) )130 CALL iom_put( "e3t" , e3t(:,:,:,Kmm) ) 131 CALL iom_put( "e3u" , e3u(:,:,:,Kmm) ) 132 CALL iom_put( "e3v" , e3v(:,:,:,Kmm) ) 133 CALL iom_put( "e3w" , e3w(:,:,:,Kmm) ) 137 134 IF( iom_use("e3tdef") ) & 138 CALL iom_put( "e3tdef" , ( ( e3t _n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 )135 CALL iom_put( "e3tdef" , ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 139 136 140 137 IF( ll_wd ) THEN 141 CALL iom_put( "ssh" , (ssh n+ssh_ref)*tmask(:,:,1) ) ! sea surface height (brought back to the reference used for wetting and drying)138 CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*tmask(:,:,1) ) ! sea surface height (brought back to the reference used for wetting and drying) 142 139 ELSE 143 CALL iom_put( "ssh" , ssh n) ! sea surface height140 CALL iom_put( "ssh" , ssh(:,:,Kmm) ) ! sea surface height 144 141 ENDIF 145 142 146 143 IF( iom_use("wetdep") ) & ! wet depth 147 CALL iom_put( "wetdep" , ht_0(:,:) + ssh n(:,:) )144 CALL iom_put( "wetdep" , ht_0(:,:) + ssh(:,:,Kmm) ) 148 145 149 CALL iom_put( "toce", ts n(:,:,:,jp_tem) ) ! 3D temperature150 CALL iom_put( "sst", ts n(:,:,1,jp_tem) ) ! surface temperature146 CALL iom_put( "toce", ts(:,:,:,jp_tem,Kmm) ) ! 3D temperature 147 CALL iom_put( "sst", ts(:,:,1,jp_tem,Kmm) ) ! surface temperature 151 148 IF ( iom_use("sbt") ) THEN 152 149 DO jj = 1, jpj 153 150 DO ji = 1, jpi 154 151 ikbot = mbkt(ji,jj) 155 z2d(ji,jj) = ts n(ji,jj,ikbot,jp_tem)152 z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) 156 153 END DO 157 154 END DO … … 159 156 ENDIF 160 157 161 CALL iom_put( "soce", ts n(:,:,:,jp_sal) ) ! 3D salinity162 CALL iom_put( "sss", ts n(:,:,1,jp_sal) ) ! surface salinity158 CALL iom_put( "soce", ts(:,:,:,jp_sal,Kmm) ) ! 3D salinity 159 CALL iom_put( "sss", ts(:,:,1,jp_sal,Kmm) ) ! surface salinity 163 160 IF ( iom_use("sbs") ) THEN 164 161 DO jj = 1, jpj 165 162 DO ji = 1, jpi 166 163 ikbot = mbkt(ji,jj) 167 z2d(ji,jj) = ts n(ji,jj,ikbot,jp_sal)164 z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) 168 165 END DO 169 166 END DO … … 176 173 DO jj = 2, jpjm1 177 174 DO ji = fs_2, fs_jpim1 ! vector opt. 178 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * u n(ji ,jj,mbku(ji ,jj)) )**2 &179 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * u n(ji-1,jj,mbku(ji-1,jj)) )**2 &180 & + ( ( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj ) ) * v n(ji,jj ,mbkv(ji,jj )) )**2 &181 & + ( ( rCdU_bot(ji,jj )+rCdU_bot(ji,jj-1) ) * v n(ji,jj-1,mbkv(ji,jj-1)) )**2175 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * uu(ji ,jj,mbku(ji ,jj),Kmm) )**2 & 176 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * uu(ji-1,jj,mbku(ji-1,jj),Kmm) )**2 & 177 & + ( ( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj ) ) * vv(ji,jj ,mbkv(ji,jj ),Kmm) )**2 & 178 & + ( ( rCdU_bot(ji,jj )+rCdU_bot(ji,jj-1) ) * vv(ji,jj-1,mbkv(ji,jj-1),Kmm) )**2 182 179 z2d(ji,jj) = zztmp * SQRT( zztmp2 ) * tmask(ji,jj,1) 183 180 ! … … 188 185 ENDIF 189 186 190 CALL iom_put( "uoce", u n(:,:,:) ) ! 3D i-current191 CALL iom_put( "ssu", u n(:,:,1) ) ! surface i-current187 CALL iom_put( "uoce", uu(:,:,:,Kmm) ) ! 3D i-current 188 CALL iom_put( "ssu", uu(:,:,1,Kmm) ) ! surface i-current 192 189 IF ( iom_use("sbu") ) THEN 193 190 DO jj = 1, jpj 194 191 DO ji = 1, jpi 195 192 ikbot = mbku(ji,jj) 196 z2d(ji,jj) = u n(ji,jj,ikbot)193 z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) 197 194 END DO 198 195 END DO … … 200 197 ENDIF 201 198 202 CALL iom_put( "voce", v n(:,:,:) ) ! 3D j-current203 CALL iom_put( "ssv", v n(:,:,1) ) ! surface j-current199 CALL iom_put( "voce", vv(:,:,:,Kmm) ) ! 3D j-current 200 CALL iom_put( "ssv", vv(:,:,1,Kmm) ) ! surface j-current 204 201 IF ( iom_use("sbv") ) THEN 205 202 DO jj = 1, jpj 206 203 DO ji = 1, jpi 207 204 ikbot = mbkv(ji,jj) 208 z2d(ji,jj) = v n(ji,jj,ikbot)205 z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) 209 206 END DO 210 207 END DO … … 212 209 ENDIF 213 210 214 CALL iom_put( "woce", w n) ! vertical velocity211 CALL iom_put( "woce", ww ) ! vertical velocity 215 212 IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN ! vertical mass transport & its square value 216 213 ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 217 214 z2d(:,:) = rau0 * e1e2t(:,:) 218 215 DO jk = 1, jpk 219 z3d(:,:,jk) = w n(:,:,jk) * z2d(:,:)216 z3d(:,:,jk) = ww(:,:,jk) * z2d(:,:) 220 217 END DO 221 218 CALL iom_put( "w_masstr" , z3d ) … … 235 232 DO jj = 2, jpjm1 ! sal gradient 236 233 DO ji = fs_2, fs_jpim1 ! vector opt. 237 zztmp = ts n(ji,jj,jk,jp_sal)238 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)239 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)234 zztmp = ts(ji,jj,jk,jp_sal,Kmm) 235 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) 236 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) 240 237 z3d(ji,jj,jk) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 241 238 & * umask(ji,jj,jk) * umask(ji-1,jj,jk) * vmask(ji,jj,jk) * umask(ji,jj-1,jk) … … 252 249 DO jj = 2, jpjm1 ! sst gradient 253 250 DO ji = fs_2, fs_jpim1 ! vector opt. 254 zztmp = ts n(ji,jj,1,jp_tem)255 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)256 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)251 zztmp = ts(ji,jj,1,jp_tem,Kmm) 252 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) 253 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) 257 254 z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 258 255 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) … … 271 268 DO jj = 1, jpj 272 269 DO ji = 1, jpi 273 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk)270 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 274 271 END DO 275 272 END DO … … 283 280 DO jj = 1, jpj 284 281 DO ji = 1, jpi 285 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk)282 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 286 283 END DO 287 284 END DO … … 295 292 DO jj = 1, jpj 296 293 DO ji = 1, jpi 297 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)294 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) 298 295 END DO 299 296 END DO … … 305 302 z3d(:,:,jpk) = 0._wp 306 303 DO jk = 1, jpkm1 307 DO jj = 2, jpj 308 DO ji = 2, jpi 309 zztmpx = 0.5 * ( un(ji-1,jj ,jk) + un(ji,jj,jk) ) 310 zztmpy = 0.5 * ( vn(ji ,jj-1,jk) + vn(ji,jj,jk) ) 311 z3d(ji,jj,jk) = 0.5 * ( zztmpx*zztmpx + zztmpy*zztmpy ) 304 DO jj = 2, jpjm1 305 DO ji = fs_2, fs_jpim1 ! vector opt. 306 zztmp = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 307 z3d(ji,jj,jk) = zztmp * ( uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 308 & + uu(ji ,jj,jk,Kmm)**2 * e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 309 & + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) & 310 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 312 311 END DO 313 312 END DO … … 325 324 DO jj = 2, jpj 326 325 DO ji = 2, jpi 327 z3d(ji,jj,jk) = 0.25_wp * ( u n(ji ,jj,jk) * un(ji ,jj,jk) * e1e2u(ji ,jj) * e3u_n(ji ,jj,jk) &328 & + u n(ji-1,jj,jk) * un(ji-1,jj,jk) * e1e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) &329 & + v n(ji,jj ,jk) * vn(ji,jj ,jk) * e1e2v(ji,jj ) * e3v_n(ji,jj ,jk) &330 & + v n(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1e2v(ji,jj-1) * e3v_n(ji,jj-1,jk) ) &331 & * r1_e1e2t(ji,jj) / e3t _n(ji,jj,jk) * tmask(ji,jj,jk)326 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) & 327 & + uu(ji-1,jj,jk,Kmm) * uu(ji-1,jj,jk,Kmm) * e1e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 328 & + vv(ji,jj ,jk,Kmm) * vv(ji,jj ,jk,Kmm) * e1e2v(ji,jj ) * e3v(ji,jj ,jk,Kmm) & 329 & + vv(ji,jj-1,jk,Kmm) * vv(ji,jj-1,jk,Kmm) * e1e2v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) ) & 330 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 332 331 END DO 333 332 END DO … … 341 340 DO jj = 1, jpj 342 341 DO ji = 1, jpi 343 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * z3d(ji,jj,jk) * tmask(ji,jj,jk)342 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * tmask(ji,jj,jk) 344 343 END DO 345 344 END DO … … 349 348 ENDIF 350 349 ! 351 CALL iom_put( "hdiv", hdiv n) ! Horizontal divergence350 CALL iom_put( "hdiv", hdiv ) ! Horizontal divergence 352 351 353 352 IF ( iom_use("relvor") .OR. iom_use("absvor") .OR. iom_use("potvor") ) THEN … … 357 356 DO jj = 1, jpjm1 358 357 DO ji = 1, fs_jpim1 ! vector opt. 359 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) &360 & - e1u(ji ,jj+1) * u n(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) * r1_e1e2f(ji,jj)358 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vv(ji+1,jj ,jk,Kmm) - e2v(ji,jj) * vv(ji,jj,jk,Kmm) & 359 & - e1u(ji ,jj+1) * uu(ji ,jj+1,jk,Kmm) + e1u(ji,jj) * uu(ji,jj,jk,Kmm) ) * r1_e1e2f(ji,jj) 361 360 END DO 362 361 END DO … … 377 376 DO jj = 1, jpjm1 378 377 DO ji = 1, fs_jpim1 ! vector opt. 379 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) &380 & + e3t _n(ji,jj ,jk)*tmask(ji,jj ,jk) + e3t_n(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) )378 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) & 379 & + e3t(ji,jj ,jk,Kmm)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 381 380 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 382 381 ELSE ; ze3 = 0._wp … … 396 395 z2d(:,:) = 0.e0 397 396 DO jk = 1, jpkm1 398 z3d(:,:,jk) = rau0 * u n(:,:,jk) * e2u(:,:) * e3u_n(:,:,jk) * umask(:,:,jk)397 z3d(:,:,jk) = rau0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 399 398 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 400 399 END DO … … 408 407 DO jj = 2, jpjm1 409 408 DO ji = fs_2, fs_jpim1 ! vector opt. 410 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )409 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) ) 411 410 END DO 412 411 END DO … … 421 420 DO jj = 2, jpjm1 422 421 DO ji = fs_2, fs_jpim1 ! vector opt. 423 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )422 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) ) 424 423 END DO 425 424 END DO … … 433 432 z3d(:,:,jpk) = 0.e0 434 433 DO jk = 1, jpkm1 435 z3d(:,:,jk) = rau0 * v n(:,:,jk) * e1v(:,:) * e3v_n(:,:,jk) * vmask(:,:,jk)434 z3d(:,:,jk) = rau0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 436 435 END DO 437 436 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction … … 443 442 DO jj = 2, jpjm1 444 443 DO ji = fs_2, fs_jpim1 ! vector opt. 445 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) )444 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) ) 446 445 END DO 447 446 END DO … … 456 455 DO jj = 2, jpjm1 457 456 DO ji = fs_2, fs_jpim1 ! vector opt. 458 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) )457 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) ) 459 458 END DO 460 459 END DO … … 469 468 DO jj = 2, jpjm1 470 469 DO ji = fs_2, fs_jpim1 ! vector opt. 471 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_tem)470 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 472 471 END DO 473 472 END DO … … 481 480 DO jj = 2, jpjm1 482 481 DO ji = fs_2, fs_jpim1 ! vector opt. 483 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal)482 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 484 483 END DO 485 484 END DO … … 492 491 ! 493 492 494 IF (ln_dia25h) CALL dia_25h( kt )! 25h averaging493 IF (ln_dia25h) CALL dia_25h( kt, Kmm ) ! 25h averaging 495 494 496 495 IF( ln_timing ) CALL timing_stop('dia_wri') … … 518 517 519 518 520 SUBROUTINE dia_wri( kt )519 SUBROUTINE dia_wri( kt, Kmm ) 521 520 !!--------------------------------------------------------------------- 522 521 !! *** ROUTINE dia_wri *** … … 531 530 !!---------------------------------------------------------------------- 532 531 INTEGER, INTENT( in ) :: kt ! ocean time-step index 532 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 533 533 ! 534 534 LOGICAL :: ll_print = .FALSE. ! =T print and flush numout … … 546 546 ! 547 547 IF( ninist == 1 ) THEN !== Output the initial state and forcings ==! 548 CALL dia_wri_state( 'output.init' )548 CALL dia_wri_state( Kmm, 'output.init' ) 549 549 ninist = 0 550 550 ENDIF … … 687 687 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 688 688 IF( .NOT.ln_linssh ) THEN 689 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t _n689 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t(:,:,:,Kmm) 690 690 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 691 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t _n691 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t(:,:,:,Kmm) 692 692 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 693 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t _n693 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t(:,:,:,Kmm) 694 694 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 695 695 ENDIF … … 708 708 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 709 709 IF( ln_linssh ) THEN 710 CALL histdef( nid_T, "sosst_cd", "Concentration/Dilution term on temperature" & ! emp * ts n(:,:,1,jp_tem)710 CALL histdef( nid_T, "sosst_cd", "Concentration/Dilution term on temperature" & ! emp * ts(:,:,1,jp_tem,Kmm) 711 711 & , "KgC/m2/s", & ! sosst_cd 712 712 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 713 CALL histdef( nid_T, "sosss_cd", "Concentration/Dilution term on salinity" & ! emp * ts n(:,:,1,jp_sal)713 CALL histdef( nid_T, "sosss_cd", "Concentration/Dilution term on salinity" & ! emp * ts(:,:,1,jp_sal,Kmm) 714 714 & , "KgPSU/m2/s",& ! sosss_cd 715 715 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) … … 787 787 788 788 ! !!! nid_U : 3D 789 CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! u n789 CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! uu(:,:,:,Kmm) 790 790 & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 791 791 IF( ln_wave .AND. ln_sdw) THEN … … 800 800 801 801 ! !!! nid_V : 3D 802 CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! v n802 CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! vv(:,:,:,Kmm) 803 803 & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 804 804 IF( ln_wave .AND. ln_sdw) THEN … … 813 813 814 814 ! !!! nid_W : 3D 815 CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! w n815 CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! ww 816 816 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 817 817 CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity" , "m2/s" , & ! avt … … 851 851 852 852 IF( .NOT.ln_linssh ) THEN 853 CALL histwrite( nid_T, "votemper", it, ts n(:,:,:,jp_tem) * e3t_n(:,:,:) , ndim_T , ndex_T ) ! heat content854 CALL histwrite( nid_T, "vosaline", it, ts n(:,:,:,jp_sal) * e3t_n(:,:,:) , ndim_T , ndex_T ) ! salt content855 CALL histwrite( nid_T, "sosstsst", it, ts n(:,:,1,jp_tem) * e3t_n(:,:,1) , ndim_hT, ndex_hT ) ! sea surface heat content856 CALL histwrite( nid_T, "sosaline", it, ts n(:,:,1,jp_sal) * e3t_n(:,:,1) , ndim_hT, ndex_hT ) ! sea surface salinity content853 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! heat content 854 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! salt content 855 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface heat content 856 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface salinity content 857 857 ELSE 858 CALL histwrite( nid_T, "votemper", it, ts n(:,:,:,jp_tem) , ndim_T , ndex_T ) ! temperature859 CALL histwrite( nid_T, "vosaline", it, ts n(:,:,:,jp_sal) , ndim_T , ndex_T ) ! salinity860 CALL histwrite( nid_T, "sosstsst", it, ts n(:,:,1,jp_tem) , ndim_hT, ndex_hT ) ! sea surface temperature861 CALL histwrite( nid_T, "sosaline", it, ts n(:,:,1,jp_sal) , ndim_hT, ndex_hT ) ! sea surface salinity858 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) , ndim_T , ndex_T ) ! temperature 859 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) , ndim_T , ndex_T ) ! salinity 860 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) , ndim_hT, ndex_hT ) ! sea surface temperature 861 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) , ndim_hT, ndex_hT ) ! sea surface salinity 862 862 ENDIF 863 863 IF( .NOT.ln_linssh ) THEN 864 zw3d(:,:,:) = ( ( e3t _n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2865 CALL histwrite( nid_T, "vovvle3t", it, e3t _n (:,:,:) , ndim_T , ndex_T ) ! level thickness866 CALL histwrite( nid_T, "vovvldep", it, gdept _n(:,:,:) , ndim_T , ndex_T ) ! t-point depth864 zw3d(:,:,:) = ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 865 CALL histwrite( nid_T, "vovvle3t", it, e3t (:,:,:,Kmm) , ndim_T , ndex_T ) ! level thickness 866 CALL histwrite( nid_T, "vovvldep", it, gdept(:,:,:,Kmm) , ndim_T , ndex_T ) ! t-point depth 867 867 CALL histwrite( nid_T, "vovvldef", it, zw3d , ndim_T , ndex_T ) ! level thickness deformation 868 868 ENDIF 869 CALL histwrite( nid_T, "sossheig", it, ssh n, ndim_hT, ndex_hT ) ! sea surface height869 CALL histwrite( nid_T, "sossheig", it, ssh(:,:,Kmm) , ndim_hT, ndex_hT ) ! sea surface height 870 870 CALL histwrite( nid_T, "sowaflup", it, ( emp-rnf ) , ndim_hT, ndex_hT ) ! upward water flux 871 871 CALL histwrite( nid_T, "sorunoff", it, rnf , ndim_hT, ndex_hT ) ! river runoffs … … 874 874 ! in linear free surface case) 875 875 IF( ln_linssh ) THEN 876 zw2d(:,:) = emp (:,:) * ts n(:,:,1,jp_tem)876 zw2d(:,:) = emp (:,:) * ts(:,:,1,jp_tem,Kmm) 877 877 CALL histwrite( nid_T, "sosst_cd", it, zw2d, ndim_hT, ndex_hT ) ! c/d term on sst 878 zw2d(:,:) = emp (:,:) * ts n(:,:,1,jp_sal)878 zw2d(:,:) = emp (:,:) * ts(:,:,1,jp_sal,Kmm) 879 879 CALL histwrite( nid_T, "sosss_cd", it, zw2d, ndim_hT, ndex_hT ) ! c/d term on sss 880 880 ENDIF … … 912 912 CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping 913 913 CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping 914 zw2d(:,:) = erp(:,:) * ts n(:,:,1,jp_sal) * tmask(:,:,1)914 zw2d(:,:) = erp(:,:) * ts(:,:,1,jp_sal,Kmm) * tmask(:,:,1) 915 915 CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping 916 916 ENDIF … … 925 925 #endif 926 926 927 CALL histwrite( nid_U, "vozocrtx", it, u n, ndim_U , ndex_U ) ! i-current927 CALL histwrite( nid_U, "vozocrtx", it, uu(:,:,:,Kmm) , ndim_U , ndex_U ) ! i-current 928 928 CALL histwrite( nid_U, "sozotaux", it, utau , ndim_hU, ndex_hU ) ! i-wind stress 929 929 930 CALL histwrite( nid_V, "vomecrty", it, v n, ndim_V , ndex_V ) ! j-current930 CALL histwrite( nid_V, "vomecrty", it, vv(:,:,:,Kmm) , ndim_V , ndex_V ) ! j-current 931 931 CALL histwrite( nid_V, "sometauy", it, vtau , ndim_hV, ndex_hV ) ! j-wind stress 932 932 933 CALL histwrite( nid_W, "vovecrtz", it, w n, ndim_T, ndex_T ) ! vert. current933 CALL histwrite( nid_W, "vovecrtz", it, ww , ndim_T, ndex_T ) ! vert. current 934 934 CALL histwrite( nid_W, "votkeavt", it, avt , ndim_T, ndex_T ) ! T vert. eddy diff. coef. 935 935 CALL histwrite( nid_W, "votkeavm", it, avm , ndim_T, ndex_T ) ! T vert. eddy visc. coef. … … 958 958 #endif 959 959 960 SUBROUTINE dia_wri_state( cdfile_name )960 SUBROUTINE dia_wri_state( Kmm, cdfile_name ) 961 961 !!--------------------------------------------------------------------- 962 962 !! *** ROUTINE dia_wri_state *** … … 971 971 !! File 'output.abort.nc' is created in case of abnormal job end 972 972 !!---------------------------------------------------------------------- 973 INTEGER , INTENT( in ) :: Kmm ! time level index 973 974 CHARACTER (len=* ), INTENT( in ) :: cdfile_name ! name of the file created 974 975 !! … … 987 988 #endif 988 989 989 CALL iom_rstput( 0, 0, inum, 'votemper', ts n(:,:,:,jp_tem) ) ! now temperature990 CALL iom_rstput( 0, 0, inum, 'vosaline', ts n(:,:,:,jp_sal) ) ! now salinity991 CALL iom_rstput( 0, 0, inum, 'sossheig', ssh n) ! sea surface height992 CALL iom_rstput( 0, 0, inum, 'vozocrtx', u n) ! now i-velocity993 CALL iom_rstput( 0, 0, inum, 'vomecrty', v n) ! now j-velocity994 CALL iom_rstput( 0, 0, inum, 'vovecrtz', w n) ! now k-velocity990 CALL iom_rstput( 0, 0, inum, 'votemper', ts(:,:,:,jp_tem,Kmm) ) ! now temperature 991 CALL iom_rstput( 0, 0, inum, 'vosaline', ts(:,:,:,jp_sal,Kmm) ) ! now salinity 992 CALL iom_rstput( 0, 0, inum, 'sossheig', ssh(:,:,Kmm) ) ! sea surface height 993 CALL iom_rstput( 0, 0, inum, 'vozocrtx', uu(:,:,:,Kmm) ) ! now i-velocity 994 CALL iom_rstput( 0, 0, inum, 'vomecrty', vv(:,:,:,Kmm) ) ! now j-velocity 995 CALL iom_rstput( 0, 0, inum, 'vovecrtz', ww ) ! now k-velocity 995 996 IF( ALLOCATED(ahtu) ) THEN 996 997 CALL iom_rstput( 0, 0, inum, 'ahtu', ahtu ) ! aht at u-point … … 1008 1009 CALL iom_rstput( 0, 0, inum, 'sometauy', vtau ) ! j-wind stress 1009 1010 IF( .NOT.ln_linssh ) THEN 1010 CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept _n) ! T-cell depth1011 CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t _n) ! T-cell thickness1011 CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept(:,:,:,Kmm) ) ! T-cell depth 1012 CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t(:,:,:,Kmm) ) ! T-cell thickness 1012 1013 END IF 1013 1014 IF( ln_wave .AND. ln_sdw ) THEN
Note: See TracChangeset
for help on using the changeset viewer.