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 @ 773

Last change on this file since 773 was 773, checked in by gm, 16 years ago

dev_001_GM - small changes : compilation OK

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