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_001_GM/NEMO/TOP_SRC – NEMO

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

Last change on this file since 772 was 772, checked in by gm, 16 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
RevLine 
[268]1MODULE trcdtr
[763]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
[274]9   !!----------------------------------------------------------------------
[772]10#if defined key_top
[763]11   !!----------------------------------------------------------------------
[772]12   !!   'key_top'                                                TOP models
[763]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
[268]21
[763]22   IMPLICIT NONE
23   PRIVATE
[268]24
[763]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
[268]33CONTAINS
34
[763]35   SUBROUTINE trc_dtr
36      !!---------------------------------------------------------------------
37      !!                     ***  ROUTINE trc_dtr  ***
38      !!
39      !! ** Purpose :   computes or READ initial DATA for passive tracer
40      !!
41      !! ** Method  :
42      !!---------------------------------------------------------------------
[268]43      INTEGER :: ji,jj,jk,jn 
[772]44#if defined key_pisces
[763]45      REAL(wp) ::   alka0, oxyg0, calc0, bioma0
46      REAL(wp) ::   silic1, po4, no3, caralk, bicarb, co3
[335]47#endif
[763]48      !!---------------------------------------------------------------------
[268]49
[763]50      IF(lwp) WRITE(numout,*)
51      IF(lwp) WRITE(numout,*) 'trc_dtr : initialisation of the passive tracers'
52      IF(lwp) WRITE(numout,*) '~~~~~~~'
[268]53
[335]54#if defined key_cfc
[763]55      ! CFC initialisation
56      trn(:,:,:,:) = 0.e0
57     
[772]58#elif defined key_pisces
[763]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
[335]69
[268]70      trn(:,:,:,jpdic) = sco2
[617]71      trn(:,:,:,jpdoc) = bioma0
[268]72      trn(:,:,:,jptal) = alka0
73      trn(:,:,:,jpoxy) = oxyg0
[617]74      trn(:,:,:,jpcal) = calc0
[268]75      trn(:,:,:,jppo4) = po4
76      trn(:,:,:,jppoc) = bioma0
[772]77#if ! defined key_kriest
[617]78      trn(:,:,:,jpgoc) = bioma0
[763]79      trn(:,:,:,jpbfe) = bioma0 * 5.e-6
[617]80#else
[763]81      trn(:,:,:,jpnum) = bioma0 / ( 6. *xkr_massp )
[617]82#endif
[268]83      trn(:,:,:,jpsil) = silic1
[763]84      trn(:,:,:,jpbsi) = bioma0 * 0.15
85      trn(:,:,:,jpdsi) = bioma0 * 5.e-6
[268]86      trn(:,:,:,jpphy) = bioma0
[617]87      trn(:,:,:,jpdia) = bioma0
[268]88      trn(:,:,:,jpzoo) = bioma0
[335]89      trn(:,:,:,jpmes) = bioma0
90      trn(:,:,:,jpfer) = 0.6E-9
[763]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.
[617]96      trn(:,:,:,jpno3) = no3
[335]97      trn(:,:,:,jpnh4) = bioma0
[268]98
[763]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
[617]113
[763]114      ! initialize the half saturation constant for silicate
115      ! ----------------------------------------------------
116      xksi(:,:) = 2.e-6
[335]117
118      IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done'
119      IF(lwp) WRITE(numout,*) ' '
[268]120
[772]121#elif defined key_lobster && ( defined key_eel_r6 || defined key_eel_r2 )
[763]122      ! LOBSTER initialisation for EEL
123      ! ----------------------
124      ! here: analytical initialisation used in Levy et al. (2001)
[268]125     
[763]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)
[268]133      END DO
134
[763]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)
[268]141
[763]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)
[268]148
[763]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)
[268]155
[763]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)
[268]162
[763]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)
[268]169
170      DO jk=13,jpk
[763]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
[268]176      END DO
177
[763]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)
[268]196
[772]197#elif defined key_lobster && defined key_gyre
[763]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)
[335]211               ELSE
[763]212                  trn(ji,jj,jk,jpno3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk)
[335]213               ENDIF
214            END DO
215         END DO
216      END DO
[268]217
218#else
[763]219      ! Default case
220      ! ------------
221      DO jn = 1, jptra
222         trn(:,:,:,jn) = 0.1 * tmask(:,:,:)
223      END DO
[268]224
225#endif
226
[493]227#if defined key_dtatrc
[763]228     ! Initialization of tracer from a file that may also be used for damping
[493]229      CALL dta_trc( nittrc000 )
[763]230      DO jn = 1, jptra
231        IF( lutini(jn) )   trn(:,:,:,jk) = trdta(:,:,:,jn) * tmask(:,:,:)   ! initialisation from file if required
[268]232      END DO
233#endif
234
[763]235      ! before field :
236      ! -------------
[268]237      trb(:,:,:,:) = trn(:,:,:,:)
238
[772]239#if defined key_lobster
[763]240      !  initialize the POC in sediments
241      sedpocb(:,:) = 0.e0
242      sedpocn(:,:) = 0.e0
243      sedpoca(:,:) = 0.e0
[335]244#endif
[763]245      !
246   END SUBROUTINE trc_dtr 
[268]247
248#else
[763]249   !!----------------------------------------------------------------------
250   !!  Dummy module :                                     No passive tracer
251   !!----------------------------------------------------------------------
252CONTAINS
253   SUBROUTINE trc_dtr                      ! Empty routine   
254   END SUBROUTINE trc_dtr
[268]255#endif
256
[763]257   !!======================================================================
[268]258END MODULE trcdtr
Note: See TracBrowser for help on using the repository browser.