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.
trcini_lobster.F90 in tags/nemo_v3_2/nemo_v3_2/NEMO/TOP_SRC/LOBSTER – NEMO

source: tags/nemo_v3_2/nemo_v3_2/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90 @ 1878

Last change on this file since 1878 was 1878, checked in by flavoni, 14 years ago

initial test for nemogcm

File size: 10.2 KB
Line 
1MODULE trcini_lobster
2   !!======================================================================
3   !!                         ***  MODULE trcini_lobster  ***
4   !! TOP :   initialisation of the LOBSTER biological model
5   !!======================================================================
6   !! History :    -   !  1999-09  (M. Levy) Original code
7   !!              -   !  2000-12  (0. Aumont, E. Kestenare) add sediment
8   !!             1.0  !  2004-03  (C. Ethe) Modularity
9   !!              -   !  2005-03  (O. Aumont, A. El Moussaoui) F90
10   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) from trcini.lobster1.h90
11   !!----------------------------------------------------------------------
12#if defined key_lobster
13   !!----------------------------------------------------------------------
14   !!   'key_lobster'                                     LOBSTER bio-model
15   !!----------------------------------------------------------------------
16   !! trc_ini_lobster  : LOBSTER model initialisation
17   !!----------------------------------------------------------------------
18   USE par_trc         ! TOP parameters
19   USE sms_lobster     ! Source Minus Sink variables
20   USE oce_trc         ! ocean variables
21   USE trc
22
23   IMPLICIT NONE
24   PRIVATE
25
26   PUBLIC   trc_ini_lobster   ! called by trcini.F90 module
27
28#  include "domzgr_substitute.h90"
29#  include "top_substitute.h90"
30   !!----------------------------------------------------------------------
31   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
32   !! $Id: trcini_lobster.F90 1542 2009-07-27 11:57:49Z cetlod $
33   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
34   !!----------------------------------------------------------------------
35
36CONTAINS
37
38   SUBROUTINE trc_ini_lobster
39      !!----------------------------------------------------------------------
40      !!                    ***  ROUTINE trc_ini_lobster  ***
41      !! ** purpose :   specific initialisation for LOBSTER bio-model
42      !!----------------------------------------------------------------------
43      INTEGER  ::   ji, jj, jk, jn
44      REAL(wp) ::   ztest, zfluo, zfluu
45      REAL(wp), DIMENSION(jpi,jpj)     ::   zrro
46      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdm0
47      !!----------------------------------------------------------------------
48
49      IF(lwp) WRITE(numout,*)
50      IF(lwp) WRITE(numout,*) ' trc_ini_lobster :   LOBSTER biochemical model initialisation'
51      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~'
52
53
54      ! initialization of fields for optical model
55      ! --------------------------------------------
56      xze (:,:)   = 5.e0
57      xpar(:,:,:) = 0.e0
58
59      ! initialization for passive tracer remineralisation-damping  array
60      ! -----------------------------------------------------------------
61
62      DO jn = jp_lob0, jp_lob1
63         remdmp(:,jn) = tminr
64      END DO
65
66      IF(lwp) THEN
67         WRITE(numout,*) ' '
68         WRITE(numout,*) ' trcini: compute remineralisation-damping  '
69         WRITE(numout,*) '         arrays for tracers'
70      ENDIF
71
72      ! initialization of biological variables
73      ! ------------------------------------------
74
75      ! Calculate vertical distribution of newly formed biogenic poc
76      ! in the water column in the case of max. possible bottom depth
77      ! ------------------------------------------------------------
78
79      zdm0   = 0.e0
80      zrro = 1.e0
81      DO jk = jpkb,jpkm1
82         DO jj =1, jpj
83            DO ji =1, jpi
84               zfluo = ( fsdepw(ji,jj,jk  ) / fsdepw(ji,jj,jpkb) )**xhr 
85               zfluu = ( fsdepw(ji,jj,jk+1) / fsdepw(ji,jj,jpkb) )**xhr
86               IF( zfluo.GT.1. )   zfluo = 1.e0
87               zdm0(ji,jj,jk) = zfluo - zfluu
88               IF( jk <= jpkb-1 )   zdm0(ji,jj,jk) = 0.e0
89               zrro(ji,jj) = zrro(ji,jj) - zdm0(ji,jj,jk)
90            END DO
91         END DO
92      END DO
93
94      zdm0(:,:,jpk) = zrro(:,:)
95
96      ! Calculate vertical distribution of newly formed biogenic poc
97      ! in the water column with realistic topography (first "dry" layer
98      ! contains total fraction, which has passed to the upper layers)
99      ! ----------------------------------------------------------------------
100      dminl = 0.
101      dmin3 = zdm0
102      DO jk = 1, jpk
103         DO jj = 1, jpj
104            DO ji = 1, jpi
105               IF( tmask(ji,jj,jk) == 0. ) THEN
106                  dminl(ji,jj) = dminl(ji,jj) + dmin3(ji,jj,jk)
107                  dmin3(ji,jj,jk) = 0.e0
108               ENDIF
109            END DO
110         END DO
111      END DO
112
113      DO jj = 1, jpj
114         DO ji = 1, jpi
115            IF( tmask(ji,jj,1) == 0 )   dmin3(ji,jj,1) = 0.e0
116         END DO
117      END DO
118
119      ! Coastal mask
120      ! ------------   
121      cmask = 0.e0
122      DO ji = 2, jpi-1
123         DO jj = 2, jpj-1
124            if (tmask(ji,jj,1) == 1) then
125               ztest=tmask(ji+1,jj,1)*tmask(ji-1,jj,1)*tmask(ji,jj+1,1)*tmask(ji,jj-1,1)
126               IF (ztest == 0) cmask(ji,jj) = 1.
127            endif
128         END DO
129      END DO
130
131      cmask( 1 ,:) = cmask(jpi-1,:)
132      cmask(jpi,:) = cmask( 2   ,:)
133
134      !!gm BUG !!!!!   not valid in mpp and also not valid for north fold   !!!!!
135
136      ! Coastal surface
137      ! ---------------
138      areacot = 0.e0
139      DO ji = 2, jpi-1
140         DO jj = 2, jpj-1
141            areacot = areacot + e1t(ji,jj) * e2t(ji,jj) * cmask(ji,jj)
142         END DO
143      END DO
144      !
145
146      ! Initialization of tracer concentration in case of  no restart
147      !-------------------------------------------------------------
148      IF( .NOT. ln_rsttr ) THEN   
149
150# if defined key_eel_r6 || defined key_eel_r2
151         ! LOBSTER initialisation for EEL
152         ! ----------------------
153         ! here: analytical initialisation used in Levy et al. (2001)
154         
155         DO jk = 1, 7
156            trn(:,:,jk,jpdet) = 0.016 * tmask(:,:,jk)
157            trn(:,:,jk,jpzoo) = 0.018 * tmask(:,:,jk)
158            trn(:,:,jk,jpphy) = 0.036 * tmask(:,:,jk) 
159            trn(:,:,jk,jpno3) = 1.e-5 * tmask(:,:,jk)
160            trn(:,:,jk,jpnh4) = 5.e-4 * tmask(:,:,jk)
161            trn(:,:,jk,jpdom) = 0.017 * tmask(:,:,jk)
162         END DO
163         
164         trn(:,:, 8,jpdet) = 0.020   * tmask(:,:, 8)
165         trn(:,:, 8,jpzoo) = 0.027   * tmask(:,:, 8)
166         trn(:,:, 8,jpphy) = 0.041   * tmask(:,:, 8)
167         trn(:,:, 8,jpno3) = 0.00022 * tmask(:,:, 8)
168         trn(:,:, 8,jpnh4) = 0.0033  * tmask(:,:, 8)
169         trn(:,:, 8,jpdom) = 0.021   * tmask(:,:, 8)
170         
171         trn(:,:, 9,jpdet) = 0.0556  * tmask(:,:, 9)
172         trn(:,:, 9,jpzoo) = 0.123   * tmask(:,:, 9)
173         trn(:,:, 9,jpphy) = 0.122   * tmask(:,:, 9)
174         trn(:,:, 9,jpno3) = 0.028   * tmask(:,:, 9)
175         trn(:,:, 9,jpnh4) = 0.024   * tmask(:,:, 9)
176         trn(:,:, 9,jpdom) = 0.06    * tmask(:,:, 9)
177         
178         trn(:,:,10,jpdet) = 0.025   * tmask(:,:,10)
179         trn(:,:,10,jpzoo) = 0.016   * tmask(:,:,10)
180         trn(:,:,10,jpphy) = 0.029   * tmask(:,:,10)
181         trn(:,:,10,jpno3) = 2.462   * tmask(:,:,10)
182         trn(:,:,10,jpnh4) = 0.04    * tmask(:,:,10)
183         trn(:,:,10,jpdom) = 0.022   * tmask(:,:,10)
184         
185         trn(:,:,11,jpdet) = 0.0057  * tmask(:,:,11)
186         trn(:,:,11,jpzoo) = 0.0005  * tmask(:,:,11)
187         trn(:,:,11,jpphy) = 0.0006  * tmask(:,:,11)
188         trn(:,:,11,jpno3) = 3.336   * tmask(:,:,11)
189         trn(:,:,11,jpnh4) = 0.005   * tmask(:,:,11)
190         trn(:,:,11,jpdom) = 0.004   * tmask(:,:,11)
191         
192         trn(:,:,12,jpdet) = 0.002   * tmask(:,:,12)
193         trn(:,:,12,jpzoo) = 1.e-6   * tmask(:,:,12)
194         trn(:,:,12,jpphy) = 5.e-6   * tmask(:,:,12)
195         trn(:,:,12,jpno3) = 4.24    * tmask(:,:,12)
196         trn(:,:,12,jpnh4) = 0.001   * tmask(:,:,12)
197         trn(:,:,12,jpdom) = 3.e-5   * tmask(:,:,12)
198         
199         DO jk=13,jpk
200            trn(:,:,jk,jpdet) = 0.e0
201            trn(:,:,jk,jpzoo) = 0.e0
202            trn(:,:,jk,jpphy) = 0.e0
203            trn(:,:,jk,jpnh4) = 0.e0
204            trn(:,:,jk,jpdom) = 0.e0
205         END DO
206         
207         trn(:,:,13,jpno3) = 5.31  * tmask(:,:,13)
208         trn(:,:,14,jpno3) = 6.73  * tmask(:,:,14)
209         trn(:,:,15,jpno3) = 8.32  * tmask(:,:,15)
210         trn(:,:,16,jpno3) = 10.13 * tmask(:,:,16)
211         trn(:,:,17,jpno3) = 11.95 * tmask(:,:,17)
212         trn(:,:,18,jpno3) = 13.57 * tmask(:,:,18)
213         trn(:,:,19,jpno3) = 15.08 * tmask(:,:,19)
214         trn(:,:,20,jpno3) = 16.41 * tmask(:,:,20)
215         trn(:,:,21,jpno3) = 17.47 * tmask(:,:,21)
216         trn(:,:,22,jpno3) = 18.29 * tmask(:,:,22)
217         trn(:,:,23,jpno3) = 18.88 * tmask(:,:,23)
218         trn(:,:,24,jpno3) = 19.30 * tmask(:,:,24)
219         trn(:,:,25,jpno3) = 19.68 * tmask(:,:,25)
220         trn(:,:,26,jpno3) = 19.91 * tmask(:,:,26)
221         trn(:,:,27,jpno3) = 19.99 * tmask(:,:,27)
222         trn(:,:,28,jpno3) = 20.01 * tmask(:,:,28)
223         trn(:,:,29,jpno3) = 20.01 * tmask(:,:,29)
224         trn(:,:,30,jpno3) = 20.01 * tmask(:,:,30)
225
226# elif defined key_gyre
227         ! LOBSTER initialisation for GYRE
228         ! ----------------------
229         ! here:  init NO3=f(density) by asklod AS Kremeur 2005-07
230         trn(:,:,:,jpdet) = 0.1 * tmask(:,:,:)
231         trn(:,:,:,jpzoo) = 0.1 * tmask(:,:,:)
232         trn(:,:,:,jpnh4) = 0.1 * tmask(:,:,:)
233         trn(:,:,:,jpphy) = 0.1 * tmask(:,:,:)
234         trn(:,:,:,jpdom) = 1.0 * tmask(:,:,:)
235         DO jk = 1, jpk
236            DO jj = 1, jpj
237               DO ji = 1, jpi
238                  IF( rhd(ji,jj,jk) <= 24.5e-3 ) THEN
239                     trn(ji,jj,jk,jpno3) = 2. * tmask(ji,jj,jk)
240                  ELSE
241                     trn(ji,jj,jk,jpno3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk)
242                  ENDIF
243               END DO
244            END DO
245         END DO
246#endif
247
248      ENDIF
249
250      !  initialize the POC in sediments
251      sedpocb(:,:) = 0.e0
252      sedpocn(:,:) = 0.e0
253      sedpoca(:,:) = 0.e0
254
255
256      IF(lwp) WRITE(numout,*) 'Initialization of LOBSTER tracers done'
257      IF(lwp) WRITE(numout,*) ' '
258
259
260   END SUBROUTINE trc_ini_lobster
261
262#else
263   !!----------------------------------------------------------------------
264   !!   Dummy module                                   No LOBSTER bio-model
265   !!----------------------------------------------------------------------
266CONTAINS
267   SUBROUTINE trc_ini_lobster             ! Empty routine
268   END SUBROUTINE trc_ini_lobster
269#endif
270
271   !!======================================================================
272END MODULE trcini_lobster
Note: See TracBrowser for help on using the repository browser.