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.
trcrst_fdir.h90 in trunk/NEMO/TOP_SRC – NEMO

source: trunk/NEMO/TOP_SRC/trcrst_fdir.h90 @ 268

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

nemo_v1_update_05:RB+OA: Update and rewritting of part of the TOP component

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.4 KB
Line 
1SUBROUTINE trc_rst
2   !!===========================================================================================
3   !!
4   !!                       ROUTINE trc_rst
5   !!                     *******************
6   !!
7   !!------------------------------------------------------------------------
8
9      !! * Local declarations
10      INTEGER :: ino0,ino1,it0,it1,idast1,jn,iarak0,iarak1
11      INTEGER ::   ibloc, ilglo
12      INTEGER :: inum   ! temporary logical unit
13      !!----------------------------------------------------------------------
14      !!  OPA 8.5, LODYC-IPSL (2002)
15      !!----------------------------------------------------------------------
16
17      ! open restart file
18      ibloc = 4096
19      ilglo = ibloc*((jpiglo*jpjglo*jpbyt-1 )/ibloc+1)
20      CALL ctlopn(inum,'restarti.trc','OLD','UNFORMATTED','DIRECT',   &
21                  ilglo,numout,lwp,1)
22      ! restart options
23      IF(nrsttr == 0) THEN
24         IF(lwp) WRITE(numout,*) ' nrsttr = 0 no control of nit000'
25      ELSE IF(nrsttr == 1) THEN
26         IF(lwp) WRITE(numout,*) ' nrsttr = 1 we control the date'
27      ELSE
28         IF(lwp) WRITE(numout,*) '  ===>>>> nrsttr not equal 0 or 1'
29         IF(lwp) WRITE(numout,*) ' =======                   ======'
30         IF(lwp) WRITE(numout,*) ' we dont control the date'
31      ENDIF
32
33      ! 0. initialisations
34      ! ------------------
35
36      ino0 =no
37      it0  =nit000
38
39#if defined key_trc_cen2
40      iarak0=1
41#else
42      iarak0=0
43#endif
44
45      IF(lwp) THEN
46          WRITE(numout,*) ' '
47          WRITE(numout,*) ' *** trcrst beginning of restart for'
48          WRITE(numout,*) ' passive tracer'
49          WRITE(numout,*) ' the present run :'
50          WRITE(numout,*) '   number job is  : ',no
51          WRITE(numout,*) '   with the time nit000 : ',nit000
52          IF(iarak0.eq.1) then
53              WRITE(numout,*) '   and before fields for Arakawa sheme '
54          ENDIF
55          WRITE(numout,*) ' '
56      ENDIF
57
58      ! 1. READ
59      ! -------
60
61      ! 1.1 first record
62
63      READ(inum,REC=1) ino1,it1,iarak1
64
65      IF(lwp) THEN
66          WRITE(numout,*) ' '
67          WRITE(numout,*) ' READ nutrst with '
68          WRITE(numout,*) '   number job is  : ',ino1
69          WRITE(numout,*) '   with the time it : ',it1
70          IF(iarak1.eq.1) then
71              WRITE(numout,*) '   and before fields for Arakawa sheme '
72          ENDIF
73          WRITE(numout,*) ' '
74      ENDIF
75
76      ! 1.2 control of date
77
78      IF((it0-it1) /= 1 .AND. ABS(nrsttr) == 1) THEN
79          IF(lwp) THEN
80              WRITE(numout,*) ' ===>>>> : problem with nit000 for the',   &
81                 ' passive tracer restart'
82              WRITE(numout,*) ' =======                              ',   &
83                 ' ======================'
84              WRITE(numout,*) ' we stop. verify the FILE'
85              WRITE(numout,*) ' or rerun with the value  0 for the'
86              WRITE(numout,*) ' control of time PARAMETER   nrstdt'
87              WRITE(numout,*) ' '
88          ENDIF
89          STOP 'trc_rst'
90      ENDIF
91
92      ! 1.3 Control of the sheme
93
94      IF (iarak0 /= iarak1) THEN
95          IF(lwp) THEN
96              WRITE(numout,*) ' ===>>>> : problem with the',    &
97                 ' passive tracer restart file'
98              WRITE(numout,*) ' =======                              ',   &
99                 ' ==========================='
100              WRITE(numout,*) ' we stop. verify the FILE'
101              WRITE(numout,*) ' before field required IF 1=',iarak0
102              WRITE(numout,*) ' before field present in file IF 1=',    &
103                 iarak1
104              WRITE(numout,*) ' '
105          ENDIF
106          STOP 'trc_rst'
107      ENDIF
108
109
110      ! 1.4 READ prognostic variables
111
112      DO jn=1,jptra
113        CALL read3(inum,trn(1,1,1,jn), jn + 1 )
114      END DO
115
116      DO jn=1,jptra
117        CALL read3(inum,trb(1,1,1,jn), jptra + jn + 1 )
118      END DO
119
120#if defined key_trc_hamocc3
121      CALL read2(inum,sedcal(:,:),jpk,2*jptra+2)
122      CALL read2(inum,sedsil(:,:),jpk,2*jptra+3)
123      CALL read2(inum,sedpoc(:,:),jpk,2*jptra+4)
124#elif defined key_trc_npzd || defined key_trc_lobster1
125      CALL read2(inum,sedpoc(:,:),jpk,2*jptra+2)
126#elif defined key_trc_pisces
127
128      CALL read2(inum,xksi(:,:),jpk,2*jptra+2)
129      xksimax(:,:)=xksi(:,:)
130
131      CALL read2(inum,sedcal(:,:),jpk,2*jptra+3)
132      CALL read2(inum,sedsil(:,:),jpk,2*jptra+4)
133      CALL read2(inum,sedpoc(:,:),jpk,2*jptra+5)
134#endif
135
136#if defined key_trc_hamocc3 || defined key_trc_pisces
137
138
139    !!  Initialization of chemical variables of the carbon cycle
140    !!  --------------------------------------------------------
141
142        DO jk = 1,jpk
143          DO jj = 1,jpj
144            DO ji = 1,jpi
145              caralk = trn(ji,jj,jk,jptal)-       &
146              &        borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk)))
147              co3(ji,jj,jk)=(caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk)   &
148              &        +(1.-tmask(ji,jj,jk))*.5e-3
149              bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk)
150              hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk))     &
151              &  *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9
152              h2co3(ji,jj) = 1.e-5
153            ENDDO
154          ENDDO
155        ENDDO
156#endif
157
158      CLOSE( inum )
159
160   END SUBROUTINE trc_rst
161
162SUBROUTINE trc_wri(kt)
163   !! ==================================================================================
164   !!
165   !!                       ROUTINE trc_wri
166   !!                     ******************
167   !!
168   !!========================================================================================!
169     !! * Arguments
170      !! -----------
171      INTEGER, INTENT( in ) :: kt
172
173      !! * Local declarations
174      INTEGER :: jn
175      INTEGER :: ino0,it0,iarak0
176
177      IF( kt == nit000 ) THEN
178         IF(lwp) WRITE(numout,*)
179         IF(lwp) WRITE(numout,*) 'trc_wri : write restart.trc.output direct access file'
180         IF(lwp) WRITE(numout,*) '~~~~~~~~~'
181         ibloc = 4096
182         ilglo = ibloc*((jpiglo*jpjglo*jpbyt-1 )/ibloc+1)
183         CALL ctlopn( nutwrs,'restart.trc.output', 'UNKNOWN','UNFORMATTED','DIRECT', ilglo, numout, lwp, 1 )
184      ENDIF
185
186      IF( MOD( kt, nstock ) == 0 .OR. kt == nitend ) THEN
187
188         ! 0. Initializations
189         ! ------------------
190
191          IF(lwp) THEN
192              WRITE(numout,*) ' '
193              WRITE(numout,*)       &
194              &  ' trcwri: restart OUTPUT done in nutwrs = ',nutwrs    &
195              &  ,' at it= ',kt,' date= ',ndastp
196              WRITE(numout,*) ' -------'
197          ENDIF
198
199          ino0 =no
200          it0  =kt
201
202#if defined key_trc_cen2
203          iarak0=1
204#else
205          iarak0=0
206#endif
207
208         ! 1. Write in nutwrs
209         ! ------------------
210
211         IF(lwp) WRITE(nutwrs,REC=1)   &                 ! first record
212            ino0, it0, iarak0
213
214          DO jn=1,jptra
215            CALL write3(nutwrs,trn(1,1,1,jn), jn + 1 )
216          END DO
217
218          DO jn=1,jptra
219            CALL write3(nutwrs,trb(1,1,1,jn), jptra + jn + 1 )
220          END DO
221
222#if defined key_trc_hamocc3
223             CALL write2(nutwrs,sedcal,jpk,2*jptra+2)
224             CALL write2(nutwrs,sedsil,jpk,2*jptra+3)
225             CALL write2(nutwrs,sedpoc,jpk,2*jptra+4)
226#elif defined key_trc_npzd || defined key_trc_lobster1
227             CALL write2(nutwrs,sedpoc,jpk,2*jptra+2)
228#elif defined key_trc_pisces
229             CALL write2(nutwrs,xksi,jpk,2*jptra+2)
230
231             CALL write2(nutwrs,sedcal,jpk,2*jptra+3)
232             CALL write2(nutwrs,sedsil,jpk,2*jptra+4)
233             CALL write2(nutwrs,sedpoc,jpk,2*jptra+5)
234#endif
235      ENDIF
236
237   END SUBROUTINE trc_wri
Note: See TracBrowser for help on using the repository browser.