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

source: trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90 @ 3295

Last change on this file since 3295 was 3295, checked in by cetlod, 12 years ago

trunk:A few additional diagnostics added in PISCES

  • Property svn:keywords set to Id
File size: 8.5 KB
Line 
1MODULE trcini_pisces
2   !!======================================================================
3   !!                         ***  MODULE trcini_pisces  ***
4   !! TOP :   initialisation of the PISCES biochemical model
5   !!======================================================================
6   !! History :    -   !  1988-07  (E. Maier-Reiner) Original code
7   !!              -   !  1999-10  (O. Aumont, C. Le Quere)
8   !!              -   !  2002     (O. Aumont)  PISCES
9   !!             1.0  !  2005-03  (O. Aumont, A. El Moussaoui) F90
10   !!             2.0  !  2007-12  (C. Ethe, G. Madec) from trcini.pisces.h90
11   !!----------------------------------------------------------------------
12#if defined key_pisces
13   !!----------------------------------------------------------------------
14   !!   'key_pisces'                                       PISCES bio-model
15   !!----------------------------------------------------------------------
16   !! trc_ini_pisces   : PISCES biochemical model initialisation
17   !!----------------------------------------------------------------------
18   USE par_trc         ! TOP parameters
19   USE oce_trc         !  shared variables between ocean and passive tracers
20   USE trc             !  passive tracers common variables
21   USE sms_pisces      !  PISCES Source Minus Sink variables
22   USE p4zche          !  Chemical model
23   USE p4zsink         !  vertical flux of particulate matter due to sinking
24   USE p4zopt          !  optical model
25   USE p4zrem          !  Remineralisation of organic matter
26   USE p4zflx          !  Gas exchange
27   USE p4zsed          !  Sedimentation
28   USE p4zlim          !  Co-limitations of differents nutrients
29   USE p4zprod         !  Growth rate of the 2 phyto groups
30   USE p4zmicro        !  Sources and sinks of microzooplankton
31   USE p4zmeso         !  Sources and sinks of mesozooplankton
32   USE p4zmort         !  Mortality terms for phytoplankton
33   USE p4zlys          !  Calcite saturation
34   USE p4zsed          !  Sedimentation
35
36   IMPLICIT NONE
37   PRIVATE
38
39   PUBLIC   trc_ini_pisces   ! called by trcini.F90 module
40
41   REAL(wp) :: sco2   =  2.312e-3_wp
42   REAL(wp) :: alka0  =  2.423e-3_wp
43   REAL(wp) :: oxyg0  =  177.6e-6_wp 
44   REAL(wp) :: po4    =  2.174e-6_wp 
45   REAL(wp) :: bioma0 =  1.000e-8_wp 
46   REAL(wp) :: silic1 =  91.65e-6_wp 
47   REAL(wp) :: no3    =  31.04e-6_wp * 7.625_wp
48
49#  include "top_substitute.h90"
50   !!----------------------------------------------------------------------
51   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
52   !! $Id$
53   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
54   !!----------------------------------------------------------------------
55CONTAINS
56
57   SUBROUTINE trc_ini_pisces
58      !!----------------------------------------------------------------------
59      !!                   ***  ROUTINE trc_ini_pisces ***
60      !!
61      !! ** Purpose :   Initialisation of the PISCES biochemical model
62      !!----------------------------------------------------------------------
63      !
64      INTEGER  ::  ji, jj, jk
65      REAL(wp) ::  zcaralk, zbicarb, zco3
66      REAL(wp) ::  ztmas, ztmas1
67      !!----------------------------------------------------------------------
68      IF(lwp) WRITE(numout,*)
69      IF(lwp) WRITE(numout,*) ' trc_ini_pisces :   PISCES biochemical model initialisation'
70      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
71
72      CALL pisces_alloc()                          ! Allocate PISCES arrays
73
74      !                                            ! Time-step
75      rfact   = rdttrc(1)                          ! ---------
76      rfactr  = 1. / rfact
77      rfact2  = rfact / FLOAT( nrdttrc )
78      rfact2r = 1. / rfact2
79
80      IF(lwp) WRITE(numout,*) '    Passive Tracer  time step    rfact  = ', rfact, ' rdt = ', rdttra(1)
81      IF(lwp) write(numout,*) '    PISCES  Biology time step    rfact2 = ', rfact2
82
83
84
85      ! Set biological ratios
86      ! ---------------------
87      rno3    =  16._wp / 122._wp
88      po4r    =   1._wp / 122._wp
89      o2nit   =  32._wp / 122._wp
90      rdenit  = 105._wp /  16._wp
91      rdenita =   3._wp /  5._wp
92      o2ut    = 131._wp / 122._wp
93
94      CALL p4z_che        ! initialize the chemical constants
95
96      ! Initialization of tracer concentration in case of  no restart
97      !--------------------------------------------------------------
98      IF( .NOT. ln_rsttr ) THEN 
99         
100         trn(:,:,:,jpdic) = sco2
101         trn(:,:,:,jpdoc) = bioma0
102         trn(:,:,:,jptal) = alka0
103         trn(:,:,:,jpoxy) = oxyg0
104         trn(:,:,:,jpcal) = bioma0
105         trn(:,:,:,jppo4) = po4 / po4r
106         trn(:,:,:,jppoc) = bioma0
107#  if ! defined key_kriest
108         trn(:,:,:,jpgoc) = bioma0
109         trn(:,:,:,jpbfe) = bioma0 * 5.e-6
110#  else
111         trn(:,:,:,jpnum) = bioma0 / ( 6. * xkr_massp )
112#  endif
113         trn(:,:,:,jpsil) = silic1
114         trn(:,:,:,jpdsi) = bioma0 * 0.15
115         trn(:,:,:,jpgsi) = bioma0 * 5.e-6
116         trn(:,:,:,jpphy) = bioma0
117         trn(:,:,:,jpdia) = bioma0
118         trn(:,:,:,jpzoo) = bioma0
119         trn(:,:,:,jpmes) = bioma0
120         trn(:,:,:,jpfer) = 0.6E-9
121         trn(:,:,:,jpsfe) = bioma0 * 5.e-6
122         trn(:,:,:,jpdfe) = bioma0 * 5.e-6
123         trn(:,:,:,jpnfe) = bioma0 * 5.e-6
124         trn(:,:,:,jpnch) = bioma0 * 12. / 55.
125         trn(:,:,:,jpdch) = bioma0 * 12. / 55.
126         trn(:,:,:,jpno3) = no3
127         trn(:,:,:,jpnh4) = bioma0
128
129         ! initialize the half saturation constant for silicate
130         ! ----------------------------------------------------
131         xksi(:,:)    = 2.e-6
132         xksimax(:,:) = xksi(:,:)
133
134      ENDIF
135
136      IF( .NOT. ln_rsttr ) THEN
137         ! Initialization of chemical variables of the carbon cycle
138         ! --------------------------------------------------------
139         DO jk = 1, jpk
140            DO jj = 1, jpj
141               DO ji = 1, jpi
142                  ztmas   = tmask(ji,jj,jk)
143                  ztmas1  = 1. - tmask(ji,jj,jk)
144                  zcaralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / (  1. + 1.E-8 / ( rtrn + akb3(ji,jj,jk) )  )
145                  zco3    = ( zcaralk - trn(ji,jj,jk,jpdic) ) * ztmas + 0.5e-3 * ztmas1
146                  zbicarb = ( 2. * trn(ji,jj,jk,jpdic) - zcaralk )
147                  hi(ji,jj,jk) = ( ak23(ji,jj,jk) * zbicarb / zco3 ) * ztmas + 1.e-9 * ztmas1
148               END DO
149            END DO
150         END DO
151         !
152      END IF
153
154      ! Time step duration for biology
155      xstep = rfact2 / rday
156
157      CALL p4z_sink_init      !  vertical flux of particulate organic matter
158      CALL p4z_opt_init       !  Optic: PAR in the water column
159      CALL p4z_lim_init       !  co-limitations by the various nutrients
160      CALL p4z_prod_init      !  phytoplankton growth rate over the global ocean.
161      CALL p4z_rem_init       !  remineralisation
162      CALL p4z_mort_init      !  phytoplankton mortality
163      CALL p4z_micro_init     !  microzooplankton
164      CALL p4z_meso_init      !  mesozooplankton
165      CALL p4z_sed_init       !  sedimentation
166      CALL p4z_lys_init       !  calcite saturation
167      CALL p4z_flx_init       !  gas exchange
168
169      ndayflxtr = 0
170
171      IF(lwp) WRITE(numout,*) 
172      IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done'
173      IF(lwp) WRITE(numout,*) 
174      !
175   END SUBROUTINE trc_ini_pisces
176
177
178   SUBROUTINE pisces_alloc
179      !!----------------------------------------------------------------------
180      !!                     ***  ROUTINE pisces_alloc  ***
181      !!
182      !! ** Purpose :   Allocate all the dynamic arrays of PISCES
183      !!----------------------------------------------------------------------
184      !
185      INTEGER :: ierr
186      !!----------------------------------------------------------------------
187      !
188      ierr =         sms_pisces_alloc()          ! Start of PISCES-related alloc routines...
189      ierr = ierr +  p4z_che_alloc()
190      ierr = ierr +  p4z_sink_alloc()
191      ierr = ierr +  p4z_opt_alloc()
192      ierr = ierr +  p4z_prod_alloc()
193      ierr = ierr +  p4z_rem_alloc()
194      ierr = ierr +  p4z_sed_alloc()
195      ierr = ierr +  p4z_flx_alloc()
196      !
197      IF( lk_mpp    )   CALL mpp_sum( ierr )
198      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'pisces_alloc: unable to allocate PISCES arrays' )
199      !
200   END SUBROUTINE pisces_alloc
201
202#else
203   !!----------------------------------------------------------------------
204   !!   Dummy module                            No PISCES biochemical model
205   !!----------------------------------------------------------------------
206CONTAINS
207   SUBROUTINE trc_ini_pisces             ! Empty routine
208   END SUBROUTINE trc_ini_pisces
209#endif
210
211   !!======================================================================
212END MODULE trcini_pisces
Note: See TracBrowser for help on using the repository browser.