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

source: trunk/NEMO/TOP_SRC/SMS/trcdib.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: 8.2 KB
Line 
1CC $Header$
2CDIR$ LIST
3      SUBROUTINE trcdib(kt,kindic)
4CCC---------------------------------------------------------------------
5CCC
6CCC                       ROUTINE trcdib
7CCC                     ******************
8CCC
9CCC  Purpose :
10CCC  ---------
11CCC     Specific output of opa: biological fields
12CCC
13CCC     If "key_mpp" or "key_fdir, direct access FORMAT
14CCC
15CCC
16CC   Method :
17CC   -------
18CC
19CC At the beginning of the first time step (nit000), define all
20CC the NETCDF files and fields for passive tracer
21CC
22CC      At each time step call histdef to compute the mean if necessary
23CC Each nwrite time step, output the instantaneous or mean fields
24CC
25CC IF kindic <0, output of fields before the model interruption.
26CC      IF kindic =0, time step loop
27CC      IF kindic >0, output of fields before the time step loop
28CC
29CC
30CC
31CC   Input :
32CC   -----
33CC      argument
34CC              kt              : time step
35CC    kindic      : indicator of abnormal termination
36CC      COMMON
37CC            /comcoh/          : orthogonal curvilinear coordinates
38CC                                and scale factors
39CC            /comask/          : masks, bathymetry
40CC            /cottrc/          : passive tracers fields (before,now
41CC                                  ,after)
42CC            /cimcdf/     : NETCDF variables
43CC
44CC   Output :
45CC   ------
46CC      file
47CC              "histname" files: at least one file for each grid
48CC
49CC
50CC   Workspace :
51CC   ---------
52CC      local
53CC              zphy ()         : 3D aray for printing
54CC              ztra            : total nitrogen
55CC              zder            : derive in nitrogen
56CC
57CC
58CC   EXTERNAL :
59CC   --------
60CC prihre, hist..., dianam
61CC
62CC   MODIFICATIONS:
63CC   --------------
64CC      original  : 95-01  passive tracers  (M. Levy)
65CC      additions : 98-01 (C. Levy) NETCDF format using ioipsl interface
66CC      additions : 99-01 (M.A. Foujols) adapted for passive tracer
67CC      additions : 00-12 (E Kestenare) assign a parameter to name
68CC                                      individual tracers
69CC----------------------------------------------------------------------
70CC parameters and commons
71CC ======================
72      USE ioipsl
73      USE oce_trc
74      USE trp_trc
75      USE in_out_manager
76      USE trc
77      USE sms
78      USE dianam
79      IMPLICIT NONE
80CC----------------------------------------------------------------------
81CC local declarations
82CC ==================
83      INTEGER kt, kindic
84
85#    if defined key_passivetrc && key_trc_diabio
86
87      INTEGER ji, jj, jk, jn, jl
88      LOGICAL clp
89C
90      CHARACTER*40 clhstnam
91      CHARACTER*40 clop
92      CHARACTER*20 cltra, cltrau
93      CHARACTER*80 cltral
94
95      REAL zsto,zout
96      INTEGER iimi, iima, ijmi, ijma, ipk
97      REAL zsec
98
99      REAL ztra,zder,zphy(jpi,jpj,jpk)
100C
101CC----------------------------------------------------------------------
102CC statement functions
103CC ===================
104CDIR$ NOLIST
105#include "domzgr_substitute.h90"
106CDIR$ LIST
107CCC---------------------------------------------------------------------
108CCC  OPA8, LODYC (15/11/96)
109CCC---------------------------------------------------------------------
110C
111C 0. Initialisation
112C -----------------
113C
114C local variable for debugging
115      clp=.false.
116      clp=clp.and.lwp
117C
118C Define frequency of output and means
119C
120#        if defined key_diainstant
121      zsto=nwritebio*rdt
122      clop='inst(only(x))'
123#        else
124      zsto=rdt
125      clop='ave(only(x))'
126#        endif
127      zout=nwritebio*rdt
128C
129C Define indexes of the horizontal output zoom
130      iimi=1
131      iima=jpi
132      ijmi=1
133      ijma=jpj
134c ipk limit storage in depth
135      ipk = jpk
136C
137C
138C 1. Define NETCDF files and fields at beginning of first time step
139C -----------------------------------------------------------------
140C
141      IF(clp)WRITE(numout,*)'trcdib kt=',kt,' kindic ',kindic
142      IF (kt.eq.nit000.and.kindic.eq.1) THEN
143C
144C Define the NETCDF files for biological trends
145C
146          CALL dia_nam(clhstnam,nwrite,'biolog')
147          IF(lwp)WRITE(numout,*)
148     $        " Name of NETCDF file for biological trends ",clhstnam
149C Horizontal grid : glamt and gphit
150          WRITE(numout,*)" indexes of zoom = ",
151     $      iimi, iima, ijmi, ijma
152          WRITE(numout,*)" limit storage in depth = ", ipk
153C
154          CALL histbeg(clhstnam, jpi, glamt, jpj, gphit,
155     $        iimi, iima-iimi+1, ijmi, ijma-ijmi+1,
156     $        nit000-1, djulian, rdt, nhoritb, nitb)
157C Vertical grid for biological trends
158          CALL histvert(nitb, 'deptht', 'Vertical T levels',
159     $        'm', ipk, gdept, ndepitb)
160C
161C Declare all the output fields as NETCDF variables
162C
163C 
164C biological trends
165C
166          DO jn=1,jpdiabio
167            cltra=ctrbio(jn)    ! short title for biological diagnostic
168            cltral=ctrbil(jn)   ! long title for biological diagnostic
169            cltrau=ctrbiu(jn)   ! UNIT for biological diagnostic
170            CALL histdef(nitb, cltra, cltral, cltrau, jpi, jpj, nhoritb,
171     $          ipk, 1, ipk,  ndepitb, 32, clop, zsto, zout)
172          END DO
173C
174C CLOSE netcdf Files
175C         
176          CALL histend(nitb)
177C
178C SOME diagnostics to DO first time
179C
180
181#        if defined key_trc_npzd || defined key_trc_lobster1
182C
183C initial total nitrogen
184C
185          trai=0.
186          DO jn=1,jptra
187            DO jk=1,jpk
188              DO jj=1,jpj
189                DO ji=1,jpi
190                  trai=trai+trn(ji,jj,jk,jn)*fse3t(ji,jj,jk)*tmask(ji,jj
191     $                ,jk) 
192                END DO
193              END DO
194            END DO
195          END DO
196
197          IF (lwp) then
198              WRITE (numout,*) ' *** total nitrogen =  ',trai,
199     $            ' at beginning of run it= ',kt
200          ENDIF
201C
202          DO jk=1,jpk
203            DO jj=1,jpj
204              DO ji=1,jpi
205                zphy(ji,jj,jk)=trn(ji,jj,jk,jpphy)
206              END DO
207            END DO
208          END DO
209C
210          IF (lwp) then
211              WRITE (numout,*) ' -------'
212              WRITE (numout,*) ' phyto'
213              WRITE (numout,*) ' -------'
214              CALL prizre(zphy,jpi,jpj,jpk,62,2,122,20,1,14,1,0.,numout)
215          ENDIF 
216#        endif
217
218      ELSE
219C
220C
221C 2. Start writing data
222C ---------------------
223C
224C biological trends
225C
226          DO jn=1,jpdiabio
227            cltra=ctrbio(jn)  ! short title for biological diagnostic
228            CALL histwrite(nitb, cltra, kt, trbio(:,:,:,jn), ndimt50,
229     $          ndext50) 
230          END DO 
231#        if defined key_trc_npzd || defined key_trc_lobster1
232
233          IF(mod(kt-nit000+1,nwritebio).eq.0) THEN
234C
235C total nitrogen every nwritebio time step
236C
237              ztra=0.
238              DO jn=1,jptra
239                DO jk=1,jpk
240                  DO jj=1,jpj
241                    DO ji=1,jpi
242                      ztra=ztra+trn(ji,jj,jk,jn)*fse3t(ji,jj,jk)
243     $                    *tmask(ji,jj,jk) 
244                    END DO
245                  END DO
246                END DO
247              END DO
248C
249              zder=(ztra-trai)/trai
250              trai=ztra
251              IF (lwp) THEN
252                  WRITE (numout,*)
253                  WRITE (numout,*) ' *** derive in total nitrogen =  ',
254     $                zder,' %',' at it= ',kt
255                  WRITE (numout,*) ' *** total nitrogen =  ',trai,
256     $                ' at it= ',kt
257              ENDIF
258             
259C
260              DO jk=1,jpk
261                DO jj=1,jpj
262                  DO ji=1,jpi
263                    zphy(ji,jj,jk)=trn(ji,jj,jk,jpphy)
264                  END DO
265                END DO
266              END DO
267C
268              IF(lwp) THEN
269                  WRITE (numout,*)
270                  WRITE (numout,*) ' *** trcdib: at it= ',kt
271                  WRITE (numout,*) ' -------'
272                  WRITE (numout,*) ' phyto'
273                  WRITE (numout,*) ' -------'
274                  CALL prizre(zphy,jpi,jpj,jpk,jpj-1,2,jpj-1,20,1,14,1,
275     $                0.,numout) 
276              ENDIF
277
278          ENDIF 
279
280#        endif
281C
282C synchronise FILE
283C
284          IF(lwp .and. mod( kt, nwritebio ).EQ.0) THEN
285             WRITE(numout,*) '**** trcdib : write NetCDF fields'
286             CALL histsync(nitb)
287         ENDIF
288
289      ENDIF
290C
291C 3. Closing all files
292C --------------------
293      IF (kt.EQ.nitend.OR.kindic.LT.0) THEN
294          CALL histclo(nitb)
295      ENDIF
296
297#    else
298C
299C no passive tracers
300C
301#    endif
302
303C
304C 
305      RETURN
306      END
Note: See TracBrowser for help on using the repository browser.