Changeset 405 for trunk/NEMO/OPA_SRC/DIA/diawri_dimg.h90
- Timestamp:
- 2006-03-20T17:00:08+01:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DIA/diawri_dimg.h90
r389 r405 3 3 !!---------------------------------------------------------------------- 4 4 !! OPA 9.0 , LOCEAN-IPSL (2005) 5 6 5 !! $Header$ 6 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 7 7 !!---------------------------------------------------------------------- 8 8 … … 43 43 !! level 1: taux(:,:) * umask(:,:,1) zonal stress in N.m-2 44 44 !! level 2: tauy(:,:) * vmask(:,:,1) meridional stress in N. m-2 45 !! level 3: qt (:,:) total heat flux (W/m2) 46 !! level 4: emp (:,:) E-P flux (mm/day) 47 !! level 5: tb (:,:,1)-sst model SST -forcing sst (degree C) 48 !! level 6: bsfb(:,:) streamfunction (m**3/s) 49 !! level 7: qsr (:,:) solar flux (W/m2) 50 !! level 8: qrp (:,:) relax component of T flux. 51 !! level 9: erp (:,:) relax component of S flux 52 !! level 10: hmld(:,:) turbocline depth 53 !! level 11: hmlp(:,:) mixed layer depth 54 !! level 12: freeze (:,:) Ice cover (1. or 0.) 55 !! level 13: sst(:,:) the observed SST we relax to. 56 !! level 14: qct(:,:) equivalent flux due to treshold SST 57 !! level 15: fbt(:,:) feedback term . 58 !! level 16: gps(:,:) the surface pressure (m). 59 !! level 17: spgu(:,:) the surface pressure gradient in X direction. 60 !! level 18: spgv(:,:) the surface pressure gradient in Y direction. 45 !! level 3: qt (:,:) total heat flux (W/m2) 46 !! level 4: emp (:,:) E-P flux (mm/day) 47 !! level 5: tb (:,:,1)-sst model SST -forcing sst (degree C) 48 !! level 6: bsfb(:,:) streamfunction (m**3/s) 49 !! level 7: qsr (:,:) solar flux (W/m2) 50 !! level 8: qrp (:,:) relax component of T flux. 51 !! level 9: erp (:,:) relax component of S flux 52 !! level 10: hmld(:,:) turbocline depth 53 !! level 11: hmlp(:,:) mixed layer depth 54 !! level 12: freeze (:,:) Ice cover (1. or 0.) 55 !! level 13: sst(:,:) the observed SST we relax to. 56 !! level 14: qct(:,:) equivalent flux due to treshold SST 57 !! level 15: fbt(:,:) feedback term . 58 !! level 16: emps(:,:) concentration/dilution water flux 59 !! level 17: fsalt(:,:) Ice=>ocean net freshwater 60 !! level 18: gps(:,:) the surface pressure (m). 61 !! level 19: spgu(:,:) the surface pressure gradient in X direction. 62 !! level 20: spgv(:,:) the surface pressure gradient in Y direction. 61 63 !! 62 64 !! History … … 69 71 !! additions : 97-2002 ( Clipper Group ) dimg files 70 72 !! dec 2003 ( J.M. Molines) f90, mpp output for OPA9.0 73 !! 9.0 ! 05-05 (S. Theetten) add emps fsalt move gps spgu spgv 2 lines below 71 74 !! 9.0 ! 05-11 (V. Garnier) Surface pressure gradient organization 72 75 !!---------------------------------------------------------------------- … … 92 95 REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) :: um , vm ! used to compute mean u, v fields 93 96 REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) :: wm ! used to compute mean w fields 97 REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) :: avtm ! used to compute mean kz fields 94 98 REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) :: tm , sm ! used to compute mean t, s fields 95 99 REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) :: fsel ! used to compute mean 2d fields … … 105 109 ! 106 110 #ifdef key_diaspr 107 inbsel = 18111 inbsel = 20 108 112 #else 109 inbsel = 1 5110 #endif 111 112 IF (inbsel > jpk) THEN113 IF (lwp) WRITE(numout,*) &113 inbsel = 17 114 #endif 115 116 IF( inbsel > jpk) THEN 117 IF( lwp) WRITE(numout,*) & 114 118 ' STOP inbsel =',inbsel,' is larger than jpk=',jpk 115 119 STOP 116 END 120 ENDIF 117 121 118 122 … … 126 130 clver='@!01' 127 131 ! 128 IF 132 IF( .NOT. ll_dia_inst ) THEN 129 133 !#if ! defined key_diainstant 130 134 ! … … 132 136 !! ---------------------- 133 137 ! 134 IF (kt == nit000 .AND. lwp ) WRITE(numout,*) &138 IF( kt == nit000 .AND. lwp ) WRITE(numout,*) & 135 139 'THE OUTPUT FILES CONTAINS THE AVERAGE OF EACH FIELD' 136 140 ! 137 IF ( kt == nit000 .AND. kindic > 0) THEN141 IF( kt == nit000 ) THEN 138 142 ! reset arrays for average computation 139 143 nmoyct = 0 … … 142 146 vm(:,:,:) = 0._wp 143 147 wm(:,:,:) = 0._wp 148 avtm(:,:,:) = 0._wp 144 149 tm(:,:,:) = 0._wp 145 150 sm(:,:,:) = 0._wp 146 151 fsel(:,:,:) = 0._wp 147 152 ! 148 END 153 ENDIF 149 154 150 155 ! cumulate values … … 156 161 vm(:,:,:)=vm(:,:,:) + vn (:,:,:) 157 162 wm(:,:,:)=wm(:,:,:) + wn (:,:,:) 163 avtm(:,:,:)=avtm(:,:,:) + avt (:,:,:) 158 164 tm(:,:,:)=tm(:,:,:) + tn (:,:,:) 159 165 sm(:,:,:)=sm(:,:,:) + sn (:,:,:) … … 178 184 ! fsel(:,:,14) = fsel(:,:,14) + qct(:,:) 179 185 ! fsel(:,:,15) = fsel(:,:,15) + fbt(:,:) 186 fsel(:,:,16) = fsel(:,:,16) + emps(:,:) 187 #if defined key_ice_lim 188 fsel(:,:,17) = fsel(:,:,17) + fsalt(:,:) 189 #endif 180 190 #ifdef key_diaspr 181 fsel(:,:,1 6) = fsel(:,:,16) + gps(:,:)/g191 fsel(:,:,18) = fsel(:,:,18) + gps(:,:)/g 182 192 #endif 183 193 ! … … 192 202 ! IF (abs(adatrj-iwrite*rwrite) < zdtj/2. & 193 203 194 IF 204 IF( ( MOD (kt-nit000+1,nwrite) == 0 ) & 195 205 & .OR. kindic < 0 & 196 206 & .OR. ( kt == 1 .AND. kindic > 0) ) THEN … … 200 210 vm(:,:,:) = vm(:,:,:) / nmoyct 201 211 wm(:,:,:) = wm(:,:,:) / nmoyct 212 avtm(:,:,:) = avtm(:,:,:) / nmoyct 202 213 tm(:,:,:) = tm(:,:,:) / nmoyct 203 214 sm(:,:,:) = sm(:,:,:) / nmoyct … … 209 220 ! 210 221 #ifdef key_diaspr 211 fsel(:,:,1 6)= gps(:,:)/g212 fsel(:,:,1 7)= spgu(:,:)213 fsel(:,:, 18)= spgv(:,:)222 fsel(:,:,18)= gps(:,:)/g 223 fsel(:,:,19)= spgu(:,:) 224 fsel(:,:,20)= spgv(:,:) 214 225 #endif 215 226 ENDIF … … 221 232 !! ------------------------------ 222 233 ! 223 IF (kt == nit000 .AND. lwp ) WRITE(numout,*) &234 IF( kt == nit000 .AND. lwp ) WRITE(numout,*) & 224 235 'THE OUTPUT FILES CONTAINS INSTANTANEOUS VALUES OF EACH FIELD' 225 236 ! … … 255 266 ! fsel(:,:,14) = qct(:,:) 256 267 ! fsel(:,:,15) = fbt(:,:) 268 fsel(:,:,16) = emps(:,:) 269 #if defined key_ice_lim 270 fsel(:,:,17) = fsalt(:,:) 271 #endif 257 272 #ifdef key_diaspr 258 fsel(:,:,1 6) = gps(:,:) /g259 fsel(:,:,1 7) = spgu(:,:)260 fsel(:,:, 18) = spgv(:,:)273 fsel(:,:,18) = gps(:,:) /g 274 fsel(:,:,19) = spgu(:,:) 275 fsel(:,:,20) = spgv(:,:) 261 276 #endif 262 277 ! … … 269 284 ! this file gives a record of the dump date for post processing ( ASCII file ) 270 285 ! 271 IF 286 IF( ( MOD (kt-nit000+1,nwrite) == 0 ) & 272 287 & .OR. kindic < 0 & 273 288 & .OR. ( kt == 1 .AND. kindic > 0) ) THEN 274 OPEN (14,FILE='datrj.out',FORM='FORMATTED', STATUS='UNKNOWN',POSITION='APPEND ')275 276 IF (lwp) WRITE(14,'(f10.4,1x,i8)') adatrj, ndastp289 OPEN (14,FILE='datrj.out',FORM='FORMATTED', STATUS='UNKNOWN',POSITION='APPEND ') 290 291 IF( lwp) WRITE(14,'(f10.4,1x,i8)') adatrj, ndastp 277 292 CLOSE(14) 278 293 279 IF (lwp) WRITE(numout,*)'Days since the begining of the run :',adatrj294 IF( lwp) WRITE(numout,*)'Days since the begining of the run :',adatrj 280 295 281 296 !! * U section … … 285 300 IF ( kindic < 0 ) cltext=TRIM(cexper)//' U(m/s) instantaneous (explosion)' 286 301 ! 287 IF 302 IF( ll_dia_inst) THEN 288 303 CALL dia_wri_dimg(clname, cltext, un, jpk, 'T') 289 304 290 305 ELSE 291 IF 306 IF( kindic == -3 ) THEN 292 307 ! ... in case of explosion on umax, dump instantateous u field instead of mean. 293 308 CALL dia_wri_dimg(clname, cltext, un, jpk, 'T') 294 309 ELSE 295 310 CALL dia_wri_dimg(clname, cltext, um, jpk, 'T') 296 END 311 ENDIF 297 312 ENDIF 298 313 … … 302 317 cltext=TRIM(cexper)//' V(m/s) '//TRIM(clmode) 303 318 ! 304 IF 319 IF( ll_dia_inst) THEN 305 320 CALL dia_wri_dimg(clname, cltext, vn, jpk, 'T') 306 321 ELSE 307 322 CALL dia_wri_dimg(clname, cltext, vm, jpk, 'T') 308 END 323 ENDIF 309 324 ! 310 325 … … 312 327 313 328 WRITE(clname,9000) TRIM(cexper),'KZ',iyear,imon,iday 314 cltext=TRIM(cexper)//' KZ(m2/s) instantaneous' 315 316 ! no average on kz (convective area may show up too strongly ) 317 CALL dia_wri_dimg(clname, cltext, avt, jpk, 'W') 329 cltext=TRIM(cexper)//' KZ(m2/s) '//TRIM(clmode) 330 331 IF( ll_dia_inst) THEN 332 CALL dia_wri_dimg(clname, cltext, avt, jpk, 'W') 333 ELSE 334 CALL dia_wri_dimg(clname, cltext, avtm, jpk, 'W') 335 ENDIF 318 336 ! 319 337 … … 323 341 cltext=TRIM(cexper)//' W(m/s) '//TRIM(clmode) 324 342 325 IF 343 IF( ll_dia_inst) THEN 326 344 CALL dia_wri_dimg(clname, cltext, wn, jpk, 'W') 327 345 ELSE 328 346 CALL dia_wri_dimg(clname, cltext, wm, jpk, 'W') 329 END 347 ENDIF 330 348 331 349 !! * T section … … 334 352 cltext=TRIM(cexper)//' T (DegC) '//TRIM(clmode) 335 353 336 IF (ll_dia_inst) THEN354 IF( ll_dia_inst) THEN 337 355 CALL dia_wri_dimg(clname, cltext, tn, jpk, 'T') 338 356 ELSE 339 357 CALL dia_wri_dimg(clname, cltext, tm, jpk, 'T') 340 END 358 ENDIF 341 359 ! 342 360 … … 346 364 cltext=TRIM(cexper)//' S (PSU) '//TRIM(clmode) 347 365 348 IF (ll_dia_inst) THEN366 IF( ll_dia_inst) THEN 349 367 CALL dia_wri_dimg(clname, cltext, sn, jpk, 'T') 350 368 ELSE 351 369 CALL dia_wri_dimg(clname, cltext, sm, jpk, 'T') 352 END 370 ENDIF 353 371 ! 354 372 … … 358 376 cltext='2D fields '//TRIM(clmode) 359 377 360 IF (ll_dia_inst) THEN378 IF( ll_dia_inst) THEN 361 379 CALL dia_wri_dimg(clname, cltext, fsel, inbsel, '2') 362 380 ELSE … … 368 386 !! * Log message in numout 369 387 370 IF( lwp)WRITE(numout,*) ' '371 IF( lwp)WRITE(numout,*) ' **** WRITE in numwri ',kt372 373 IF( lwp .AND. ll_dia_inst) WRITE(numout,*) ' instantaneous fields'374 IF( lwp .AND. .NOT. ll_dia_inst) WRITE(numout,*) ' average fields with ',nmoyct,'pdt'388 IF( lwp)WRITE(numout,*) ' ' 389 IF( lwp)WRITE(numout,*) ' **** WRITE in numwri ',kt 390 391 IF( lwp .AND. ll_dia_inst) WRITE(numout,*) ' instantaneous fields' 392 IF( lwp .AND. .NOT. ll_dia_inst) WRITE(numout,*) ' average fields with ',nmoyct,'pdt' 375 393 ! 376 394 ! 377 395 !! * Reset cumulating arrays and counter to 0 after writing 378 396 ! 379 IF 397 IF( .NOT. ll_dia_inst ) THEN 380 398 nmoyct = 0 381 399 ! … … 385 403 sm(:,:,:) = 0._wp 386 404 fsel(:,:,:) = 0._wp 387 ENDIF 388 END IF 405 avtm(:,:,:) = O._wp 406 ENDIF 407 ENDIF 389 408 ! 390 409 9000 FORMAT(a,"_",a,"_y",i4.4,"m",i2.2,"d",i2.2,".dimgproc") … … 405 424 !!-------------------------------------------------------------------- 406 425 407 IF (lwp) WRITE(numout,*) 'dia_wri_state: Dummy call', cdfile_name408 IF (lwp) WRITE(numout,*) '-------------'409 IF (lwp) WRITE(numout,*)426 IF( lwp) WRITE(numout,*) 'dia_wri_state: Dummy call', cdfile_name 427 IF( lwp) WRITE(numout,*) '-------------' 428 IF( lwp) WRITE(numout,*) 410 429 411 430 END SUBROUTINE dia_wri_state
Note: See TracChangeset
for help on using the changeset viewer.