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

Last change on this file since 12489 was 10794, checked in by cetlod, 21 months ago

trunk : minor bugfix in PISCES

  • Property svn:keywords set to Id
File size: 14.0 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      zpisc(jplgw,1) =  1.0e-9_wp
122
123      ! ln_p5z
124      zpisc(jppic,1) =  9.57e-8_wp
125      zpisc(jpnpi,1) =  9.57e-8_wp
126      zpisc(jpppi,1) =  9.57e-8_wp
127      zpisc(jppfe,1) =  1.76e-11_wp
128      zpisc(jppch,1) =  1.67e-7_wp
129      zpisc(jpnph,1) =  9.57e-8_wp
130      zpisc(jppph,1) =  9.57e-8_wp
131      zpisc(jpndi,1) =  4.24e-7_wp
132      zpisc(jppdi,1) =  4.24e-7_wp
133      zpisc(jppon,1) =  9.57e-8_wp
134      zpisc(jppop,1) =  9.57e-8_wp
135      zpisc(jpdon,1) =  2.04e-5_wp
136      zpisc(jpdop,1) =  2.04e-5_wp
137      zpisc(jpgon,1) =  5.23e-8_wp
138      zpisc(jpgop,1) =  5.23e-8_wp
139
140      !--- Arctic specificities (dissolved inorganic & DOM)
141      zpisc(jpdic,2) =  1.98e-3_wp 
142      zpisc(jpdoc,2) =  6.00e-6_wp 
143      zpisc(jptal,2) =  2.13e-3_wp 
144      zpisc(jpoxy,2) =  3.65e-4_wp 
145      zpisc(jpcal,2) =  1.50e-9_wp 
146      zpisc(jppo4,2) =  4.09e-7_wp / po4r 
147      zpisc(jppoc,2) =  4.05e-7_wp 
148      zpisc(jpgoc,2) =  2.84e-8_wp 
149      zpisc(jpbfe,2) =  7.03e-13_wp 
150      zpisc(jpsil,2) =  6.87e-6_wp 
151      zpisc(jpdsi,2) =  1.73e-7_wp 
152      zpisc(jpgsi,2) =  7.93e-9_wp
153      zpisc(jpphy,2) =  5.25e-7_wp 
154      zpisc(jpdia,2) =  7.75e-7_wp 
155      zpisc(jpzoo,2) =  3.34e-7_wp
156      zpisc(jpmes,2) =  2.49e-7_wp 
157      zpisc(jpfer,2) =  1.43e-9_wp 
158      zpisc(jpsfe,2) =  2.21e-11_wp 
159      zpisc(jpdfe,2) =  2.04e-11_wp 
160      zpisc(jpnfe,2) =  1.75e-11_wp 
161      zpisc(jpnch,2) =  1.46e-07_wp 
162      zpisc(jpdch,2) =  2.36e-07_wp 
163      zpisc(jpno3,2) =  3.51e-06_wp / rno3 
164      zpisc(jpnh4,2) =  6.15e-08_wp / rno3 
165      zpisc(jplgw,2) =  1.0e-9_wp
166
167      ! ln_p5z
168      zpisc(jppic,2) =  5.25e-7_wp
169      zpisc(jpnpi,2) =  5.25e-7_wp
170      zpisc(jpppi,2) =  5.25e-7_wp
171      zpisc(jppfe,2) =  1.75e-11_wp
172      zpisc(jppch,2) =  1.46e-07_wp
173      zpisc(jpnph,2) =  5.25e-7_wp
174      zpisc(jppph,2) =  5.25e-7_wp
175      zpisc(jpndi,2) =  7.75e-7_wp
176      zpisc(jppdi,2) =  7.75e-7_wp
177      zpisc(jppon,2) =  4.05e-7_wp
178      zpisc(jppop,2) =  4.05e-7_wp
179      zpisc(jpdon,2) =  6.00e-6_wp
180      zpisc(jpdop,2) =  6.00e-6_wp
181      zpisc(jpgon,2) =  2.84e-8_wp
182      zpisc(jpgop,2) =  2.84e-8_wp
183
184      !--- Antarctic specificities (dissolved inorganic & DOM)
185      zpisc(jpdic,3) =  2.20e-3_wp 
186      zpisc(jpdoc,3) =  7.02e-6_wp 
187      zpisc(jptal,3) =  2.37e-3_wp 
188      zpisc(jpoxy,3) =  3.42e-4_wp 
189      zpisc(jpcal,3) =  3.17e-9_wp 
190      zpisc(jppo4,3) =  1.88e-6_wp / po4r 
191      zpisc(jppoc,3) =  1.13e-6_wp 
192      zpisc(jpgoc,3) =  2.89e-8_wp 
193      zpisc(jpbfe,3) =  5.63e-13_wp 
194      zpisc(jpsil,3) =  4.96e-5_wp 
195      zpisc(jpdsi,3) =  5.63e-7_wp 
196      zpisc(jpgsi,3) =  5.35e-8_wp
197      zpisc(jpphy,3) =  8.10e-7_wp 
198      zpisc(jpdia,3) =  5.77e-7_wp 
199      zpisc(jpzoo,3) =  6.68e-7_wp
200      zpisc(jpmes,3) =  3.55e-7_wp 
201      zpisc(jpfer,3) =  1.62e-10_wp
202      zpisc(jpsfe,3) =  2.29e-11_wp 
203      zpisc(jpdfe,3) =  8.75e-12_wp
204      zpisc(jpnfe,3) =  1.48e-11_wp 
205      zpisc(jpnch,3) =  2.02e-7_wp 
206      zpisc(jpdch,3) =  1.60e-7_wp 
207      zpisc(jpno3,3) =  2.64e-5_wp / rno3 
208      zpisc(jpnh4,3) =  3.39e-7_wp / rno3 
209      zpisc(jplgw,3) =  1.0e-9_wp
210
211      ! ln_p5z
212      zpisc(jppic,3) =  8.10e-7_wp
213      zpisc(jpnpi,3) =  8.10e-7_wp
214      zpisc(jpppi,3) =  8.10e-7_wp 
215      zpisc(jppfe,3) =  1.48e-11_wp
216      zpisc(jppch,3) =  2.02e-7_wp
217      zpisc(jpnph,3) =  9.57e-8_wp
218      zpisc(jppph,3) =  9.57e-8_wp
219      zpisc(jpndi,3) =  5.77e-7_wp
220      zpisc(jppdi,3) =  5.77e-7_wp
221      zpisc(jppon,3) =  1.13e-6_wp
222      zpisc(jppop,3) =  1.13e-6_wp
223      zpisc(jpdon,3) =  7.02e-6_wp
224      zpisc(jpdop,3) =  7.02e-6_wp
225      zpisc(jpgon,3) =  2.89e-8_wp
226      zpisc(jpgop,3) =  2.89e-8_wp
227
228
229      !--- Baltic Sea particular case for ORCA configurations
230      zpisc(jpdic,4) = 1.14e-3_wp
231      zpisc(jpdoc,4) = 1.06e-5_wp
232      zpisc(jptal,4) = 1.16e-3_wp
233      zpisc(jpoxy,4) = 3.71e-4_wp
234      zpisc(jpcal,4) = 1.51e-9_wp
235      zpisc(jppo4,4) = 2.85e-9_wp / po4r
236      zpisc(jppoc,4) = 4.84e-7_wp
237      zpisc(jpgoc,4) = 1.05e-8_wp
238      zpisc(jpbfe,4) = 4.97e-13_wp
239      zpisc(jpsil,4) = 4.91e-5_wp
240      zpisc(jpdsi,4) = 3.25e-7_wp
241      zpisc(jpgsi,4) = 1.93e-8_wp
242      zpisc(jpphy,4) = 6.64e-7_wp
243      zpisc(jpdia,4) = 3.41e-7_wp
244      zpisc(jpzoo,4) = 3.83e-7_wp
245      zpisc(jpmes,4) = 0.225e-6_wp
246      zpisc(jpfer,4) = 2.45e-9_wp
247      zpisc(jpsfe,4) = 3.89e-11_wp
248      zpisc(jpdfe,4) = 1.33e-11_wp
249      zpisc(jpnfe,4) = 2.62e-11_wp
250      zpisc(jpnch,4) = 1.17e-7_wp
251      zpisc(jpdch,4) = 9.69e-8_wp
252      zpisc(jpno3,4) = 5.36e-5_wp / rno3
253      zpisc(jpnh4,4) = 7.18e-7_wp / rno3
254      zpisc(jplgw,4) = 1.0e-9_wp
255
256      ! ln_p5z
257      zpisc(jppic,4) =  6.64e-7_wp
258      zpisc(jpnpi,4) =  6.64e-7_wp
259      zpisc(jpppi,4) =  6.64e-7_wp
260      zpisc(jppfe,4) =  3.89e-11_wp
261      zpisc(jppch,4) =  1.17e-7_wp
262      zpisc(jpnph,4) =  6.64e-7_wp
263      zpisc(jppph,4) =  6.64e-7_wp
264      zpisc(jpndi,4) =  3.41e-7_wp
265      zpisc(jppdi,4) =  3.41e-7_wp
266      zpisc(jppon,4) =  4.84e-7_wp
267      zpisc(jppop,4) =  4.84e-7_wp
268      zpisc(jpdon,4) =  1.06e-5_wp
269      zpisc(jpdop,4) =  1.06e-5_wp
270      zpisc(jpgon,4) =  1.05e-8_wp
271      zpisc(jpgop,4) =  1.05e-8_wp
272!
273!     ln_ironice and tracers in seaice are redundant. Thus, if tracers in ice
274!     is activated, ln_ironice should be set to false
275!     ------------------------------------------------------------------------
276      IF( nn_ice_tr /= 0 .AND. ln_ironice ) THEN
277         IF(lwp) THEN
278            WRITE(numout,*) '   ==>>>   ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr
279            WRITE(numout,*) '           Specify your sea ice iron concentration in nampisice instead '
280            WRITE(numout,*) '           ln_ironice is forced to .FALSE. '
281         ENDIF
282         ln_ironice = .FALSE.
283      ENDIF
284!
285      DO jn = jp_pcs0, jp_pcs1
286         IF( cn_trc_o(jn) == 'GL ' ) trc_o(:,:,jn) = zpisc(jn,1)  ! Global case
287         IF( cn_trc_o(jn) == 'AA ' ) THEN
288            WHERE( gphit(:,:) >= 0._wp ) ; trc_o(:,:,jn) = zpisc(jn,2) ; END WHERE ! Arctic
289            WHERE( gphit(:,:) <  0._wp ) ; trc_o(:,:,jn) = zpisc(jn,3) ; END WHERE ! Antarctic
290         ENDIF
291         IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN     !  Baltic Sea particular case for ORCA configurations
292             WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
293                    54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
294                    trc_o(:,:,jn) = zpisc(jn,4)
295            END WHERE
296         ENDIF
297      ENDDO
298
299
300
301      !-----------------------------
302      ! Assign ice-ocean cc ratios
303      !-----------------------------
304      ! 0 means zero concentration in sea ice
305      ! 1 means same concentration in the sea ice as in the ocean
306
307      ! Ice ocean salinity ratio
308      zsoce_bal   = 4. ; zsice_bal   = 2. !! Baltic ocean and sea ice salinities
309      zrs(1) = sice / soce                !! ice-ocean salinity ratio, global case
310      zrs(2) = zsice_bal / zsoce_bal      !! ice-ocean salinity ratio, Baltic case
311
312      DO jn = jp_pcs0, jp_pcs1
313         IF( trc_ice_ratio(jn) >= 0._wp )  zratio(jn,:) = trc_ice_ratio(jn)
314         IF( trc_ice_ratio(jn) == -1._wp ) zratio(jn,:) = zrs(:)
315         IF( trc_ice_ratio(jn) == -2._wp ) zratio(jn,:) = -9999.99_wp
316      END DO
317
318      !-------------------------------
319      ! Sea ice tracer concentrations
320      !-------------------------------
321      DO jn = jp_pcs0, jp_pcs1
322         !-- Everywhere but in the Baltic
323         IF ( trc_ice_ratio(jn) >= -1._wp ) THEN ! no prescribed conc. ; typically everything but iron)
324            trc_i(:,:,jn) = zratio(jn,1) * trc_o(:,:,jn) 
325         ELSE                                    ! prescribed concentration
326            trc_i(:,:,jn) = trc_ice_prescr(jn)
327         ENDIF
328         !-- Baltic
329         IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN     
330            IF ( trc_ice_ratio(jn) >= - 1._wp ) THEN ! no prescribed conc. ; typically everything but iron)
331               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
332                      54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
333                     trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 
334               END WHERE
335            ENDIF
336         ENDIF
337      !
338      END DO ! jn
339      !
340   END SUBROUTINE p4z_ice_ini
341
342   SUBROUTINE p2z_ice_ini
343      !!----------------------------------------------------------------------
344      !!                   ***  ROUTINE p2z_ice_ini ***
345      !!
346      !! ** Purpose :   Initialisation of the LOBSTER biochemical model
347      !!----------------------------------------------------------------------
348   END SUBROUTINE p2z_ice_ini
349
350
351   !!======================================================================
352END MODULE trcice_pisces
Note: See TracBrowser for help on using the repository browser.