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 @ 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: 6.0 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 ---------------------------------------------------------------------------
5CDIR$ LIST
6      SUBROUTINE trcwri(kt)
7CCC---------------------------------------------------------------------
8CCC
9CCC                       ROUTINE trcwri
10CCC                     ******************
11CCC
12CCC  PURPOSE :
13CCC  ---------
14CCC     WRITE restart fields in nutwrs
15CCC
16CC   METHOD :
17CC   -------
18CC
19CC nutwrs FILE:
20CC each nstock time step , SAVE fields which are necessary for
21CC passive tracer restart
22CC
23CC
24CC   INPUT :
25CC   -----
26CC      argument
27CC              kt              : time step
28CC      COMMON
29CC            /cottrc/          : passive tracers fields (before,now
30CC                                  ,after)
31CC
32CC   OUTPUT :
33CC   ------
34CC      FILE
35CC    nutwrs      : standard restart fields OUTPUT
36CC
37CC
38CC   WORKSPACE :
39CC   ---------
40CC      ji,jj,jk,jl,ino0,it0,iarak0
41CC
42CC   MODIFICATIONS:
43CC   --------------
44CC      original : 96-12
45CC      addition : 99-12 (M.-A. Foujols) NetCDF FORMAT with ioipsl
46CC      additions : 00-05 (A. Estublier) 
47CC                  TVD Limiter Scheme : key_trc_tvd
48CC      additions : 01-01 (M.A Foujols, E. Kestenare) bug fix: restclo
49CC      additions : 01-01 (O. Aumont, E. Kestenare) 
50CC                  write restart file for sediments
51CC      additions : 01-05 (O. Aumont, E. Kestenare) 
52CC                  write restart file for calcite and silicate sediments
53CC----------------------------------------------------------------------
54CC parameters and commons
55CC ======================
56#if defined key_mpp
57c no ioipsl
58#include "trcwri.mpp.h"
59#    else
60CDIR$ NOLIST
61      USE ioipsl 
62      USE oce_trc
63      USE trc
64      USE sms
65      IMPLICIT NONE
66CDIR$ LIST
67CC----------------------------------------------------------------------
68CC local declarations
69CC ==================
70      INTEGER kt
71
72#if defined key_passivetrc
73
74      INTEGER jn
75      INTEGER ino0,it0,iarak0
76      INTEGER ic,jc,ji,jj,jk
77      INTEGER iyear, imonth, iday, iy, itime
78      REAL zsec, zdate0, zdt, zinfo(3),zdiag_var,zdiag_varmin,
79     $     zdiag_varmax
80      CHARACTER*50 clname,clname1,clname2,cln,clnet
81      LOGICAL clbon
82
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.