source: branches/dev_001_GM/NEMO/TOP_SRC/trcdtr.F90 @ 772

Last change on this file since 772 was 772, checked in by gm, 13 years ago

dev_001_GM - change the name of cpp key to key_top, key_lobster, key_pisces, key_kriest and the corresponding lk_

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.3 KB
Line 
1MODULE trcdtr
2   !!======================================================================
3   !!                         ***  MODULE trcdtr  ***
4   !! TOP :   computes or READ initial DATA for passive tracer
5   !!======================================================================
6   !! History :    -   !  1996-11  ()  original code
7   !!                  !  2000-12  (O. Aumont, E. Kestenare) add for POC in sediments
8   !!             1.0  !  2005-12  (O. Aumont, A. El Moussaoui) F90
9   !!----------------------------------------------------------------------
10#if defined key_top
11   !!----------------------------------------------------------------------
12   !!   'key_top'                                                TOP models
13   !!----------------------------------------------------------------------
14   !!   trc_dtr    :  computes or READ initial DATA for passive tracer
15   !!----------------------------------------------------------------------
16   USE oce_trc
17   USE trc
18   USE sms
19   USE trcdta
20   USE lib_mpp
21
22   IMPLICIT NONE
23   PRIVATE
24
25   PUBLIC trc_dtr      ! called in ???
26
27   !!----------------------------------------------------------------------
28   !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005)
29   !! $Header:$
30   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
31   !!----------------------------------------------------------------------
32
33CONTAINS
34
35   SUBROUTINE trc_dtr
36      !!---------------------------------------------------------------------
37      !!                     ***  ROUTINE trc_dtr  ***
38      !!
39      !! ** Purpose :   computes or READ initial DATA for passive tracer
40      !!
41      !! ** Method  :
42      !!---------------------------------------------------------------------
43      INTEGER :: ji,jj,jk,jn 
44#if defined key_pisces
45      REAL(wp) ::   alka0, oxyg0, calc0, bioma0
46      REAL(wp) ::   silic1, po4, no3, caralk, bicarb, co3
47#endif
48      !!---------------------------------------------------------------------
49
50      IF(lwp) WRITE(numout,*)
51      IF(lwp) WRITE(numout,*) 'trc_dtr : initialisation of the passive tracers'
52      IF(lwp) WRITE(numout,*) '~~~~~~~'
53
54#if defined key_cfc
55      ! CFC initialisation
56      trn(:,:,:,:) = 0.e0
57     
58#elif defined key_pisces
59      ! PISCES initialisation
60      ! ---------------------
61      sco2   =  2.300e-3
62      alka0  =  2.390e-3
63      oxyg0  =  1.800e-4
64      po4    =  2.165e-6 / po4r
65      bioma0 =  1.000e-8
66      silic1 = 91.510e-6
67      calc0  =  1.000e-6
68      no3    = 30.880e-6 * 7.6
69
70      trn(:,:,:,jpdic) = sco2
71      trn(:,:,:,jpdoc) = bioma0
72      trn(:,:,:,jptal) = alka0
73      trn(:,:,:,jpoxy) = oxyg0
74      trn(:,:,:,jpcal) = calc0
75      trn(:,:,:,jppo4) = po4
76      trn(:,:,:,jppoc) = bioma0
77#if ! defined key_kriest
78      trn(:,:,:,jpgoc) = bioma0
79      trn(:,:,:,jpbfe) = bioma0 * 5.e-6
80#else
81      trn(:,:,:,jpnum) = bioma0 / ( 6. *xkr_massp )
82#endif
83      trn(:,:,:,jpsil) = silic1
84      trn(:,:,:,jpbsi) = bioma0 * 0.15
85      trn(:,:,:,jpdsi) = bioma0 * 5.e-6
86      trn(:,:,:,jpphy) = bioma0
87      trn(:,:,:,jpdia) = bioma0
88      trn(:,:,:,jpzoo) = bioma0
89      trn(:,:,:,jpmes) = bioma0
90      trn(:,:,:,jpfer) = 0.6E-9
91      trn(:,:,:,jpsfe) = bioma0 * 5.e-6
92      trn(:,:,:,jpdfe) = bioma0 * 5.e-6
93      trn(:,:,:,jpnfe) = bioma0 * 5.e-6
94      trn(:,:,:,jpnch) = bioma0 * 12. / 55.
95      trn(:,:,:,jpdch) = bioma0 * 12. / 55.
96      trn(:,:,:,jpno3) = no3
97      trn(:,:,:,jpnh4) = bioma0
98
99      ! Initialization of chemical variables of the carbon cycle
100      ! --------------------------------------------------------
101      DO jk = 1, jpk
102         DO jj = 1, jpj
103            DO ji = 1, jpi
104               caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / (  1. + 1.E-8 / ( rtrn + akb3(ji,jj,jk) )  )
105               co3    = ( caralk - trn(ji,jj,jk,jpdic) ) *        tmask(ji,jj,jk)   &
106                  &   +                  0.5e-3          * ( 1. - tmask(ji,jj,jk) )
107               bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk)
108               hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) *        tmask(ji,jj,jk)   & 
109                  &         +            1.e-9                  * ( 1. - tmask(ji,jj,jk) )
110          END DO
111        END DO
112      END DO
113
114      ! initialize the half saturation constant for silicate
115      ! ----------------------------------------------------
116      xksi(:,:) = 2.e-6
117
118      IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done'
119      IF(lwp) WRITE(numout,*) ' '
120
121#elif defined key_lobster && ( defined key_eel_r6 || defined key_eel_r2 )
122      ! LOBSTER initialisation for EEL
123      ! ----------------------
124      ! here: analytical initialisation used in Levy et al. (2001)
125     
126      DO jk = 1, 7
127         trn(:,:,jk,jpdet) = 0.016 * tmask(:,:,jk)
128         trn(:,:,jk,jpzoo) = 0.018 * tmask(:,:,jk)
129         trn(:,:,jk,jpphy) = 0.036 * tmask(:,:,jk)
130         trn(:,:,jk,jpno3) = 1.e-5 * tmask(:,:,jk)
131         trn(:,:,jk,jpnh4) = 5.e-4 * tmask(:,:,jk)
132         trn(:,:,jk,jpdom) = 0.017 * tmask(:,:,jk)
133      END DO
134
135      trn(:,:, 8,jpdet) = 0.020   * tmask(:,:, 8)
136      trn(:,:, 8,jpzoo) = 0.027   * tmask(:,:, 8)
137      trn(:,:, 8,jpphy) = 0.041   * tmask(:,:, 8)
138      trn(:,:, 8,jpno3) = 0.00022 * tmask(:,:, 8)
139      trn(:,:, 8,jpnh4) = 0.0033  * tmask(:,:, 8)
140      trn(:,:, 8,jpdom) = 0.021   * tmask(:,:, 8)
141
142      trn(:,:, 9,jpdet) = 0.0556  * tmask(:,:, 9)
143      trn(:,:, 9,jpzoo) = 0.123   * tmask(:,:, 9)
144      trn(:,:, 9,jpphy) = 0.122   * tmask(:,:, 9)
145      trn(:,:, 9,jpno3) = 0.028   * tmask(:,:, 9)
146      trn(:,:, 9,jpnh4) = 0.024   * tmask(:,:, 9)
147      trn(:,:, 9,jpdom) = 0.06    * tmask(:,:, 9)
148
149      trn(:,:,10,jpdet) = 0.025   * tmask(:,:,10)
150      trn(:,:,10,jpzoo) = 0.016   * tmask(:,:,10)
151      trn(:,:,10,jpphy) = 0.029   * tmask(:,:,10)
152      trn(:,:,10,jpno3) = 2.462   * tmask(:,:,10)
153      trn(:,:,10,jpnh4) = 0.04    * tmask(:,:,10)
154      trn(:,:,10,jpdom) = 0.022   * tmask(:,:,10)
155
156      trn(:,:,11,jpdet) = 0.0057  * tmask(:,:,11)
157      trn(:,:,11,jpzoo) = 0.0005  * tmask(:,:,11)
158      trn(:,:,11,jpphy) = 0.0006  * tmask(:,:,11)
159      trn(:,:,11,jpno3) = 3.336   * tmask(:,:,11)
160      trn(:,:,11,jpnh4) = 0.005   * tmask(:,:,11)
161      trn(:,:,11,jpdom) = 0.004   * tmask(:,:,11)
162
163      trn(:,:,12,jpdet) = 0.002   * tmask(:,:,12)
164      trn(:,:,12,jpzoo) = 1.e-6   * tmask(:,:,12)
165      trn(:,:,12,jpphy) = 5.e-6   * tmask(:,:,12)
166      trn(:,:,12,jpno3) = 4.24    * tmask(:,:,12)
167      trn(:,:,12,jpnh4) = 0.001   * tmask(:,:,12)
168      trn(:,:,12,jpdom) = 3.e-5   * tmask(:,:,12)
169
170      DO jk=13,jpk
171        trn(:,:,jk,jpdet) = 0.e0
172        trn(:,:,jk,jpzoo) = 0.e0
173        trn(:,:,jk,jpphy) = 0.e0
174        trn(:,:,jk,jpnh4) = 0.e0
175        trn(:,:,jk,jpdom) = 0.e0
176      END DO
177
178      trn(:,:,13,jpno3) = 5.31  * tmask(:,:,13)
179      trn(:,:,14,jpno3) = 6.73  * tmask(:,:,14)
180      trn(:,:,15,jpno3) = 8.32  * tmask(:,:,15)
181      trn(:,:,16,jpno3) = 10.13 * tmask(:,:,16)
182      trn(:,:,17,jpno3) = 11.95 * tmask(:,:,17)
183      trn(:,:,18,jpno3) = 13.57 * tmask(:,:,18)
184      trn(:,:,19,jpno3) = 15.08 * tmask(:,:,19)
185      trn(:,:,20,jpno3) = 16.41 * tmask(:,:,20)
186      trn(:,:,21,jpno3) = 17.47 * tmask(:,:,21)
187      trn(:,:,22,jpno3) = 18.29 * tmask(:,:,22)
188      trn(:,:,23,jpno3) = 18.88 * tmask(:,:,23)
189      trn(:,:,24,jpno3) = 19.30 * tmask(:,:,24)
190      trn(:,:,25,jpno3) = 19.68 * tmask(:,:,25)
191      trn(:,:,26,jpno3) = 19.91 * tmask(:,:,26)
192      trn(:,:,27,jpno3) = 19.99 * tmask(:,:,27)
193      trn(:,:,28,jpno3) = 20.01 * tmask(:,:,28)
194      trn(:,:,29,jpno3) = 20.01 * tmask(:,:,29)
195      trn(:,:,30,jpno3) = 20.01 * tmask(:,:,30)
196
197#elif defined key_lobster && defined key_gyre
198      ! LOBSTER initialisation for GYRE
199      ! ----------------------
200      ! here:  init NO3=f(density) by asklod AS Kremeur 2005-07
201      trn(:,:,:,jpdet) = 0.1 * tmask(:,:,:)
202      trn(:,:,:,jpzoo) = 0.1 * tmask(:,:,:)
203      trn(:,:,:,jpnh4) = 0.1 * tmask(:,:,:)
204      trn(:,:,:,jpphy) = 0.1 * tmask(:,:,:)
205      trn(:,:,:,jpdom) = 1.0 * tmask(:,:,:)
206      DO jk = 1, jpk
207         DO jj = 1, jpj
208            DO ji = 1, jpi
209               IF( rhd(ji,jj,jk) <= 24.5e-3 ) THEN
210                  trn(ji,jj,jk,jpno3) = 2. * tmask(ji,jj,jk)
211               ELSE
212                  trn(ji,jj,jk,jpno3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk)
213               ENDIF
214            END DO
215         END DO
216      END DO
217
218#else
219      ! Default case
220      ! ------------
221      DO jn = 1, jptra
222         trn(:,:,:,jn) = 0.1 * tmask(:,:,:)
223      END DO
224
225#endif
226
227#if defined key_dtatrc
228     ! Initialization of tracer from a file that may also be used for damping
229      CALL dta_trc( nittrc000 )
230      DO jn = 1, jptra
231        IF( lutini(jn) )   trn(:,:,:,jk) = trdta(:,:,:,jn) * tmask(:,:,:)   ! initialisation from file if required
232      END DO
233#endif
234
235      ! before field :
236      ! -------------
237      trb(:,:,:,:) = trn(:,:,:,:)
238
239#if defined key_lobster
240      !  initialize the POC in sediments
241      sedpocb(:,:) = 0.e0
242      sedpocn(:,:) = 0.e0
243      sedpoca(:,:) = 0.e0
244#endif
245      !
246   END SUBROUTINE trc_dtr 
247
248#else
249   !!----------------------------------------------------------------------
250   !!  Dummy module :                                     No passive tracer
251   !!----------------------------------------------------------------------
252CONTAINS
253   SUBROUTINE trc_dtr                      ! Empty routine   
254   END SUBROUTINE trc_dtr
255#endif
256
257   !!======================================================================
258END MODULE trcdtr
Note: See TracBrowser for help on using the repository browser.