C $Id$ CDIR$ LIST SUBROUTINE trcdid(kt,kindic) CCC--------------------------------------------------------------------- CCC CCC ROUTINE trcdid CCC ****************** CCC CCC Purpose : CCC --------- CCC output of opa: passive tracer dynamical trends CCC CCC CC Method : CC ------- CC CC At the beginning of the first time step (nit000), define all CC the NETCDF files and fields for passive tracer CC CC At each time step call histdef to compute the mean if necessary CC Each nwrite time step, output the instantaneous or mean fields CC CC IF kindic <0, output of fields before the model interruption. CC IF kindic =0, time step loop CC IF kindic >0, output of fields before the time step loop CC CC CC CC Input : CC ----- CC argument CC kt : time step CC kindic : indicator of abnormal termination CC COMMON CC /comcoh/ : orthogonal curvilinear coordinates CC and scale factors CC /comask/ : masks, bathymetry CC /cottrc/ : passive tracers fields (before,now CC ,after) CC /citcdf/ : NETCDF variables CC CC Output : CC ------ CC file CC "clhstnam" files CC CC CC Workspace : CC --------- CC local CC CC CC EXTERNAL : CC -------- CC prihre, hist..., dianam CC CC MODIFICATIONS: CC -------------- CC original : 95-01 passive tracers (M. Levy) CC additions : 98-01 (C. Levy) NETCDF format using ioipsl interface CC additions : 99-09 (M.A. Foujols) CC additions : 01-06 (Mehdi B, Elodie K): suppress initialization CC of nit6,nhorit6,ndepit6 CC---------------------------------------------------------------------- CC parameters and commons CC ====================== USE ioipsl CDIR$ NOLIST USE oce_trc USE trc USE dianam ! build name of file (routine) IMPLICIT NONE CDIR$ LIST CC---------------------------------------------------------------------- CC local declarations CC ================== INTEGER kt, kindic # if defined key_passivetrc && defined key_trc_diatrd INTEGER jn, jl LOGICAL clp C CHARACTER*40 clhstnam CHARACTER*40 clop CHARACTER*20 cltra, cltrau CHARACTER*120 cltral CHARACTER(LEN=10) csuff REAL zsto,zout INTEGER iimi, iima, ijmi, ijma, ipk C CCC--------------------------------------------------------------------- CCC OPA8, LODYC (15/11/96) CCC--------------------------------------------------------------------- C C 0. Initialisation C ----------------- C C C local variable for debugging clp=.false. clp=clp.and.lwp C C Define frequency of output and means C # if defined key_diainstant zsto=nwritetrc*rdt clop='inst(only(x))' # else zsto=rdt clop='ave(only(x))' # endif zout=nwritetrc*rdt C C Define indexes of the horizontal output zoom iimi=1 iima=jpi ijmi=1 ijma=jpj c ipk limit storage in depth ipk = jpk C C C 1. Define NETCDF files and fields at beginning of first time step C ----------------------------------------------------------------- C IF(clp)WRITE(numout,*)'trcdid kt=',kt,' kindic ',kindic IF (kt.eq.nit000.and.kindic.eq.1) THEN C C Define the NETCDF files (one per tracer) C DO jn=1,jptra Cmb Errors found by Medhi B.: lines commented Cmb nit6(jn)=0 Cmb nhorit6(jn)=0 Cmb ndepit6(jn)=0 IF (luttrd(jn)) THEN C C Define the file for dynamical trends - one per each tracer IF required C csuff='DY_'//ctrcnm(jn) CALL dia_nam(clhstnam,nwrite,csuff) IF(lwp)WRITE(numout,*) $ " Name of NETCDF file for dynamical trends", $ " of tracer number : ",clhstnam C Horizontal grid : glamt and gphit WRITE(numout,*)" indexes of zoom = ", $ iimi, iima, ijmi, ijma WRITE(numout,*)" limit storage in depth = ", ipk C CALL histbeg(clhstnam, jpi, glamt, jpj, gphit, $ iimi, iima-iimi+1, ijmi, ijma-ijmi+1, $ nit000-1, djulian, rdt, nhorit6(jn), $ nit6(jn)) C Vertical grid for tracer trend - one per each tracer IF needed CALL histvert(nit6(jn), 'deptht', 'Vertical T levels', $ 'm', ipk, gdept, ndepit6(jn)) END IF END DO C C Declare all the output fields as NETCDF variables C C C trends for tracer concentrations C DO jn=1,jptra IF (luttrd(jn)) THEN DO jl=1,jpdiatrc IF (jl.eq.1) THEN C short and long title for x advection for tracer WRITE (cltra,'("XAD_",a)') ctrcnm(jn) WRITE (cltral,'("X advective trend for ",a)') $ ctrcnl(jn) END IF IF (jl.eq.2) THEN C short and long title for y advection for tracer WRITE (cltra,'("YAD_",a)') ctrcnm(jn) WRITE (cltral,'("Y advective trend for ",a)') $ ctrcnl(jn) END IF IF (jl.eq.3) THEN C short and long title for Z advection for tracer WRITE (cltra,'("ZAD_",a)') ctrcnm(jn) WRITE (cltral,'("Z advective trend for ",a)') $ ctrcnl(jn) END IF IF (jl.eq.4) THEN C short and long title for X diffusion for tracer WRITE (cltra,'("XDF_",a)') ctrcnm(jn) WRITE (cltral $ ,'("X diffusion trend for ",a)')ctrcnm(jn) END IF IF (jl.eq.5) THEN C short and long title for Y diffusion for tracer WRITE (cltra,'("YDF_",a)') ctrcnm(jn) WRITE (cltral $ ,'("Y diffusion trend for ",a)')ctrcnm(jn) END IF IF (jl.eq.6) THEN C short and long title for Z diffusion for tracer WRITE (cltra,'("ZDF_",a)') ctrcnm(jn) WRITE (cltral $ ,'("Z diffusion trend for ",a)')ctrcnm(jn) END IF # if defined key_trc_ldfeiv IF (jl.eq.7) THEN C short and long title for x gent velocity for tracer WRITE (cltra,'("Xgv",a)') ctrcnm(jn) WRITE (cltral,'("X gent velocity trend for ",a)') $ ctrcnl(jn) END IF IF (jl.eq.8) THEN C short and long title for y gent velocity for tracer WRITE (cltra,'("YGV_",a)') ctrcnm(jn) WRITE (cltral,'("Y gent velocity trend for ",a)') $ ctrcnl(jn) END IF IF (jl.eq.9) THEN C short and long title for Z gent velocity for tracer WRITE (cltra,'("ZGV_",a)') ctrcnm(jn) WRITE (cltral,'("Z gent velocity trend for ",a)') $ ctrcnl(jn) END IF # endif # if defined key_trcdmp IF (jl.eq.jpdiatrc) THEN C last trends for tracer damping : short and long title WRITE (cltra,'("TDM_",a)') ctrcnm(jn) WRITE (cltral,'("Tracer damping trend for ",a)') $ ctrcnl(jn) END IF # endif cltrau=ctrcun(jn) ! UNIT for tracer /trends CALL histdef(nit6(jn), cltra, cltral, cltrau, jpi,jpj, $ nhorit6(jn), ipk, 1, ipk, ndepit6(jn), 32, clop, $ zsto,zout) END DO END IF END DO C C CLOSE netcdf Files C DO jn=1,jptra IF (luttrd(jn)) CALL histend(nit6(jn)) END DO C C C SOME diagnostics to DO first time C ELSE C C C 2. Start writing data C --------------------- C C trends for tracer concentrations C DO jn=1,jptra IF (luttrd(jn)) THEN DO jl=1,jpdiatrc IF (jl.eq.1) THEN C short title for x advection for tracer WRITE (cltra,'("XAD_",a)') ctrcnm(jn) END IF IF (jl.eq.2) THEN C short title for y advection for tracer WRITE (cltra,'("YAD_",a)') ctrcnm(jn) END IF IF (jl.eq.3) THEN C short title for z advection for tracer WRITE (cltra,'("ZAD_",a)') ctrcnm(jn) END IF IF (jl.eq.4) THEN C short title for x diffusion for tracer WRITE (cltra,'("XDF_",a)') ctrcnm(jn) END IF IF (jl.eq.5) THEN C short title for y diffusion for tracer WRITE (cltra,'("YDF_",a)') ctrcnm(jn) END IF IF (jl.eq.6) THEN C short title for z diffusion for tracer WRITE (cltra,'("ZDF_",a)') ctrcnm(jn) END IF # if defined key_trc_ldfeiv IF (jl.eq.7) THEN C short for x gent velocity for tracer WRITE (cltra,'("XGV_",a)') ctrcnm(jn) END IF IF (jl.eq.8) THEN C short for y gent velocity for tracer WRITE (cltra,'("YGV_",a)') ctrcnm(jn) END IF IF (jl.eq.9) THEN C short title for Z gent velocity for tracer WRITE (cltra,'("ZGV_",a)') ctrcnm(jn) END IF # endif # if defined key_trcdmp IF (jl.eq.jpdiatrc) THEN C short for x gent velocity for tracer WRITE (cltra,'("TDM_",a)') ctrcnm(jn) END IF # endif CALL histwrite(nit6(jn), cltra, kt, trtrd(:,:,:,jn,jl) $ ,ndimt50, ndext50) END DO END IF END DO C C synchronisation IF needed C IF(lwp .and. mod( kt, nwritetrc ).EQ.0) THEN WRITE(numout,*) $ '**** trcdid : write NetCDF dynamical trends' DO jn=1,jptra IF (luttrd(jn)) CALL histsync(nit6(jn)) END DO ENDIF ENDIF C C 3. Closing all files C -------------------- IF (kt.EQ.nitend.OR.kindic.LT.0) THEN DO jn=1,jptra IF (luttrd(jn)) CALL histclo(nit6(jn)) END DO ENDIF # else C C no passive tracers C # endif C C RETURN END