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 @ 186

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

CL + CE : NEMO TRC_SRC start

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