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.
trcice_pisces.F90 in branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES – NEMO

source: branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90 @ 6453

Last change on this file since 6453 was 6453, checked in by aumont, 8 years ago

New developments of PISCES (QUOTA, ligands, lability, ...)

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