New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 216 for trunk/NEMO/OPA_SRC/DIA/diawri_dimg.h90 – NEMO

Ignore:
Timestamp:
2005-03-17T15:02:38+01:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE151 : New trends organization

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DIA/diawri_dimg.h90

    r182 r216  
    407407 
    408408  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 fields 
    416     !! 
    417     !! ** Action : 
    418     !!       Define header variables from the config parameters 
    419     !!       Open the dimg file on unit inum = 14 ( IEEE I4R4 file ) 
    420     !!       Write header on record 1 
    421     !!       Write ptab on the following klev records 
    422     !! 
    423     !! History : 
    424     !!   03-12 (J.M. Molines ) : Original. Replace ctlopn, writn2d 
    425     !!--------------------------------------------------------------------------- 
    426     !! * subsitutions 
    427 #  include "domzgr_substitute.h90" 
    428  
    429     !! * Arguments 
    430     CHARACTER(len=*),INTENT(in) ::   & 
    431          &                            cd_name,  &  ! dimg file name 
    432          &                            cd_text      ! comment to write on record #1 
    433     INTEGER, INTENT(in) ::            klev         ! number of level in ptab to write 
    434     REAL(wp),INTENT(in), DIMENSION(:,:,:) :: ptab  ! 3D array to write  
    435     CHARACTER(LEN=1),INTENT(in) ::    cd_type      ! either 'T', 'W' or '2' , depending on the vertical 
    436     !                                              ! grid for ptab. 2 stands for 2D file 
    437     INTEGER, INTENT(in), OPTIONAL, DIMENSION(klev) :: ksubi  
    438  
    439     !! * Local declarations 
    440     INTEGER :: jk, jn           ! dummy loop indices 
    441     INTEGER :: irecl4,             &    ! record length in bytes 
    442          &       inum,             &    ! logical unit (set to 14) 
    443          &       irec                   ! current record to be written 
    444     REAL(sp)                    :: zdx,zdy,zspval,zwest,ztimm 
    445     REAL(sp)                    :: zsouth 
    446     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     !! * Initialisations 
    453  
    454     irecl4 = MAX(jpi*jpj*sp , 84+18*sp + (jpk+8)*jpnij*sp  ) 
    455     inum = 14 
    456  
    457     zspval=0.0_sp    ! special values on land 
    458     !  the 'numerical' grid is described. The geographical one is in a grid file 
    459     zdx=1._sp 
    460     zdy=1._sp 
    461     zsouth=njmpp * 1._sp 
    462     zwest=nimpp * 1._sp 
    463     !  time in days since the historical begining of the run (nit000 = 0 )  
    464     ztimm=adatrj 
    465  
    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 DEFAULT 
    481        IF(lwp) WRITE(numout,*) ' E R R O R : bad cd_type in dia_wri_dimg ' 
    482        STOP 'dia_wri_dimg' 
    483  
    484     END SELECT 
    485  
    486     !! * Open file 
    487     OPEN (inum, FILE=cd_name, FORM='UNFORMATTED', ACCESS='DIRECT', RECL=irecl4 ) 
    488  
    489     !! * Write header on record #1 
    490     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 output 
    496          &     nlcit,nlcjt, nldit, nldjt, nleit, nlejt, nimppt, njmppt  ! 
    497  
    498     !! * Write klev levels 
    499     IF ( cd_type == 'I' ) THEN 
    500  
    501        DO jk = 1, klev 
    502           irec =1 + klev * (narea -1) + jk 
    503           z42d(:,:) = ptab(:,:,ksubi(jk)) 
    504           WRITE(inum,REC=irec)  z42d(:,:) 
    505        END DO 
    506     ELSE 
    507        DO jk = 1, klev 
    508           irec =1 + klev * (narea -1) + jk 
    509           z42d(:,:) = ptab(:,:,jk) 
    510           WRITE(inum,REC=irec)  z42d(:,:) 
    511        END DO 
    512     ENDIF 
    513  
    514     !! * Close the file 
    515     CLOSE(inum) 
    516  
    517   END SUBROUTINE dia_wri_dimg 
Note: See TracChangeset for help on using the changeset viewer.