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 branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES – NEMO

source: branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90 @ 2823

Last change on this file since 2823 was 2823, checked in by cetlod, 13 years ago

Add new parameterisation in PISCES, see ticket #854

  • Property svn:keywords set to Id
File size: 6.7 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
29   IMPLICIT NONE
30   PRIVATE
31
32   PUBLIC   trc_ini_pisces   ! called by trcini.F90 module
33
34   REAL(wp) :: sco2   =  2.312e-3_wp
35   REAL(wp) :: alka0  =  2.423e-3_wp
36   REAL(wp) :: oxyg0  =  177.6e-6_wp 
37   REAL(wp) :: po4    =  2.174e-6_wp 
38   REAL(wp) :: bioma0 =  1.000e-8_wp 
39   REAL(wp) :: silic1 =  91.65e-6_wp 
40   REAL(wp) :: no3    =  31.04e-6_wp * 7.625_wp
41
42#  include "top_substitute.h90"
43   !!----------------------------------------------------------------------
44   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
45   !! $Id$
46   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
47   !!----------------------------------------------------------------------
48CONTAINS
49
50   SUBROUTINE trc_ini_pisces
51      !!----------------------------------------------------------------------
52      !!                   ***  ROUTINE trc_ini_pisces ***
53      !!
54      !! ** Purpose :   Initialisation of the PISCES biochemical model
55      !!----------------------------------------------------------------------
56      !
57      IF(lwp) WRITE(numout,*)
58      IF(lwp) WRITE(numout,*) ' trc_ini_pisces :   PISCES biochemical model initialisation'
59      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
60
61      CALL pisces_alloc()                          ! Allocate PISCES arrays
62
63      !                                            ! Time-step
64      rfact   = rdttrc(1)                          ! ---------
65      rfactr  = 1. / rfact
66      rfact2  = rfact / FLOAT( nrdttrc )
67      rfact2r = 1. / rfact2
68
69      IF(lwp) WRITE(numout,*) '    Passive Tracer  time step    rfact  = ', rfact, ' rdt = ', rdttra(1)
70      IF(lwp) write(numout,*) '    PISCES  Biology time step    rfact2 = ', rfact2
71
72
73
74      ! Set biological ratios
75      ! ---------------------
76      rno3    =  16._wp / 122._wp
77      po4r    =   1._wp / 122._wp
78      o2nit   =  32._wp / 122._wp
79      rdenit  = 105._wp /  16._wp
80      rdenita =   3._wp /  5._wp
81      o2ut    = 131._wp / 122._wp
82
83      CALL p4z_che        ! initialize the chemical constants
84
85      ! Initialization of tracer concentration in case of  no restart
86      !--------------------------------------------------------------
87      IF( .NOT. ln_rsttr ) THEN 
88         
89         trn(:,:,:,jpdic) = sco2
90         trn(:,:,:,jpdoc) = bioma0
91         trn(:,:,:,jptal) = alka0
92         trn(:,:,:,jpoxy) = oxyg0
93         trn(:,:,:,jpcal) = bioma0
94         trn(:,:,:,jppo4) = po4 / po4r
95         trn(:,:,:,jppoc) = bioma0
96#  if ! defined key_kriest
97         trn(:,:,:,jpgoc) = bioma0
98         trn(:,:,:,jpbfe) = bioma0 * 5.e-6
99#  else
100         trn(:,:,:,jpnum) = bioma0 / ( 6. * xkr_massp )
101#  endif
102         trn(:,:,:,jpsil) = silic1
103         trn(:,:,:,jpbsi) = bioma0 * 0.15
104         trn(:,:,:,jpdsi) = bioma0 * 5.e-6
105         trn(:,:,:,jpphy) = bioma0
106         trn(:,:,:,jpdia) = bioma0
107         trn(:,:,:,jpzoo) = bioma0
108         trn(:,:,:,jpmes) = bioma0
109         trn(:,:,:,jpfer) = 0.6E-9
110         trn(:,:,:,jpsfe) = bioma0 * 5.e-6
111         trn(:,:,:,jpdfe) = bioma0 * 5.e-6
112         trn(:,:,:,jpnfe) = bioma0 * 5.e-6
113         trn(:,:,:,jpnch) = bioma0 * 12. / 55.
114         trn(:,:,:,jpdch) = bioma0 * 12. / 55.
115         trn(:,:,:,jpno3) = no3
116         trn(:,:,:,jpnh4) = bioma0
117
118         ! initialize the half saturation constant for silicate
119         ! ----------------------------------------------------
120         xksi(:,:)    = 2.e-6
121         xksimax(:,:) = xksi(:,:)
122
123      ENDIF
124
125      IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done'
126      IF(lwp) WRITE(numout,*) ' '
127      !
128   END SUBROUTINE trc_ini_pisces
129
130
131   SUBROUTINE pisces_alloc
132      !!----------------------------------------------------------------------
133      !!                     ***  ROUTINE pisces_alloc  ***
134      !!
135      !! ** Purpose :   Allocate all the dynamic arrays of PISCES
136      !!----------------------------------------------------------------------
137      USE p4zsink , ONLY : p4z_sink_alloc     
138      USE p4zopt  , ONLY : p4z_opt_alloc           
139      USE p4zprod , ONLY : p4z_prod_alloc         
140      USE p4zrem  , ONLY : p4z_rem_alloc           
141      USE p4zsed  , ONLY : p4z_sed_alloc         
142      USE p4zflx  , ONLY : p4z_flx_alloc
143      !
144      INTEGER :: ierr
145      !!----------------------------------------------------------------------
146      !
147      ierr =         sms_pisces_alloc()          ! Start of PISCES-related alloc routines...
148      ierr = ierr +  p4z_che_alloc()
149      ierr = ierr +  p4z_sink_alloc()
150      ierr = ierr +  p4z_opt_alloc()
151      ierr = ierr +  p4z_prod_alloc()
152      ierr = ierr +  p4z_rem_alloc()
153      ierr = ierr +  p4z_sed_alloc()
154      ierr = ierr +  p4z_flx_alloc()
155      !
156      IF( lk_mpp    )   CALL mpp_sum( ierr )
157      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'pisces_alloc: unable to allocate PISCES arrays' )
158      !
159   END SUBROUTINE pisces_alloc
160
161#else
162   !!----------------------------------------------------------------------
163   !!   Dummy module                            No PISCES biochemical model
164   !!----------------------------------------------------------------------
165CONTAINS
166   SUBROUTINE trc_ini_pisces             ! Empty routine
167   END SUBROUTINE trc_ini_pisces
168#endif
169
170   !!======================================================================
171END MODULE trcini_pisces
Note: See TracBrowser for help on using the repository browser.