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.
trcdid.F in trunk/NEMO/TOP_SRC – NEMO

source: trunk/NEMO/TOP_SRC/trcdid.F @ 247

Last change on this file since 247 was 247, checked in by opalod, 19 years ago

CL : Add CVS Header and CeCILL licence information

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.9 KB
Line 
1CCC $Header$ 
2CCC  TOP 1.0 , LOCEAN-IPSL (2005) 
3C This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
4C ---------------------------------------------------------------------------
5
6CDIR$ LIST
7      SUBROUTINE trcdid(kt,kindic)
8CCC---------------------------------------------------------------------
9CCC
10CCC                       ROUTINE trcdid
11CCC                     ******************
12CCC
13CCC  Purpose :
14CCC  ---------
15CCC     output of opa: passive tracer dynamical trends
16CCC
17CCC
18CC   Method :
19CC   -------
20CC
21CC At the beginning of the first time step (nit000), define all
22CC the NETCDF files and fields for passive tracer
23CC
24CC      At each time step call histdef to compute the mean if necessary
25CC Each nwrite time step, output the instantaneous or mean fields
26CC
27CC IF kindic <0, output of fields before the model interruption.
28CC      IF kindic =0, time step loop
29CC      IF kindic >0, output of fields before the time step loop
30CC
31CC
32CC
33CC   Input :
34CC   -----
35CC      argument
36CC              kt              : time step
37CC    kindic      : indicator of abnormal termination
38CC      COMMON
39CC            /comcoh/          : orthogonal curvilinear coordinates
40CC                                and scale factors
41CC            /comask/          : masks, bathymetry
42CC            /cottrc/          : passive tracers fields (before,now
43CC                                  ,after)
44CC            /citcdf/     : NETCDF variables
45CC
46CC   Output :
47CC   ------
48CC      file
49CC              "clhstnam" files
50CC
51CC
52CC   Workspace :
53CC   ---------
54CC      local
55CC
56CC
57CC   EXTERNAL :
58CC   --------
59CC prihre, hist..., dianam
60CC
61CC   MODIFICATIONS:
62CC   --------------
63CC      original  : 95-01  passive tracers  (M. Levy)
64CC      additions : 98-01 (C. Levy) NETCDF format using ioipsl interface
65CC      additions : 99-09 (M.A. Foujols) 
66CC      additions : 01-06 (Mehdi B, Elodie K): suppress initialization
67CC                                             of nit6,nhorit6,ndepit6 
68CC----------------------------------------------------------------------
69CC parameters and commons
70CC ======================
71      USE ioipsl
72CDIR$ NOLIST
73      USE oce_trc
74      USE trc
75      USE dianam    ! build name of file (routine)
76      IMPLICIT NONE
77CDIR$ LIST
78CC----------------------------------------------------------------------
79CC local declarations
80CC ==================
81      INTEGER kt, kindic
82
83#    if defined key_passivetrc && defined key_trc_diatrd
84
85      INTEGER jn, jl
86      LOGICAL clp
87C
88      CHARACTER*40 clhstnam
89      CHARACTER*40 clop
90      CHARACTER*20 cltra, cltrau
91      CHARACTER*120 cltral
92      CHARACTER(LEN=10) csuff
93
94      REAL zsto,zout
95      INTEGER iimi, iima, ijmi, ijma, ipk
96C
97CCC---------------------------------------------------------------------
98CCC  OPA8, LODYC (15/11/96)
99CCC---------------------------------------------------------------------
100C
101C 0. Initialisation
102C -----------------
103C
104C
105C local variable for debugging
106      clp=.false.
107      clp=clp.and.lwp
108C
109C Define frequency of output and means
110C
111#        if defined key_diainstant
112      zsto=nwritetrc*rdt
113      clop='inst(only(x))'
114#        else
115      zsto=rdt
116      clop='ave(only(x))'
117#        endif
118      zout=nwritetrc*rdt
119C
120C Define indexes of the horizontal output zoom
121      iimi=1
122      iima=jpi
123      ijmi=1
124      ijma=jpj
125c ipk limit storage in depth
126      ipk = jpk
127C
128C
129C 1. Define NETCDF files and fields at beginning of first time step
130C -----------------------------------------------------------------
131C
132      IF(clp)WRITE(numout,*)'trcdid kt=',kt,' kindic ',kindic
133      IF (kt.eq.nit000.and.kindic.eq.1) THEN
134C
135C Define the NETCDF files (one per tracer)
136C
137          DO jn=1,jptra 
138
139Cmb Errors found by Medhi B.: lines commented
140Cmb         nit6(jn)=0
141Cmb         nhorit6(jn)=0
142Cmb         ndepit6(jn)=0
143
144            IF (luttrd(jn)) THEN
145C
146C Define the file for dynamical trends - one per each tracer IF required
147C   
148                csuff='DY_'//ctrcnm(jn)
149                CALL dia_nam(clhstnam,nwrite,csuff)
150                IF(lwp)WRITE(numout,*)
151     $              " Name of NETCDF file for dynamical trends",
152     $              " of tracer number : ",clhstnam 
153C Horizontal grid : glamt and gphit
154                WRITE(numout,*)" indexes of zoom = ", 
155     $              iimi, iima, ijmi, ijma
156                WRITE(numout,*)" limit storage in depth = ", ipk
157C 
158                CALL histbeg(clhstnam, jpi, glamt, jpj, gphit,
159     $              iimi, iima-iimi+1, ijmi, ijma-ijmi+1,
160     $              nit000-1, djulian, rdt, nhorit6(jn),
161     $              nit6(jn))
162C Vertical grid for tracer trend - one per each tracer IF needed
163                CALL histvert(nit6(jn), 'deptht', 'Vertical T levels',
164     $              'm', ipk, gdept, ndepit6(jn))
165            END IF
166          END DO
167
168C
169C Declare all the output fields as NETCDF variables
170C
171C
172C trends for tracer concentrations
173C
174          DO jn=1,jptra
175            IF (luttrd(jn)) THEN
176                DO jl=1,jpdiatrc
177                  IF (jl.eq.1) THEN
178C short and long title for x advection for tracer 
179                      WRITE (cltra,'("XAD_",a)') ctrcnm(jn) 
180                      WRITE (cltral,'("X advective trend for ",a)')
181     $                ctrcnl(jn) 
182                  END IF
183                  IF (jl.eq.2)  THEN
184C short and long title for y advection for tracer 
185                      WRITE (cltra,'("YAD_",a)') ctrcnm(jn) 
186                      WRITE (cltral,'("Y advective trend for ",a)')
187     $                ctrcnl(jn) 
188                  END IF
189                  IF (jl.eq.3)  THEN
190C short and long title for Z advection for tracer 
191                      WRITE (cltra,'("ZAD_",a)') ctrcnm(jn) 
192                      WRITE (cltral,'("Z advective trend for ",a)')
193     $                ctrcnl(jn) 
194                  END IF
195                  IF (jl.eq.4)  THEN
196C short and long title for X diffusion for tracer 
197                      WRITE (cltra,'("XDF_",a)') ctrcnm(jn) 
198                      WRITE (cltral
199     $                ,'("X diffusion trend for ",a)')ctrcnm(jn) 
200                  END IF
201                  IF (jl.eq.5)  THEN
202C short and long title for Y diffusion for tracer 
203                      WRITE (cltra,'("YDF_",a)') ctrcnm(jn) 
204                      WRITE (cltral
205     $                ,'("Y diffusion trend for ",a)')ctrcnm(jn)
206                  END IF
207                  IF (jl.eq.6)  THEN
208C short and long title for Z diffusion for tracer 
209                      WRITE (cltra,'("ZDF_",a)') ctrcnm(jn) 
210                      WRITE (cltral
211     $                ,'("Z diffusion trend for ",a)')ctrcnm(jn)
212                  END IF
213#        if defined key_trc_ldfeiv
214                  IF (jl.eq.7) THEN
215C short and long title for x gent velocity for tracer
216                      WRITE (cltra,'("Xgv",a)') ctrcnm(jn)
217                      WRITE (cltral,'("X gent velocity trend for ",a)')
218     $                ctrcnl(jn)
219                  END IF
220                  IF (jl.eq.8)  THEN
221C short and long title for y gent velocity for tracer
222                      WRITE (cltra,'("YGV_",a)') ctrcnm(jn)
223                      WRITE (cltral,'("Y gent velocity trend for ",a)')
224     $                ctrcnl(jn)
225                  END IF
226                  IF (jl.eq.9)  THEN
227C short and long title for Z gent velocity for tracer
228                      WRITE (cltra,'("ZGV_",a)') ctrcnm(jn)
229                      WRITE (cltral,'("Z gent velocity trend for ",a)')
230     $                ctrcnl(jn)
231                  END IF
232#        endif
233#        if defined key_trcdmp
234                  IF (jl.eq.jpdiatrc)  THEN
235C last trends for tracer damping : short and long title 
236                      WRITE (cltra,'("TDM_",a)') ctrcnm(jn)
237                      WRITE (cltral,'("Tracer damping trend for ",a)')
238     $                ctrcnl(jn)
239                  END IF
240#        endif
241                  cltrau=ctrcun(jn) ! UNIT for tracer /trends
242                  CALL histdef(nit6(jn), cltra, cltral, cltrau, jpi,jpj,
243     $                nhorit6(jn), ipk, 1, ipk,  ndepit6(jn), 32, clop,
244     $                zsto,zout)
245                END DO
246            END IF
247          END DO
248         
249C
250C CLOSE netcdf Files
251C         
252          DO jn=1,jptra
253             IF (luttrd(jn)) CALL histend(nit6(jn))
254          END DO
255C
256C
257C SOME diagnostics to DO first time
258C
259
260      ELSE
261C
262C
263C 2. Start writing data
264C ---------------------
265C
266C trends for tracer concentrations
267C
268          DO jn=1,jptra
269            IF (luttrd(jn)) THEN
270                DO jl=1,jpdiatrc
271                  IF (jl.eq.1) THEN
272C short title for x advection for tracer 
273                      WRITE (cltra,'("XAD_",a)') ctrcnm(jn) 
274                  END IF
275                  IF (jl.eq.2)  THEN
276C short title for y advection for tracer 
277                      WRITE (cltra,'("YAD_",a)') ctrcnm(jn) 
278                  END IF
279                  IF (jl.eq.3)  THEN
280C short title for z advection for tracer 
281                      WRITE (cltra,'("ZAD_",a)') ctrcnm(jn) 
282                  END IF
283                  IF (jl.eq.4)  THEN
284C short title for x diffusion for tracer 
285                      WRITE (cltra,'("XDF_",a)') ctrcnm(jn) 
286                  END IF
287                  IF (jl.eq.5)  THEN
288C short title for y diffusion for tracer 
289                      WRITE (cltra,'("YDF_",a)') ctrcnm(jn) 
290                  END IF
291                  IF (jl.eq.6)  THEN
292C short title for z diffusion for tracer 
293                      WRITE (cltra,'("ZDF_",a)') ctrcnm(jn) 
294                  END IF                 
295#            if defined key_trc_ldfeiv
296                  IF (jl.eq.7) THEN
297C short for x gent velocity for tracer
298                      WRITE (cltra,'("XGV_",a)') ctrcnm(jn)
299                  END IF
300                  IF (jl.eq.8)  THEN
301C short for y gent velocity for tracer
302                      WRITE (cltra,'("YGV_",a)') ctrcnm(jn)
303                  END IF
304                  IF (jl.eq.9)  THEN
305C short title for Z gent velocity for tracer
306                      WRITE (cltra,'("ZGV_",a)') ctrcnm(jn)
307                  END IF
308#            endif
309#            if defined key_trcdmp
310                  IF (jl.eq.jpdiatrc) THEN
311C short for x gent velocity for tracer
312                      WRITE (cltra,'("TDM_",a)') ctrcnm(jn)
313                  END IF
314#            endif
315
316                  CALL histwrite(nit6(jn), cltra, kt, trtrd(:,:,:,jn,jl)
317     $                ,ndimt50, ndext50) 
318                END DO
319            END IF
320          END DO
321C
322C synchronisation IF needed
323C
324          IF(lwp .and. mod( kt, nwritetrc ).EQ.0) THEN
325             WRITE(numout,*)
326     $            '**** trcdid : write NetCDF dynamical trends' 
327             DO jn=1,jptra
328               IF (luttrd(jn)) CALL histsync(nit6(jn))
329             END DO
330         ENDIF
331      ENDIF
332C
333C 3. Closing all files
334C --------------------
335      IF (kt.EQ.nitend.OR.kindic.LT.0) THEN
336          DO jn=1,jptra
337             IF (luttrd(jn)) CALL histclo(nit6(jn))
338          END DO
339      ENDIF
340
341#    else
342C
343C no passive tracers
344C
345#    endif
346C
347C 
348      RETURN
349      END
Note: See TracBrowser for help on using the repository browser.