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 182 for trunk/NEMO – NEMO

Changeset 182 for trunk/NEMO


Ignore:
Timestamp:
2004-11-05T15:08:51+01:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE127 : the storage of w is now allowed, as well as kz; also, the zoom parameters (jpizoom, jpjzoom) are stored in binary file header

File:
1 edited

Legend:

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

    r32 r182  
    7979!!  INTEGER :: iwrite 
    8080    INTEGER :: iyear,imon,iday 
     81    INTEGER, SAVE :: nmoyct  
    8182 
    8283#if defined key_diainstant 
    83     REAL(wp),DIMENSION(jpi,jpj,jpk)  :: fsel 
    84     LOGICAL, PARAMETER :: l_dia_inst=.true. 
    85  
    86     REAL(wp), SAVE, DIMENSION (1,1,1) ::  um , vm   ! dummy arrays for comiplation purpose 
    87     REAL(wp), SAVE, DIMENSION (1,1,1) ::  tm , sm   !  
    88     REAL(wp), SAVE, DIMENSION (1,1,1) ::  fsel      ! 
    89     REAL(wp) :: zdtj 
     84    LOGICAL, PARAMETER :: ll_dia_inst=.TRUE.  !: for instantaneous output 
    9085#else 
    91     INTEGER, SAVE :: nmoyct  
     86    LOGICAL, PARAMETER :: ll_dia_inst=.FALSE. !: for average output 
     87#endif 
    9288 
    9389    REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) ::  um , vm   ! used to compute mean u, v fields 
     90    REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) ::  wm        ! used to compute mean w fields 
    9491    REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) ::  tm , sm   ! used to compute mean t, s fields 
    9592    REAL(wp), SAVE, DIMENSION (jpi,jpj,jpk) ::  fsel      ! used to compute mean 2d fields 
    9693    REAL(wp) :: zdtj 
    97     LOGICAL, PARAMETER :: l_dia_inst=.false. 
    98 #endif 
    9994    ! 
    10095    CHARACTER(LEN=80) :: clname 
     
    128123    clver='@!01' 
    129124    ! 
    130     IF ( .NOT. l_dia_inst ) THEN 
     125    IF ( .NOT. ll_dia_inst ) THEN 
    131126       !#if ! defined key_diainstant 
    132127       ! 
     
    143138          um(:,:,:) = 0._wp 
    144139          vm(:,:,:) = 0._wp 
     140          wm(:,:,:) = 0._wp 
    145141          tm(:,:,:) = 0._wp 
    146142          sm(:,:,:) = 0._wp 
     
    156152       um(:,:,:)=um(:,:,:) + un (:,:,:) 
    157153       vm(:,:,:)=vm(:,:,:) + vn (:,:,:) 
     154       wm(:,:,:)=wm(:,:,:) + wn (:,:,:) 
    158155       tm(:,:,:)=tm(:,:,:) + tn (:,:,:) 
    159156       sm(:,:,:)=sm(:,:,:) + sn (:,:,:) 
     
    192189       !      IF (abs(adatrj-iwrite*rwrite) < zdtj/2.      & 
    193190 
    194        IF (  ( MOD (kt,nwrite) ==  0 )          & 
     191       IF (  ( MOD (kt-nit000+1,nwrite) ==  0 )          & 
    195192            &   .OR.       kindic <   0            & 
    196193            &   .OR. ( kt == 1 .AND. kindic > 0)  ) THEN 
     
    199196          um(:,:,:) = um(:,:,:) / nmoyct 
    200197          vm(:,:,:) = vm(:,:,:) / nmoyct 
     198          wm(:,:,:) = wm(:,:,:) / nmoyct 
    201199          tm(:,:,:) = tm(:,:,:) / nmoyct 
    202200          sm(:,:,:) = sm(:,:,:) / nmoyct 
     
    214212       ENDIF 
    215213       ! 
    216     ELSE   ! l_dia_inst true 
     214    ELSE   ! ll_dia_inst true 
    217215       !#  else 
    218216       ! 
     
    227225       clmode='instantaneous' 
    228226       !     IF (abs(adatrj-iwrite*rwrite) < zdtj/2.  & 
    229        IF (  ( MOD (kt,nwrite) ==  0 )          & 
     227       IF (  ( MOD (kt-nit000+1,nwrite) ==  0 )          & 
    230228            &   .OR.       kindic <   0            & 
    231229            &   .OR. ( kt == 1 .AND. kindic > 0)  ) THEN 
     
    268266    ! this file gives a record of the dump date for post processing ( ASCII file ) 
    269267    ! 
    270     IF (  ( MOD (kt,nwrite) ==  0 )          & 
     268    IF (  ( MOD (kt-nit000+1,nwrite) ==  0 )          & 
    271269         &   .OR.       kindic <   0            & 
    272270         &   .OR. ( kt == 1 .AND. kindic > 0)  ) THEN 
     
    284282       IF ( kindic < 0 )   cltext=TRIM(cexper)//' U(m/s)  instantaneous (explosion)' 
    285283       ! 
    286        IF ( l_dia_inst) THEN  
     284       IF ( ll_dia_inst) THEN  
    287285          CALL dia_wri_dimg(clname, cltext, un, jpk, 'T') 
    288286 
     
    301299       cltext=TRIM(cexper)//' V(m/s) '//TRIM(clmode) 
    302300       ! 
    303        IF ( l_dia_inst) THEN 
     301       IF ( ll_dia_inst) THEN 
    304302          CALL dia_wri_dimg(clname, cltext, vn, jpk, 'T') 
    305303       ELSE 
     
    317315       ! 
    318316 
     317       !! * W section 
     318 
     319       WRITE(clname,9000) TRIM(cexper),'W',iyear,imon,iday 
     320       cltext=TRIM(cexper)//' W(m/s) '//TRIM(clmode) 
     321 
     322       IF ( ll_dia_inst) THEN 
     323          CALL dia_wri_dimg(clname, cltext, wn, jpk, 'W') 
     324       ELSE 
     325          CALL dia_wri_dimg(clname, cltext, wm, jpk, 'W') 
     326       END IF 
     327 
    319328       !! * T section 
    320329 
     
    322331       cltext=TRIM(cexper)//' T (DegC) '//TRIM(clmode) 
    323332 
    324        IF (l_dia_inst) THEN 
     333       IF (ll_dia_inst) THEN 
    325334          CALL dia_wri_dimg(clname, cltext, tn, jpk, 'T') 
    326335       ELSE 
     
    334343       cltext=TRIM(cexper)//' S (PSU) '//TRIM(clmode) 
    335344 
    336        IF (l_dia_inst) THEN 
     345       IF (ll_dia_inst) THEN 
    337346          CALL dia_wri_dimg(clname, cltext, sn, jpk, 'T') 
    338347       ELSE 
     
    346355       cltext='2D fields '//TRIM(clmode) 
    347356 
    348        IF (l_dia_inst) THEN 
     357       IF (ll_dia_inst) THEN 
    349358          CALL dia_wri_dimg(clname, cltext, fsel, inbsel, '2') 
    350359       ELSE 
     
    359368       IF(lwp)WRITE(numout,*) ' **** WRITE in numwri ',kt 
    360369 
    361        IF(lwp .AND.        l_dia_inst) WRITE(numout,*) '    instantaneous fields' 
    362        IF(lwp .AND. .NOT. l_dia_inst ) WRITE(numout,*) '    average fields with ',nmoyct,'pdt' 
     370       IF(lwp .AND.        ll_dia_inst) WRITE(numout,*) '    instantaneous fields' 
     371       IF(lwp .AND. .NOT. ll_dia_inst ) WRITE(numout,*) '    average fields with ',nmoyct,'pdt' 
    363372       ! 
    364373       ! 
    365374       !! * Reset cumulating arrays  and counter to 0 after writing 
    366375       ! 
    367        IF ( .NOT. l_dia_inst ) THEN 
     376       IF ( .NOT. ll_dia_inst ) THEN 
    368377          nmoyct = 0 
    369378          ! 
     
    399408  END SUBROUTINE dia_wri_state 
    400409 
    401   SUBROUTINE dia_wri_dimg(cd_name, cd_text, ptab, klev, cd_type ) 
     410  SUBROUTINE dia_wri_dimg(cd_name, cd_text, ptab, klev, cd_type , ksubi ) 
    402411    !!------------------------------------------------------------------------- 
    403412    !!        *** ROUTINE dia_wri_dimg *** 
     
    426435    CHARACTER(LEN=1),INTENT(in) ::    cd_type      ! either 'T', 'W' or '2' , depending on the vertical 
    427436    !                                              ! grid for ptab. 2 stands for 2D file 
     437    INTEGER, INTENT(in), OPTIONAL, DIMENSION(klev) :: ksubi  
    428438 
    429439    !! * Local declarations 
     
    442452    !! * Initialisations 
    443453 
    444     irecl4 = jpi*jpj*sp 
     454    irecl4 = MAX(jpi*jpj*sp , 84+18*sp + (jpk+8)*jpnij*sp  ) 
    445455    inum = 14 
    446456 
     
    465475       z4dep(1:klev) =(/(jk, jk=1,klev)/) 
    466476 
     477    CASE ( 'I' ) 
     478       z4dep(1:klev) = ksubi(1:klev) 
     479 
    467480    CASE DEFAULT 
    468481       IF(lwp) WRITE(numout,*) ' E R R O R : bad cd_type in dia_wri_dimg ' 
     
    480493         &     (z4dep(1:klev),jn=1,jpnij),       & 
    481494         &     ztimm,                            & 
    482          &     narea, jpnij,jpiglo,jpjglo,              &    ! extension to dimg for mpp output 
     495         &     narea, jpnij,jpiglo,jpjglo,jpizoom, jpjzoom,    &    ! extension to dimg for mpp output 
    483496         &     nlcit,nlcjt, nldit, nldjt, nleit, nlejt, nimppt, njmppt  ! 
    484497 
    485498    !! * Write klev levels 
    486     DO jk = 1, klev 
    487        irec =1 + klev * (narea -1) + jk 
    488        z42d(:,:) = ptab(:,:,jk) 
    489        WRITE(inum,REC=irec)  z42d(:,:) 
    490     END DO 
     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 
    491513 
    492514    !! * Close the file 
Note: See TracChangeset for help on using the changeset viewer.