source: NEMO/releases/release-4.0/src/TOP/PISCES/trcice_pisces.F90 @ 10780

Last change on this file since 10780 was 10780, checked in by aumont, 19 months ago

bug fixes corresponding to tickets #2262

  • Property svn:keywords set to Id
File size: 13.8 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!     ln_ironice and tracers in seaice are redundant. Thus, if tracers in ice
270!     is activated, ln_ironice should be set to false
271!     ------------------------------------------------------------------------
272      IF( nn_ice_tr >= 0 .AND. ln_ironice ) THEN
273         IF(lwp) THEN
274            WRITE(numout,*) '   ==>>>   ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr
275            WRITE(numout,*) '           Specify your sea ice iron concentration in nampisice instead '
276            WRITE(numout,*) '           ln_ironice is forced to .FALSE. '
277         ENDIF
278         ln_ironice = .FALSE.
279      ENDIF
280!
281      DO jn = jp_pcs0, jp_pcs1
282         IF( cn_trc_o(jn) == 'GL ' ) trc_o(:,:,jn) = zpisc(jn,1)  ! Global case
283         IF( cn_trc_o(jn) == 'AA ' ) THEN
284            WHERE( gphit(:,:) >= 0._wp ) ; trc_o(:,:,jn) = zpisc(jn,2) ; END WHERE ! Arctic
285            WHERE( gphit(:,:) <  0._wp ) ; trc_o(:,:,jn) = zpisc(jn,3) ; END WHERE ! Antarctic
286         ENDIF
287         IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN     !  Baltic Sea particular case for ORCA configurations
288             WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
289                    54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
290                    trc_o(:,:,jn) = zpisc(jn,4)
291            END WHERE
292         ENDIF
293      ENDDO
294
295
296
297      !-----------------------------
298      ! Assign ice-ocean cc ratios
299      !-----------------------------
300      ! 0 means zero concentration in sea ice
301      ! 1 means same concentration in the sea ice as in the ocean
302
303      ! Ice ocean salinity ratio
304      zsoce_bal   = 4. ; zsice_bal   = 2. !! Baltic ocean and sea ice salinities
305      zrs(1) = sice / soce                !! ice-ocean salinity ratio, global case
306      zrs(2) = zsice_bal / zsoce_bal      !! ice-ocean salinity ratio, Baltic case
307
308      DO jn = jp_pcs0, jp_pcs1
309         IF( trc_ice_ratio(jn) >= 0._wp )  zratio(jn,:) = trc_ice_ratio(jn)
310         IF( trc_ice_ratio(jn) == -1._wp ) zratio(jn,:) = zrs(:)
311         IF( trc_ice_ratio(jn) == -2._wp ) zratio(jn,:) = -9999.99_wp
312      END DO
313
314      !-------------------------------
315      ! Sea ice tracer concentrations
316      !-------------------------------
317      DO jn = jp_pcs0, jp_pcs1
318         !-- Everywhere but in the Baltic
319         IF ( trc_ice_ratio(jn) >= -1._wp ) THEN ! no prescribed conc. ; typically everything but iron)
320            trc_i(:,:,jn) = zratio(jn,1) * trc_o(:,:,jn) 
321         ELSE                                    ! prescribed concentration
322            trc_i(:,:,jn) = trc_ice_prescr(jn)
323         ENDIF
324         !-- Baltic
325         IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN     
326            IF ( trc_ice_ratio(jn) >= - 1._wp ) THEN ! no prescribed conc. ; typically everything but iron)
327               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
328                      54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
329                     trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 
330               END WHERE
331            ENDIF
332         ENDIF
333      !
334      END DO ! jn
335      !
336   END SUBROUTINE p4z_ice_ini
337
338   SUBROUTINE p2z_ice_ini
339      !!----------------------------------------------------------------------
340      !!                   ***  ROUTINE p2z_ice_ini ***
341      !!
342      !! ** Purpose :   Initialisation of the LOBSTER biochemical model
343      !!----------------------------------------------------------------------
344   END SUBROUTINE p2z_ice_ini
345
346
347   !!======================================================================
348END MODULE trcice_pisces
Note: See TracBrowser for help on using the repository browser.