Changeset 216 for trunk/NEMO/OPA_SRC/DIA/diawri_dimg.h90
- Timestamp:
- 2005-03-17T15:02:38+01:00 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DIA/diawri_dimg.h90
r182 r216 407 407 408 408 END SUBROUTINE dia_wri_state 409 410 SUBROUTINE dia_wri_dimg(cd_name, cd_text, ptab, klev, cd_type , ksubi )411 !!-------------------------------------------------------------------------412 !! *** ROUTINE dia_wri_dimg ***413 !!414 !! ** Purpose : write ptab in the dimg file cd_name, with comment cd_text.415 !! ptab has klev x 2D fields416 !!417 !! ** Action :418 !! Define header variables from the config parameters419 !! Open the dimg file on unit inum = 14 ( IEEE I4R4 file )420 !! Write header on record 1421 !! Write ptab on the following klev records422 !!423 !! History :424 !! 03-12 (J.M. Molines ) : Original. Replace ctlopn, writn2d425 !!---------------------------------------------------------------------------426 !! * subsitutions427 # include "domzgr_substitute.h90"428 429 !! * Arguments430 CHARACTER(len=*),INTENT(in) :: &431 & cd_name, & ! dimg file name432 & cd_text ! comment to write on record #1433 INTEGER, INTENT(in) :: klev ! number of level in ptab to write434 REAL(wp),INTENT(in), DIMENSION(:,:,:) :: ptab ! 3D array to write435 CHARACTER(LEN=1),INTENT(in) :: cd_type ! either 'T', 'W' or '2' , depending on the vertical436 ! ! grid for ptab. 2 stands for 2D file437 INTEGER, INTENT(in), OPTIONAL, DIMENSION(klev) :: ksubi438 439 !! * Local declarations440 INTEGER :: jk, jn ! dummy loop indices441 INTEGER :: irecl4, & ! record length in bytes442 & inum, & ! logical unit (set to 14)443 & irec ! current record to be written444 REAL(sp) :: zdx,zdy,zspval,zwest,ztimm445 REAL(sp) :: zsouth446 REAL(sp),DIMENSION(jpi,jpj) :: z42d ! 2d temporary workspace (sp)447 REAL(sp),DIMENSION(jpk) :: z4dep ! vertical level (sp)448 449 CHARACTER(LEN=4) :: clver='@!01'450 !!---------------------------------------------------------------------------451 452 !! * Initialisations453 454 irecl4 = MAX(jpi*jpj*sp , 84+18*sp + (jpk+8)*jpnij*sp )455 inum = 14456 457 zspval=0.0_sp ! special values on land458 ! the 'numerical' grid is described. The geographical one is in a grid file459 zdx=1._sp460 zdy=1._sp461 zsouth=njmpp * 1._sp462 zwest=nimpp * 1._sp463 ! time in days since the historical begining of the run (nit000 = 0 )464 ztimm=adatrj465 466 SELECT CASE ( cd_type )467 468 CASE ( 'T')469 z4dep(:)=fsdept(1,1,:)470 471 CASE ( 'W' )472 z4dep(:)=fsdepw(1,1,:)473 474 CASE ( '2' )475 z4dep(1:klev) =(/(jk, jk=1,klev)/)476 477 CASE ( 'I' )478 z4dep(1:klev) = ksubi(1:klev)479 480 CASE DEFAULT481 IF(lwp) WRITE(numout,*) ' E R R O R : bad cd_type in dia_wri_dimg '482 STOP 'dia_wri_dimg'483 484 END SELECT485 486 !! * Open file487 OPEN (inum, FILE=cd_name, FORM='UNFORMATTED', ACCESS='DIRECT', RECL=irecl4 )488 489 !! * Write header on record #1490 IF(lwp) WRITE(inum,REC=1 ) clver, cd_text, irecl4, &491 & jpi,jpj, klev*jpnij, 1 , 1 , &492 & zwest, zsouth, zdx, zdy, zspval, &493 & (z4dep(1:klev),jn=1,jpnij), &494 & ztimm, &495 & narea, jpnij,jpiglo,jpjglo,jpizoom, jpjzoom, & ! extension to dimg for mpp output496 & nlcit,nlcjt, nldit, nldjt, nleit, nlejt, nimppt, njmppt !497 498 !! * Write klev levels499 IF ( cd_type == 'I' ) THEN500 501 DO jk = 1, klev502 irec =1 + klev * (narea -1) + jk503 z42d(:,:) = ptab(:,:,ksubi(jk))504 WRITE(inum,REC=irec) z42d(:,:)505 END DO506 ELSE507 DO jk = 1, klev508 irec =1 + klev * (narea -1) + jk509 z42d(:,:) = ptab(:,:,jk)510 WRITE(inum,REC=irec) z42d(:,:)511 END DO512 ENDIF513 514 !! * Close the file515 CLOSE(inum)516 517 END SUBROUTINE dia_wri_dimg
Note: See TracChangeset
for help on using the changeset viewer.