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.
trcdtr.F90 in branches/dev_003_CPL/NEMO/TOP_SRC – NEMO

source: branches/dev_003_CPL/NEMO/TOP_SRC/trcdtr.F90 @ 990

Last change on this file since 990 was 990, checked in by smasson, 16 years ago

dev_003_CPL: to the trunk , see ticket #155

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