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.
trcexp.F90 in trunk/NEMO/TOP_SRC/LOBSTER – NEMO

source: trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90 @ 1071

Last change on this file since 1071 was 1071, checked in by cetlod, 16 years ago

update LOBSTER model, see ticket:190

File size: 7.2 KB
Line 
1MODULE trcexp
2   !!======================================================================
3   !!                         ***  MODULE p4sed  ***
4   !! TOP :   PISCES Compute loss of organic matter in the sediments
5   !!======================================================================
6   !! History :    -   !  1999    (O. Aumont, C. Le Quere)  original code
7   !!              -   !  2001-05 (O. Aumont, E. Kestenare) add sediment computations
8   !!             1.0  !  2005-06 (A.-S. Kremeur) new temporal integration for sedpoc
9   !!             2.0  !  2007-12  (C. Deltel, G. Madec)  F90
10   !!----------------------------------------------------------------------
11#if defined key_lobster
12   !!----------------------------------------------------------------------
13   !!   'key_lobster'                                     LOBSTER bio-model
14   !!----------------------------------------------------------------------
15   !!   trc_exp        :  Compute loss of organic matter in the sediments
16   !!----------------------------------------------------------------------
17   USE oce_trc         !
18   USE trp_trc
19   USE sms_lobster
20   USE lbclnk
21   USE trc
22   USE trctrp_lec
23   USE prtctl_trc      ! Print control for debbuging
24
25   IMPLICIT NONE
26   PRIVATE
27
28   PUBLIC   trc_exp    ! called in p4zprg.F90
29
30   !!* Substitution
31#  include "domzgr_substitute.h90"
32   !!----------------------------------------------------------------------
33   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
34   !! $Id: trcexp.F90 777 2007-12-19 18:40:57Z gm $
35   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
36   !!----------------------------------------------------------------------
37
38CONTAINS
39
40   SUBROUTINE trc_exp( kt )
41      !!---------------------------------------------------------------------
42      !!                     ***  ROUTINE trc_exp  ***
43      !!
44      !! ** Purpose :   MODELS EXPORT OF BIOGENIC MATTER (POC ''SOFT
45      !!              TISSUE'') AND ITS DISTRIBUTION IN WATER COLUMN
46      !!
47      !! ** Method  : - IN THE SURFACE LAYER POC IS PRODUCED ACCORDING TO
48      !!              NURTRIENTS AVAILABLE AND GROWTH CONDITIONS. NUTRIENT UPTAKE
49      !!              KINETICS FOLLOW MICHAELIS-MENTON FORMULATION.
50      !!              THE TOTAL PARTICLE AMOUNT PRODUCED, IS DISTRIBUTED IN THE WATER
51      !!              COLUMN BELOW THE SURFACE LAYER.
52      !!---------------------------------------------------------------------
53      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index     
54      !!
55      INTEGER  ::   ji, jj, jk
56      REAL(wp) ::   zgeolpoc, zfact
57      INTEGER , DIMENSION(jpi,jpj) ::   ikbot
58      REAL(wp), DIMENSION(jpi,jpj) ::   zwork
59
60      CHARACTER (len=25) :: charout
61      !!---------------------------------------------------------------------
62
63      IF( kt == nit000 ) THEN
64         IF(lwp) WRITE(numout,*)
65         IF(lwp) WRITE(numout,*) ' trc_exp: LOBSTER export'
66         IF(lwp) WRITE(numout,*) ' ~~~~~~~'
67      ENDIF
68
69! VERTICAL DISTRIBUTION OF NEWLY PRODUCED BIOGENIC
70! POC IN THE WATER COLUMN
71! (PARTS OF NEWLY FORMED MATTER REMAINING IN THE DIFFERENT
72! LAYERS IS DETERMINED BY DMIN3 DEFINED IN common.passivetrc.*.h
73! ----------------------------------------------------------------------
74
75      DO jk = 1, jpkm1
76         DO jj = 2, jpjm1
77            DO ji = 2, jpim1
78               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3)   &
79     &                             + (1./fse3t(ji,jj,jk)) * dmin3(ji,jj,jk) * fbod(ji,jj)
80            END DO
81         END DO
82      END DO
83
84!     Find the last level of the water column
85!     Compute fluxes due to sinking particles (slow)
86   
87      ikbot(:,:) = jpk
88      zwork(:,:) = 0.e0
89
90!!gm ikbot already exist in opa...
91      DO jk = 1, jpkm1
92         DO jj = 2, jpjm1
93            DO ji = 2, jpim1
94               IF( tmask(ji,jj,jk) == 1 .AND.  tmask(ji,jj,jk+1) == 0 ) THEN
95                  ikbot(ji,jj) = jk
96                  zwork(ji,jj) = vsed * trn(ji,jj,jk,jpdet)
97               ENDIF
98            END DO
99         END DO
100      END DO
101
102      zgeolpoc = 0.e0         !     Initialization
103
104      ! Release of nutrients from the "simple" sediment
105      DO jj = 2, jpjm1
106         DO ji = 2, jpim1
107            tra(ji,jj,ikbot(ji,jj),jpno3) = tra(ji,jj,ikbot(ji,jj),jpno3)   &
108               &                          + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot(ji,jj))
109
110            !     Deposition of organic matter in the sediment
111            zgeolpoc = zgeolpoc + sedlostpoc * sedpocn(ji,jj) * e1t(ji,jj) * e2t(ji,jj)
112
113!!gm factorisationof rdt just bellow...
114            sedpoca(ji,jj) = zwork(ji,jj) * rdt + dminl(ji,jj) * fbod(ji,jj) * rdt   &
115               &           - sedlam * sedpocn(ji,jj) * rdt - sedlostpoc * sedpocn(ji,jj) * rdt
116
117         END DO
118      END DO
119
120      DO jj = 2,jpjm1
121         DO ji = 2,jpim1
122            tra(ji,jj,1,jpno3) = tra(ji,jj,1,jpno3) + zgeolpoc * cmask(ji,jj) / areacot / fse3t(ji,jj,1)
123         END DO
124      END DO
125
126      CALL lbc_lnk( sedpocn, 'T', 1. )
127 
128      ! Oa & Ek: diagnostics depending on jpdia2d !          left as example
129# if defined key_trc_diaadd
130      trc2d(:,:,19) = sedpocn(:,:)
131# endif
132
133      ! Leap-frog scheme (only in explicit case, otherwise the
134      ! ----------------  time stepping is already done in trczdf)
135      IF( l_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN
136         zfact = 2. * rdttra(jk) * FLOAT( ndttrc ) 
137         IF( neuler == 0 .AND. kt == nittrc000 )   zfact = rdttra(jk) * FLOAT(ndttrc) 
138         sedpoca(:,:) =  sedpocb(:,:) + zfact * sedpoca(:,:) 
139      ENDIF
140
141     
142      ! Time filter and swap of arrays
143      ! ------------------------------
144      IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd  ) THEN         ! centred or tvd scheme
145         IF( neuler == 0 .AND. kt == nittrc000 ) THEN
146            DO jj = 1, jpj
147               DO ji = 1, jpi
148                  sedpocb(ji,jj) = sedpocn(ji,jj)
149                  sedpocn(ji,jj) = sedpoca(ji,jj)
150                  sedpoca(ji,jj) = 0.e0
151               END DO
152            END DO
153         ELSE
154            DO jj = 1, jpj
155               DO ji = 1, jpi
156                  sedpocb(ji,jj) = atfp  * ( sedpocb(ji,jj) + sedpoca(ji,jj) )    &
157                     &           + atfp1 *   sedpocn(ji,jj)
158                  sedpocn(ji,jj) = sedpoca(ji,jj)
159                  sedpoca(ji,jj) = 0.e0
160               END DO
161            END DO
162         ENDIF
163      ELSE                                                   !  case of smolar scheme or muscl
164         sedpocb(:,:) = sedpoca(:,:)
165         sedpocn(:,:) = sedpoca(:,:)
166         sedpoca(:,:) = 0.e0
167      ENDIF
168      !
169
170      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
171         WRITE(charout, FMT="('exp')")
172         CALL prt_ctl_trc_info(charout)
173         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
174      ENDIF
175
176   END SUBROUTINE trc_exp
177
178#else
179   !!======================================================================
180   !!  Dummy module :                                   No PISCES bio-model
181   !!======================================================================
182CONTAINS
183   SUBROUTINE trc_exp( kt )                   ! Empty routine
184      INTEGER, INTENT( in ) ::   kt
185      WRITE(*,*) 'trc_exp: You should not have seen this print! error?', kt
186   END SUBROUTINE trc_exp
187#endif 
188
189   !!======================================================================
190END MODULE  trcexp
Note: See TracBrowser for help on using the repository browser.