source: NEMO/trunk/src/TOP/PISCES/trcice_pisces.F90 @ 10213

Last change on this file since 10213 was 10213, checked in by aumont, 2 years ago

corrects bugs described in Tickets 2144 and 2145

  • Property svn:keywords set to Id
File size: 13.6 KB
Line 
1MODULE trcice_pisces
2   !!======================================================================
3   !!                         ***  MODULE trcice_pisces  ***
4   !! TOP :   initialisation of the PISCES biochemical model
5   !!======================================================================
6   !! History :  3.5  ! 2013    (M. Vancoppenolle, O. Aumont, G. Madec), original code
7   !!----------------------------------------------------------------------
8   !! trc_ice_pisces   : PISCES fake sea ice model setting
9   !!----------------------------------------------------------------------
10   USE par_trc         ! TOP parameters
11   USE par_pisces      ! PISCES parameters
12   USE oce_trc         ! Shared variables between ocean and passive tracers
13   USE trc             ! Passive tracers common variables
14   USE sms_pisces      ! PISCES Source Minus Sink variables
15   USE in_out_manager
16
17   IMPLICIT NONE
18   PRIVATE
19
20   PUBLIC   trc_ice_ini_pisces ! called by trcini.F90 module
21
22   !!----------------------------------------------------------------------
23   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
24   !! $Id$
25   !! Software governed by the CeCILL license (see ./LICENSE)
26   !!----------------------------------------------------------------------
27CONTAINS
28
29   SUBROUTINE trc_ice_ini_pisces
30      !!----------------------------------------------------------------------
31      !!                   ***  ROUTINE trc_ini_pisces ***
32      !!
33      !! ** Purpose :   Initialisation of the PISCES biochemical model
34      !!----------------------------------------------------------------------
35      !
36      IF( ln_p4z .OR. ln_p5z ) THEN  ;   CALL p4z_ice_ini   !  PISCES
37      ELSE                           ;   CALL p2z_ice_ini   !  LOBSTER
38      ENDIF
39      !
40   END SUBROUTINE trc_ice_ini_pisces
41
42
43   SUBROUTINE p4z_ice_ini
44      !!----------------------------------------------------------------------
45      !!                   ***  ROUTINE p4z_ice_ini ***
46      !!
47      !! ** Purpose :   PISCES fake sea ice model setting
48      !!    Method  :   Assign prescribe values to tracer concentrations in sea ice
49      !!
50      !! For levitating sea ice, constant ocean tracer concentrations also have to be defined.
51      !! This is done specifically for Global, Arctic, Antarctic and Baltic regions
52      !!
53      !! Sea ice concentrations are by default prescribed as follows
54      !!  trc_i = zratio * trc_o
55      !!
56      !! This formulation is modulated by the namelist parameter trc_ice_ratio
57      !!
58      !! trc_ice_ratio  * betw 0 and 1: prescribed ice/ocean tracer concentration ratio
59      !!                * -1 => the ice-ocean tracer concentration ratio follows the
60      !!                         ice-ocean salinity ratio
61      !!                * -2 => no ice-ocean tracer concentration is used
62      !!                        instead, the tracer concentration in sea ice
63      !!                        is prescribed to trc_ice_prescr
64      !!
65      !! cn_trc_o  specifies which disinctions are made for prescribed tracer concentration
66      !!                * 'GL' use global ocean values making distinction for Baltic Sea only
67      !!                * 'AA' use Arctic/Antarctic contrasted values, + Baltic
68      !!
69      !!----------------------------------------------------------------------
70
71                                        !--- Dummy variables
72      REAL(wp), DIMENSION(jpmaxtrc,2) :: zratio  ! effective ice-ocean tracer cc ratio
73      REAL(wp), DIMENSION(jpmaxtrc,4) :: zpisc   ! prescribes concentration
74      !                                            !  1:global, 2:Arctic, 3:Antarctic, 4:Baltic
75
76      REAL(wp), DIMENSION(2) :: zrs  ! ice-ocean salinity ratio, 1 - global, 2- Baltic
77      REAL(wp) :: zsice_bal          ! prescribed ice salinity in the Baltic
78      REAL(wp) :: zsoce_bal          ! prescribed ocean salinity in the Baltic
79      REAL(wp) :: zfeoce_glo         ! prescribed iron concentration in the global ocean
80      REAL(wp) :: zfeoce_bal         ! prescribed iron concentration in the global ocean
81      INTEGER  :: jn                 ! dummy loop index
82
83      !!----------------------------------------------------------------------
84
85      IF(lwp) WRITE(numout,*)
86      IF(lwp) WRITE(numout,*) ' trc_ice_ini_pisces: Prescribed sea ice biogeochemistry '
87      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~'
88
89      !--------------------------------------------
90      ! Initialize ocean prescribed concentrations
91      !--------------------------------------------
92      ! values taken from a 500 yr equilibrium run
93      ! used only in the levitating sea ice case with virtual salt / tracer
94      ! fluxes
95
96      !--- Global values
97      zpisc(jpdic,1) =  1.99e-3_wp 
98      zpisc(jpdoc,1) =  2.04e-5_wp 
99      zpisc(jptal,1) =  2.31e-3_wp 
100      zpisc(jpoxy,1) =  2.47e-4_wp
101      zpisc(jpcal,1) =  1.04e-8_wp
102      zpisc(jppo4,1) =  5.77e-7_wp / po4r 
103      zpisc(jppoc,1) =  1.27e-6_wp 
104      zpisc(jpgoc,1) =  5.23e-8_wp 
105      zpisc(jpbfe,1) =  9.84e-13_wp 
106      zpisc(jpsil,1) =  7.36e-6_wp 
107      zpisc(jpdsi,1) =  1.07e-7_wp 
108      zpisc(jpgsi,1) =  1.53e-8_wp
109      zpisc(jpphy,1) =  9.57e-8_wp
110      zpisc(jpdia,1) =  4.24e-7_wp
111      zpisc(jpzoo,1) =  6.07e-7_wp
112      zpisc(jpmes,1) =  3.44e-7_wp
113      zpisc(jpfer,1) =  4.06e-10_wp
114      zpisc(jpsfe,1) =  2.51e-11_wp
115      zpisc(jpdfe,1) =  6.57e-12_wp
116      zpisc(jpnfe,1) =  1.76e-11_wp
117      zpisc(jpnch,1) =  1.67e-7_wp
118      zpisc(jpdch,1) =  1.02e-7_wp
119      zpisc(jpno3,1) =  5.79e-6_wp / rno3 
120      zpisc(jpnh4,1) =  3.22e-7_wp / rno3
121
122      ! ln_p5z
123      zpisc(jppic,1) =  9.57e-8_wp
124      zpisc(jpnpi,1) =  9.57e-8_wp
125      zpisc(jpppi,1) =  9.57e-8_wp
126      zpisc(jppfe,1) =  1.76e-11_wp
127      zpisc(jppch,1) =  1.67e-7_wp
128      zpisc(jpnph,1) =  9.57e-8_wp
129      zpisc(jppph,1) =  9.57e-8_wp
130      zpisc(jpndi,1) =  4.24e-7_wp
131      zpisc(jppdi,1) =  4.24e-7_wp
132      zpisc(jppon,1) =  9.57e-8_wp
133      zpisc(jppop,1) =  9.57e-8_wp
134      zpisc(jpdon,1) =  2.04e-5_wp
135      zpisc(jpdop,1) =  2.04e-5_wp
136      zpisc(jpgon,1) =  5.23e-8_wp
137      zpisc(jpgop,1) =  5.23e-8_wp
138
139      !--- Arctic specificities (dissolved inorganic & DOM)
140      zpisc(jpdic,2) =  1.98e-3_wp 
141      zpisc(jpdoc,2) =  6.00e-6_wp 
142      zpisc(jptal,2) =  2.13e-3_wp 
143      zpisc(jpoxy,2) =  3.65e-4_wp 
144      zpisc(jpcal,2) =  1.50e-9_wp 
145      zpisc(jppo4,2) =  4.09e-7_wp / po4r 
146      zpisc(jppoc,2) =  4.05e-7_wp 
147      zpisc(jpgoc,2) =  2.84e-8_wp 
148      zpisc(jpbfe,2) =  7.03e-13_wp 
149      zpisc(jpsil,2) =  6.87e-6_wp 
150      zpisc(jpdsi,2) =  1.73e-7_wp 
151      zpisc(jpgsi,2) =  7.93e-9_wp
152      zpisc(jpphy,2) =  5.25e-7_wp 
153      zpisc(jpdia,2) =  7.75e-7_wp 
154      zpisc(jpzoo,2) =  3.34e-7_wp
155      zpisc(jpmes,2) =  2.49e-7_wp 
156      zpisc(jpfer,2) =  1.43e-9_wp 
157      zpisc(jpsfe,2) =  2.21e-11_wp 
158      zpisc(jpdfe,2) =  2.04e-11_wp 
159      zpisc(jpnfe,2) =  1.75e-11_wp 
160      zpisc(jpnch,2) =  1.46e-07_wp 
161      zpisc(jpdch,2) =  2.36e-07_wp 
162      zpisc(jpno3,2) =  3.51e-06_wp / rno3 
163      zpisc(jpnh4,2) =  6.15e-08_wp / rno3 
164
165      ! ln_p5z
166      zpisc(jppic,2) =  5.25e-7_wp
167      zpisc(jpnpi,2) =  5.25e-7_wp
168      zpisc(jpppi,2) =  5.25e-7_wp
169      zpisc(jppfe,2) =  1.75e-11_wp
170      zpisc(jppch,2) =  1.46e-07_wp
171      zpisc(jpnph,2) =  5.25e-7_wp
172      zpisc(jppph,2) =  5.25e-7_wp
173      zpisc(jpndi,2) =  7.75e-7_wp
174      zpisc(jppdi,2) =  7.75e-7_wp
175      zpisc(jppon,2) =  4.05e-7_wp
176      zpisc(jppop,2) =  4.05e-7_wp
177      zpisc(jpdon,2) =  6.00e-6_wp
178      zpisc(jpdop,2) =  6.00e-6_wp
179      zpisc(jpgon,2) =  2.84e-8_wp
180      zpisc(jpgop,2) =  2.84e-8_wp
181
182      !--- Antarctic specificities (dissolved inorganic & DOM)
183      zpisc(jpdic,3) =  2.20e-3_wp 
184      zpisc(jpdoc,3) =  7.02e-6_wp 
185      zpisc(jptal,3) =  2.37e-3_wp 
186      zpisc(jpoxy,3) =  3.42e-4_wp 
187      zpisc(jpcal,3) =  3.17e-9_wp 
188      zpisc(jppo4,3) =  1.88e-6_wp / po4r 
189      zpisc(jppoc,3) =  1.13e-6_wp 
190      zpisc(jpgoc,3) =  2.89e-8_wp 
191      zpisc(jpbfe,3) =  5.63e-13_wp 
192      zpisc(jpsil,3) =  4.96e-5_wp 
193      zpisc(jpdsi,3) =  5.63e-7_wp 
194      zpisc(jpgsi,3) =  5.35e-8_wp
195      zpisc(jpphy,3) =  8.10e-7_wp 
196      zpisc(jpdia,3) =  5.77e-7_wp 
197      zpisc(jpzoo,3) =  6.68e-7_wp
198      zpisc(jpmes,3) =  3.55e-7_wp 
199      zpisc(jpfer,3) =  1.62e-10_wp
200      zpisc(jpsfe,3) =  2.29e-11_wp 
201      zpisc(jpdfe,3) =  8.75e-12_wp
202      zpisc(jpnfe,3) =  1.48e-11_wp 
203      zpisc(jpnch,3) =  2.02e-7_wp 
204      zpisc(jpdch,3) =  1.60e-7_wp 
205      zpisc(jpno3,3) =  2.64e-5_wp / rno3 
206      zpisc(jpnh4,3) =  3.39e-7_wp / rno3 
207
208      ! ln_p5z
209      zpisc(jppic,3) =  8.10e-7_wp
210      zpisc(jpnpi,3) =  8.10e-7_wp
211      zpisc(jpppi,3) =  8.10e-7_wp 
212      zpisc(jppfe,3) =  1.48e-11_wp
213      zpisc(jppch,3) =  2.02e-7_wp
214      zpisc(jpnph,3) =  9.57e-8_wp
215      zpisc(jppph,3) =  9.57e-8_wp
216      zpisc(jpndi,3) =  5.77e-7_wp
217      zpisc(jppdi,3) =  5.77e-7_wp
218      zpisc(jppon,3) =  1.13e-6_wp
219      zpisc(jppop,3) =  1.13e-6_wp
220      zpisc(jpdon,3) =  7.02e-6_wp
221      zpisc(jpdop,3) =  7.02e-6_wp
222      zpisc(jpgon,3) =  2.89e-8_wp
223      zpisc(jpgop,3) =  2.89e-8_wp
224
225
226      !--- Baltic Sea particular case for ORCA configurations
227      zpisc(jpdic,4) = 1.14e-3_wp
228      zpisc(jpdoc,4) = 1.06e-5_wp
229      zpisc(jptal,4) = 1.16e-3_wp
230      zpisc(jpoxy,4) = 3.71e-4_wp
231      zpisc(jpcal,4) = 1.51e-9_wp
232      zpisc(jppo4,4) = 2.85e-9_wp / po4r
233      zpisc(jppoc,4) = 4.84e-7_wp
234      zpisc(jpgoc,4) = 1.05e-8_wp
235      zpisc(jpbfe,4) = 4.97e-13_wp
236      zpisc(jpsil,4) = 4.91e-5_wp
237      zpisc(jpdsi,4) = 3.25e-7_wp
238      zpisc(jpgsi,4) = 1.93e-8_wp
239      zpisc(jpphy,4) = 6.64e-7_wp
240      zpisc(jpdia,4) = 3.41e-7_wp
241      zpisc(jpzoo,4) = 3.83e-7_wp
242      zpisc(jpmes,4) = 0.225e-6_wp
243      zpisc(jpfer,4) = 2.45e-9_wp
244      zpisc(jpsfe,4) = 3.89e-11_wp
245      zpisc(jpdfe,4) = 1.33e-11_wp
246      zpisc(jpnfe,4) = 2.62e-11_wp
247      zpisc(jpnch,4) = 1.17e-7_wp
248      zpisc(jpdch,4) = 9.69e-8_wp
249      zpisc(jpno3,4) = 5.36e-5_wp / rno3
250      zpisc(jpnh4,4) = 7.18e-7_wp / rno3
251
252      ! ln_p5z
253      zpisc(jppic,4) =  6.64e-7_wp
254      zpisc(jpnpi,4) =  6.64e-7_wp
255      zpisc(jpppi,4) =  6.64e-7_wp
256      zpisc(jppfe,4) =  3.89e-11_wp
257      zpisc(jppch,4) =  1.17e-7_wp
258      zpisc(jpnph,4) =  6.64e-7_wp
259      zpisc(jppph,4) =  6.64e-7_wp
260      zpisc(jpndi,4) =  3.41e-7_wp
261      zpisc(jppdi,4) =  3.41e-7_wp
262      zpisc(jppon,4) =  4.84e-7_wp
263      zpisc(jppop,4) =  4.84e-7_wp
264      zpisc(jpdon,4) =  1.06e-5_wp
265      zpisc(jpdop,4) =  1.06e-5_wp
266      zpisc(jpgon,4) =  1.05e-8_wp
267      zpisc(jpgop,4) =  1.05e-8_wp
268 
269      DO jn = jp_pcs0, jp_pcs1
270         IF( cn_trc_o(jn) == 'GL ' ) trc_o(:,:,jn) = zpisc(jn,1)  ! Global case
271         IF( cn_trc_o(jn) == 'AA ' ) THEN
272            WHERE( gphit(:,:) >= 0._wp ) ; trc_o(:,:,jn) = zpisc(jn,2) ; END WHERE ! Arctic
273            WHERE( gphit(:,:) <  0._wp ) ; trc_o(:,:,jn) = zpisc(jn,3) ; END WHERE ! Antarctic
274         ENDIF
275         IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN     !  Baltic Sea particular case for ORCA configurations
276             WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
277                    54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
278                    trc_o(:,:,jn) = zpisc(jn,4)
279            END WHERE
280         ENDIF
281      ENDDO
282
283
284
285      !-----------------------------
286      ! Assign ice-ocean cc ratios
287      !-----------------------------
288      ! 0 means zero concentration in sea ice
289      ! 1 means same concentration in the sea ice as in the ocean
290
291      ! Ice ocean salinity ratio
292      zsoce_bal   = 4. ; zsice_bal   = 2. !! Baltic ocean and sea ice salinities
293      zrs(1) = sice / soce                !! ice-ocean salinity ratio, global case
294      zrs(2) = zsice_bal / zsoce_bal      !! ice-ocean salinity ratio, Baltic case
295
296      DO jn = jp_pcs0, jp_pcs1
297         IF( trc_ice_ratio(jn) >= 0._wp )  zratio(jn,:) = trc_ice_ratio(jn)
298         IF( trc_ice_ratio(jn) == -1._wp ) zratio(jn,:) = zrs(:)
299         IF( trc_ice_ratio(jn) == -2._wp ) zratio(jn,:) = -9999.99_wp
300      END DO
301
302      !-------------------------------
303      ! Sea ice tracer concentrations
304      !-------------------------------
305      DO jn = jp_pcs0, jp_pcs1
306         !-- Everywhere but in the Baltic
307         IF ( trc_ice_ratio(jn) >= -1._wp ) THEN ! no prescribed conc. ; typically everything but iron)
308            trc_i(:,:,jn) = zratio(jn,1) * trc_o(:,:,jn) 
309         ELSE                                    ! prescribed concentration
310            trc_i(:,:,jn) = trc_ice_prescr(jn)
311         ENDIF
312       
313         !-- Baltic
314         IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN     
315            IF ( trc_ice_ratio(jn) >= - 1._wp ) THEN ! no prescribed conc. ; typically everything but iron)
316               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
317                      54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
318                     trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 
319               END WHERE
320            ELSE                                 ! prescribed tracer concentration in ice
321               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
322                   54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
323                     trc_i(:,:,jn) = trc_ice_prescr(jn)
324               END WHERE
325            ENDIF ! trc_ice_ratio
326         ENDIF
327      !
328      END DO ! jn
329      !
330   END SUBROUTINE p4z_ice_ini
331
332   SUBROUTINE p2z_ice_ini
333      !!----------------------------------------------------------------------
334      !!                   ***  ROUTINE p2z_ice_ini ***
335      !!
336      !! ** Purpose :   Initialisation of the LOBSTER biochemical model
337      !!----------------------------------------------------------------------
338   END SUBROUTINE p2z_ice_ini
339
340
341   !!======================================================================
342END MODULE trcice_pisces
Note: See TracBrowser for help on using the repository browser.