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

source: trunk/NEMO/TOP_SRC/trcwri.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: 6.0 KB
Line 
1C $Id$
2CDIR$ LIST
3      SUBROUTINE trcwri(kt)
4CCC---------------------------------------------------------------------
5CCC
6CCC                       ROUTINE trcwri
7CCC                     ******************
8CCC
9CCC  PURPOSE :
10CCC  ---------
11CCC     WRITE restart fields in nutwrs
12CCC
13CC   METHOD :
14CC   -------
15CC
16CC nutwrs FILE:
17CC each nstock time step , SAVE fields which are necessary for
18CC passive tracer restart
19CC
20CC
21CC   INPUT :
22CC   -----
23CC      argument
24CC              kt              : time step
25CC      COMMON
26CC            /cottrc/          : passive tracers fields (before,now
27CC                                  ,after)
28CC
29CC   OUTPUT :
30CC   ------
31CC      FILE
32CC    nutwrs      : standard restart fields OUTPUT
33CC
34CC
35CC   WORKSPACE :
36CC   ---------
37CC      ji,jj,jk,jl,ino0,it0,iarak0
38CC
39CC   MODIFICATIONS:
40CC   --------------
41CC      original : 96-12
42CC      addition : 99-12 (M.-A. Foujols) NetCDF FORMAT with ioipsl
43CC      additions : 00-05 (A. Estublier) 
44CC                  TVD Limiter Scheme : key_trc_tvd
45CC      additions : 01-01 (M.A Foujols, E. Kestenare) bug fix: restclo
46CC      additions : 01-01 (O. Aumont, E. Kestenare) 
47CC                  write restart file for sediments
48CC      additions : 01-05 (O. Aumont, E. Kestenare) 
49CC                  write restart file for calcite and silicate sediments
50CC----------------------------------------------------------------------
51CC parameters and commons
52CC ======================
53#if defined key_mpp
54c no ioipsl
55#include "trcwri.mpp.h"
56#    else
57CDIR$ NOLIST
58      USE ioipsl 
59      USE oce_trc
60      USE trc
61      USE sms
62      IMPLICIT NONE
63CDIR$ LIST
64CC----------------------------------------------------------------------
65CC local declarations
66CC ==================
67      INTEGER kt
68
69#if defined key_passivetrc
70
71      INTEGER jn
72      INTEGER ino0,it0,iarak0
73      INTEGER ic,jc,ji,jj,jk
74      INTEGER iyear, imonth, iday, iy, itime
75      REAL zsec, zdate0, zdt, zinfo(3),zdiag_var,zdiag_varmin,
76     $     zdiag_varmax
77      CHARACTER*50 clname,clname1,clname2,cln,clnet
78      LOGICAL clbon
79
80CCC---------------------------------------------------------------------
81CCC  OPA8, LODYC (15/11/96)
82CCC---------------------------------------------------------------------
83C
84C
85C 1. OUTPUT of restart fields (nutwrs)
86C ---------------------------
87C
88      IF( (mod(kt,nstock).eq.0) .OR. (kt.eq.nitend) ) THEN
89C
90C 0. initialisations
91C ------------------
92C
93          IF(lwp) THEN
94              WRITE(numout,*) ' '
95              WRITE(numout,*)
96     $            ' trcwri: restart OUTPUT done in nutwrs = ',nutwrs
97     $            ,' at it= ',kt,' date= ',ndastp
98              WRITE(numout,*) ' -------'
99          ENDIF
100C
101          ino0 =no
102          it0  =kt
103
104#if defined key_trc_cen2 || defined key_trc_tvd
105          iarak0=1
106#else
107          iarak0=0
108#endif
109C
110C 1. WRITE in nutwrs
111C
112C ... first information
113C
114          INQUIRE (FILE=trestart,EXIST=clbon)
115          IF(clbon) THEN
116              OPEN(UNIT=numwrs,FILE=trestart,STATUS='old')
117              CLOSE(numwrs,STATUS='delete')
118          ENDIF
119
120          iyear = ndastp/10000
121          imonth = ndastp/100 - iyear*100
122          iday = ndastp - imonth*100 - iyear*10000
123          iyear = ndastp/10000
124          zsec=0.
125          iy=iyear-(iyear/100)*100
126          ic=1
127          DO jc=1,16
128            IF(cexper(jc:jc).ne.' ') ic=jc
129          END DO
130          WRITE(cln,'("_",i2.2,i2.2,i2.2,"_restart.trc")') iy,imonth
131     $        ,iday 
132          clname=cexper(1:ic)//cln
133          ic=1
134          DO jc=1,48
135            IF(clname(jc:jc).ne.' ') ic=jc
136          END DO
137          trestart=clname(1:ic)//".nc"
138          itime=0
139          CALL ymds2ju(iyear,imonth,iday,zsec,zdate0)
140          CALL restini('NONE',jpi,jpj,glamt,gphit,jpk,gdept,clname
141     $        ,itime,zdate0,rdt,nutwrs)
142          zinfo(1)=FLOAT(ino0)
143          zinfo(2)=FLOAT(it0)
144          zinfo(3)=FLOAT(iarak0)
145          CALL restput(nutwrs,'info',1,1,3,0,zinfo)
146C
147C prognostic variables
148C
149
150         DO jn=1,jptra
151            clname='TRN'//ctrcnm(jn)
152            CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trn(:,:,:,jn))
153
154         zdiag_var=0.
155         zdiag_varmin=0.
156         zdiag_varmax=0.
157         WRITE(numout,*) '----TRACER STAT----'
158
159         DO ji=1,jpi
160            DO jj=1,jpj
161              DO jk=1,jpk
162
163              zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)
164             
165              IF (tmask(ji,jj,jk).EQ.1.) THEN
166
167                  IF (zdiag_varmin.GT.trn(ji,jj,jk,jn)) 
168     $                zdiag_varmin =  trn(ji,jj,jk,jn)
169                  IF (zdiag_varmax.LT.trn(ji,jj,jk,jn))
170     $                zdiag_varmax =  trn(ji,jj,jk,jn)
171           
172              ENDIF
173
174              END DO
175            END DO
176         END DO
177     
178         zdiag_var=zdiag_var/(jpi*jpj*jpk)
179         
180         WRITE(numout,*) 'MEAN NO ',jn,' =',zdiag_var,'MIN= '
181     $       ,zdiag_varmin,'MAX= ',zdiag_varmax
182
183         END DO
184
185
186
187          DO jn=1,jptra
188            clname='TRB'//ctrcnm(jn)
189            CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trb(:,:,:,jn))
190          END DO
191
192#         if defined key_trc_hamocc3
193             clname='SED'//ctrcnm(jppoc)
194             clname1='SED'//ctrcnm(jpcal)
195             clname2='SED'//ctrcnm(jpsil)
196             CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedcal(:,:))
197             CALL restput(nutwrs,clname2,jpi,jpj,1,0,sedsil(:,:))
198             CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:))
199#         elif defined key_trc_npzd || defined key_trc_lobster1
200             clname='SED'//ctrcnm(jpdet)
201             CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:))
202#         elif defined key_trc_pisces
203             clname='SED'//ctrcnm(jppoc)
204             clname1='SED'//ctrcnm(jpcal)
205             clname2='SED'//ctrcnm(jpsil)
206             CALL restput(nutwrs,clname1,jpi,jpj,1,0,sedcal(:,:))
207             CALL restput(nutwrs,clname2,jpi,jpj,1,0,sedsil(:,:))
208             CALL restput(nutwrs,clname,jpi,jpj,1,0,sedpoc(:,:))
209#         endif
210
211          CALL restclo(nutwrs)
212
213      ENDIF
214C
215#else
216C
217C no passive tracers
218C
219#endif
220C
221#endif
222      RETURN
223      END
Note: See TracBrowser for help on using the repository browser.