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

source: trunk/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90 @ 1736

Last change on this file since 1736 was 1715, checked in by smasson, 15 years ago

move daymod public variables in dom_oce, see ticket:590

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 5.5 KB
Line 
1MODULE trcsms_pisces
2   !!======================================================================
3   !!                         ***  MODULE trcsms_pisces  ***
4   !! TOP :   PISCES Source Minus Sink manager
5   !!======================================================================
6   !! History :   1.0  !  2004-03 (O. Aumont) Original code
7   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
8   !!----------------------------------------------------------------------
9#if defined key_pisces
10   !!----------------------------------------------------------------------
11   !!   'key_pisces'                                       PISCES bio-model
12   !!----------------------------------------------------------------------
13   !!   trcsms_pisces        :  Time loop of passive tracers sms
14   !!----------------------------------------------------------------------
15   USE dom_oce         ! ocean space and time domain variables
16   USE oce_trc         !
17   USE trc
18   USE sms_pisces
19   USE lbclnk
20   USE lib_mpp
21   
22   USE p4zint          !
23   USE p4zche          !
24   USE p4zbio          !
25   USE p4zsed          !
26   USE p4zlys          !
27   USE p4zflx          !
28
29   USE trdmld_trc_oce
30   USE trdmld_trc
31
32   USE sedmodel
33
34   IMPLICIT NONE
35   PRIVATE
36
37   PUBLIC   trc_sms_pisces    ! called in trcsms.F90
38
39   !!----------------------------------------------------------------------
40   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
41   !! $Id$
42   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
43   !!----------------------------------------------------------------------
44
45CONTAINS
46
47   SUBROUTINE trc_sms_pisces( kt )
48      !!---------------------------------------------------------------------
49      !!                     ***  ROUTINE trc_sms_pisces  ***
50      !!
51      !! ** Purpose :   Managment of the call to Biological sources and sinks
52      !!              routines of PISCES bio-model
53      !!
54      !! ** Method  : - at each new day ...
55      !!              - several calls of bio and sed ???
56      !!              - ...
57      !!---------------------------------------------------------------------
58      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index     
59      !!
60      INTEGER ::   jnt, jn
61      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrpis   ! used for pisces sms trends
62      !!---------------------------------------------------------------------
63
64      IF( kt == nittrc000  .AND. .NOT. ln_rsttr )   CALL trc_sms_pisces_init    ! Initialization (first time-step only)
65
66      IF( ndayflxtr /= nday ) THEN      ! New days
67         !
68         ndayflxtr = nday
69
70         CALL p4z_che          ! computation of chemical constants
71         CALL p4z_int          ! computation of various rates for biogeochemistry
72         !
73      ENDIF
74
75
76      DO jnt = 1, nrdttrc          ! Potential time splitting if requested
77         !
78         CALL p4z_bio (kt, jnt)    ! Compute soft tissue production (POC)
79         CALL p4z_sed (kt, jnt)    ! compute soft tissue remineralisation
80         !
81         trb(:,:,:,:) = trn(:,:,:,:)
82         !
83      END DO
84
85      CALL p4z_lys( kt )             ! Compute CaCO3 saturation
86      CALL p4z_flx( kt )             ! Compute surface fluxes
87
88      DO jn = jp_pcs0, jp_pcs1
89        CALL lbc_lnk( trn(:,:,:,jn), 'T', 1. )
90        CALL lbc_lnk( trb(:,:,:,jn), 'T', 1. )
91        CALL lbc_lnk( tra(:,:,:,jn), 'T', 1. )
92      END DO
93
94      IF( l_trdtrc ) THEN
95          DO jn = jp_pcs0, jp_pcs1
96            ztrpis(:,:,:) = tra(:,:,:,jn)
97            CALL trd_mod_trc( ztrpis, jn, jptrc_trd_sms, kt )   ! save trends
98          END DO
99      END IF
100
101      IF( lk_sed ) THEN 
102         !
103         CALL sed_model( kt )     !  Main program of Sediment model
104         !
105         DO jn = jp_pcs0, jp_pcs1
106           CALL lbc_lnk( trn(:,:,:,jn), 'T', 1. )
107         END DO
108         !
109      ENDIF
110
111   END SUBROUTINE trc_sms_pisces
112
113   SUBROUTINE trc_sms_pisces_init
114      !!----------------------------------------------------------------------
115      !!                  ***  ROUTINE trc_sms_pisces_init  ***
116      !!
117      !! ** Purpose :   Initialization of PH variable
118      !!
119      !!----------------------------------------------------------------------
120      INTEGER  ::  ji, jj, jk
121      REAL(wp) ::  zcaralk, zbicarb, zco3
122      REAL(wp) ::  ztmas, ztmas1
123
124      ! Initialization of chemical variables of the carbon cycle
125      ! --------------------------------------------------------
126      DO jk = 1, jpk
127         DO jj = 1, jpj
128            DO ji = 1, jpi
129               ztmas   = tmask(ji,jj,jk)
130               ztmas1  = 1. - tmask(ji,jj,jk)
131               zcaralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / (  1. + 1.E-8 / ( rtrn + akb3(ji,jj,jk) )  )
132               zco3    = ( zcaralk - trn(ji,jj,jk,jpdic) ) * ztmas + 0.5e-3 * ztmas1
133               zbicarb = ( 2. * trn(ji,jj,jk,jpdic) - zcaralk )
134               hi(ji,jj,jk) = ( ak23(ji,jj,jk) * zbicarb / zco3 ) * ztmas + 1.e-9 * ztmas1
135            END DO
136         END DO
137      END DO
138
139   END SUBROUTINE trc_sms_pisces_init
140
141#else
142   !!======================================================================
143   !!  Dummy module :                                   No PISCES bio-model
144   !!======================================================================
145CONTAINS
146   SUBROUTINE trc_sms_pisces( kt )                   ! Empty routine
147      INTEGER, INTENT( in ) ::   kt
148      WRITE(*,*) 'trc_sms_pisces: You should not have seen this print! error?', kt
149   END SUBROUTINE trc_sms_pisces
150#endif 
151
152   !!======================================================================
153END MODULE trcsms_pisces 
Note: See TracBrowser for help on using the repository browser.