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 @ 8003

Last change on this file since 8003 was 8003, checked in by aumont, 7 years ago

modification in the code to remove unnecessary parts such as kriest and non iomput options

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