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/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/PISCES – NEMO

source: branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90 @ 5195

Last change on this file since 5195 was 5195, checked in by vancop, 9 years ago

sette modifs 2

File size: 22.3 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 p4zsbc
23   USE in_out_manager
24
25   IMPLICIT NONE
26   PRIVATE
27
28   PUBLIC   trc_ice_ini_pisces ! called by trcini.F90 module
29
30CONTAINS
31
32   SUBROUTINE trc_ice_ini_pisces
33      !!----------------------------------------------------------------------
34      !!                   ***  ROUTINE trc_ice_ini_pisces ***
35      !!
36      !! ** Purpose :   PISCES fake sea ice model setting
37      !!    Method  :   Assign prescribe values to tracer concentrations in sea ice
38      !!
39      !! For levitating sea ice, constant ocean tracer concentrations also have to be defined.
40      !! This is done specifically for Global, Arctic, Antarctic and Baltic regions
41      !!
42      !! Sea ice concentrations are by default prescribed as follows
43      !!  trc_i = zratio * trc_o
44      !!
45      !! This formulation is modulated by the namelist parameter trc_ice_ratio
46      !!
47      !! trc_ice_ratio  * betw 0 and 1: prescribed ice/ocean tracer concentration ratio
48      !!                * -1 => the ice-ocean tracer concentration ratio follows the
49      !!                         ice-ocean salinity ratio
50      !!                * -2 => no ice-ocean tracer concentration is used
51      !!                        instead, the tracer concentration in sea ice
52      !!                        is prescribed to trc_ice_prescr
53      !!
54      !! cn_trc_o  specifies which disinctions are made for prescribed tracer concentration
55      !!                * 'GL' use global ocean values making distinction for Baltic Sea only
56      !!                * 'AA' use Arctic/Antarctic contrasted values, + Baltic
57      !!
58      !!----------------------------------------------------------------------
59
60      ! --- Variable declarations --- !
61      TYPE TRC_I_NML                    !--- Ice tracer namelist structure
62         REAL(wp)         :: trc_ratio  ! ice-ocean trc ratio
63         REAL(wp)         :: trc_prescr ! prescribed ice trc cc
64         CHARACTER(len=2) :: ctrc_o     ! choice of ocean trc cc
65      END TYPE
66
67                                        !--- Variables extracted from the
68                                        !    namelist
69      REAL(wp), DIMENSION(24)         :: trc_ice_ratio, & ! ice-ocean tracer ratio
70                                         trc_ice_prescr   ! prescribed ice trc cc
71      CHARACTER(len=2), DIMENSION(24) :: cn_trc_o ! choice of ocean tracer cc
72
73                                        !--- Dummy variables
74      REAL(wp), DIMENSION(jptra,2) &
75               ::  zratio            ! effective ice-ocean tracer cc ratio
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      ! --- Namelist declarations --- !
86
87      ! Tracer structures for individual tracers
88      TYPE(TRC_I_NML) :: sn_tri_dic, sn_tri_doc, sn_tri_tal, sn_tri_oxy, &
89                     sn_tri_cal, sn_tri_po4, sn_tri_poc, sn_tri_goc, &
90                     sn_tri_bfe, &
91                     sn_tri_num, &
92                                 sn_tri_sil, sn_tri_dsi, sn_tri_gsi, &
93                     sn_tri_phy, sn_tri_dia, sn_tri_zoo, sn_tri_mes, &
94                     sn_tri_fer, sn_tri_sfe, sn_tri_dfe, sn_tri_nfe, &
95                     sn_tri_nch, sn_tri_dch, sn_tri_no3, sn_tri_nh4
96
97     
98      NAMELIST/nampisice/ sn_tri_dic, sn_tri_doc, sn_tri_tal, sn_tri_oxy, &
99                          sn_tri_cal, sn_tri_po4, sn_tri_poc, sn_tri_goc, &
100                          sn_tri_bfe, &
101                          sn_tri_num, &
102                                      sn_tri_sil, sn_tri_dsi, sn_tri_gsi, &
103                          sn_tri_phy, sn_tri_dia, sn_tri_zoo, sn_tri_mes, &
104                          sn_tri_fer, sn_tri_sfe, sn_tri_dfe, sn_tri_nfe, &
105                          sn_tri_nch, sn_tri_dch, sn_tri_no3, sn_tri_nh4
106
107      !!----------------------------------------------------------------------
108
109      IF(lwp) WRITE(numout,*)
110      IF(lwp) WRITE(numout,*) ' trc_ice_ini_pisces: Prescribed sea ice biogeochemistry '
111      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~'
112
113      !--------------------------------------------
114      ! Read namelist
115      !--------------------------------------------
116
117      REWIND( numnatp_ref )
118      READ( numnatp_ref, nampisice )
119
120      REWIND( numnatp_cfg )
121      READ( numnatp_cfg, nampisice )
122
123      ! Assign namelist stuff
124      trc_ice_ratio(jpdic)  = sn_tri_dic%trc_ratio 
125      trc_ice_prescr(jpdic) = sn_tri_dic%trc_prescr
126      cn_trc_o      (jpdic) = sn_tri_dic%ctrc_o
127
128      trc_ice_ratio(jpdoc)  = sn_tri_doc%trc_ratio 
129      trc_ice_prescr(jpdoc) = sn_tri_doc%trc_prescr
130      cn_trc_o      (jpdoc) = sn_tri_doc%ctrc_o
131
132      trc_ice_ratio(jptal)  = sn_tri_tal%trc_ratio 
133      trc_ice_prescr(jptal) = sn_tri_tal%trc_prescr
134      cn_trc_o      (jptal) = sn_tri_tal%ctrc_o
135
136      trc_ice_ratio(jpoxy)  = sn_tri_oxy%trc_ratio 
137      trc_ice_prescr(jpoxy) = sn_tri_oxy%trc_prescr
138      cn_trc_o      (jpoxy) = sn_tri_oxy%ctrc_o
139
140      trc_ice_ratio(jpcal)  = sn_tri_cal%trc_ratio 
141      trc_ice_prescr(jpcal) = sn_tri_cal%trc_prescr
142      cn_trc_o      (jpcal) = sn_tri_cal%ctrc_o
143
144      trc_ice_ratio(jppo4)  = sn_tri_po4%trc_ratio 
145      trc_ice_prescr(jppo4) = sn_tri_po4%trc_prescr
146      cn_trc_o      (jppo4) = sn_tri_po4%ctrc_o
147
148      trc_ice_ratio(jppoc)  = sn_tri_poc%trc_ratio 
149      trc_ice_prescr(jppoc) = sn_tri_poc%trc_prescr
150      cn_trc_o      (jppoc) = sn_tri_poc%ctrc_o
151
152#if ! defined key_kriest
153      trc_ice_ratio(jpgoc)  = sn_tri_goc%trc_ratio 
154      trc_ice_prescr(jpgoc) = sn_tri_goc%trc_prescr
155      cn_trc_o      (jpgoc) = sn_tri_goc%ctrc_o
156
157      trc_ice_ratio(jpbfe)  = sn_tri_bfe%trc_ratio 
158      trc_ice_prescr(jpbfe) = sn_tri_bfe%trc_prescr
159      cn_trc_o      (jpbfe) = sn_tri_bfe%ctrc_o
160#else
161      trc_ice_ratio(jpnum)  = sn_tri_num%trc_ratio 
162      trc_ice_prescr(jpnum) = sn_tri_num%trc_prescr
163      cn_trc_o      (jpnum) = sn_tri_num%ctrc_o
164#endif
165
166      trc_ice_ratio(jpsil)  = sn_tri_sil%trc_ratio 
167      trc_ice_prescr(jpsil) = sn_tri_sil%trc_prescr
168      cn_trc_o      (jpsil) = sn_tri_sil%ctrc_o
169
170      trc_ice_ratio(jpdsi)  = sn_tri_dsi%trc_ratio 
171      trc_ice_prescr(jpdsi) = sn_tri_dsi%trc_prescr
172      cn_trc_o      (jpdsi) = sn_tri_dsi%ctrc_o
173
174      trc_ice_ratio(jpgsi)  = sn_tri_gsi%trc_ratio 
175      trc_ice_prescr(jpgsi) = sn_tri_gsi%trc_prescr
176      cn_trc_o      (jpgsi) = sn_tri_gsi%ctrc_o
177
178      trc_ice_ratio(jpphy)  = sn_tri_phy%trc_ratio 
179      trc_ice_prescr(jpphy) = sn_tri_phy%trc_prescr
180      cn_trc_o      (jpphy) = sn_tri_phy%ctrc_o
181
182      trc_ice_ratio(jpdia)  = sn_tri_dia%trc_ratio 
183      trc_ice_prescr(jpdia) = sn_tri_dia%trc_prescr
184      cn_trc_o      (jpdia) = sn_tri_dia%ctrc_o
185
186      trc_ice_ratio(jpzoo)  = sn_tri_zoo%trc_ratio 
187      trc_ice_prescr(jpzoo) = sn_tri_zoo%trc_prescr
188      cn_trc_o      (jpzoo) = sn_tri_zoo%ctrc_o
189
190      trc_ice_ratio(jpmes)  = sn_tri_mes%trc_ratio 
191      trc_ice_prescr(jpmes) = sn_tri_mes%trc_prescr
192      cn_trc_o      (jpmes) = sn_tri_mes%ctrc_o
193
194      trc_ice_ratio(jpfer)  = sn_tri_fer%trc_ratio 
195      trc_ice_prescr(jpfer) = sn_tri_fer%trc_prescr
196      cn_trc_o      (jpfer) = sn_tri_fer%ctrc_o
197
198      trc_ice_ratio(jpsfe)  = sn_tri_sfe%trc_ratio 
199      trc_ice_prescr(jpsfe) = sn_tri_sfe%trc_prescr
200      cn_trc_o      (jpsfe) = sn_tri_sfe%ctrc_o
201
202      trc_ice_ratio(jpdfe)  = sn_tri_dfe%trc_ratio 
203      trc_ice_prescr(jpdfe) = sn_tri_dfe%trc_prescr
204      cn_trc_o      (jpdfe) = sn_tri_dfe%ctrc_o
205
206      trc_ice_ratio(jpnfe)  = sn_tri_nfe%trc_ratio 
207      trc_ice_prescr(jpnfe) = sn_tri_nfe%trc_prescr
208      cn_trc_o      (jpnfe) = sn_tri_nfe%ctrc_o
209
210      trc_ice_ratio(jpnch)  = sn_tri_nch%trc_ratio 
211      trc_ice_prescr(jpnch) = sn_tri_nch%trc_prescr
212      cn_trc_o      (jpnch) = sn_tri_nch%ctrc_o
213
214      trc_ice_ratio(jpdch)  = sn_tri_dch%trc_ratio 
215      trc_ice_prescr(jpdch) = sn_tri_dch%trc_prescr
216      cn_trc_o      (jpdch) = sn_tri_dch%ctrc_o
217
218      trc_ice_ratio(jpno3)  = sn_tri_no3%trc_ratio 
219      trc_ice_prescr(jpno3) = sn_tri_no3%trc_prescr
220      cn_trc_o      (jpno3) = sn_tri_no3%ctrc_o
221
222      trc_ice_ratio(jpnh4)  = sn_tri_nh4%trc_ratio 
223      trc_ice_prescr(jpnh4) = sn_tri_nh4%trc_prescr
224      cn_trc_o      (jpnh4) = sn_tri_nh4%ctrc_o
225
226      !--------------------------------------------
227      ! Initialize ocean prescribed concentrations
228      !--------------------------------------------
229      ! values taken from a 500 yr equilibrium run
230      ! used only in the levitating sea ice case with virtual salt / tracer
231      ! fluxes
232
233      !--- Global case
234      IF ( cn_trc_o(jpdic) == 'GL ' ) trc_o(:,:,jpdic) =  1.99e-3_wp 
235      IF ( cn_trc_o(jpdoc) == 'GL ' ) trc_o(:,:,jpdoc) =  2.04e-5_wp 
236      IF ( cn_trc_o(jptal) == 'GL ' ) trc_o(:,:,jptal) =  2.31e-3_wp 
237      IF ( cn_trc_o(jpoxy) == 'GL ' ) trc_o(:,:,jpoxy) =  2.47e-4_wp
238      IF ( cn_trc_o(jpcal) == 'GL ' ) trc_o(:,:,jpcal) =  1.04e-8_wp
239      IF ( cn_trc_o(jppo4) == 'GL ' ) trc_o(:,:,jppo4) =  5.77e-7_wp / po4r 
240      IF ( cn_trc_o(jppoc) == 'GL ' ) trc_o(:,:,jppoc) =  1.27e-6_wp 
241#  if ! defined key_kriest
242      IF ( cn_trc_o(jpgoc) == 'GL ' ) trc_o(:,:,jpgoc) =  5.23e-8_wp 
243      IF ( cn_trc_o(jpbfe) == 'GL ' ) trc_o(:,:,jpbfe) =  9.84e-13_wp 
244#  else
245      IF ( cn_trc_o(jpnum) == 'GL ' ) trc_o(:,:,jpnum) = 0. ! could not get this value since did not use it
246#  endif
247      IF ( cn_trc_o(jpsil) == 'GL ' ) trc_o(:,:,jpsil) =  7.36e-6_wp 
248      IF ( cn_trc_o(jpdsi) == 'GL ' ) trc_o(:,:,jpdsi) =  1.07e-7_wp 
249      IF ( cn_trc_o(jpgsi) == 'GL ' ) trc_o(:,:,jpgsi) =  1.53e-8_wp
250      IF ( cn_trc_o(jpphy) == 'GL ' ) trc_o(:,:,jpphy) =  9.57e-8_wp
251      IF ( cn_trc_o(jpdia) == 'GL ' ) trc_o(:,:,jpdia) =  4.24e-7_wp
252      IF ( cn_trc_o(jpzoo) == 'GL ' ) trc_o(:,:,jpzoo) =  6.07e-7_wp
253      IF ( cn_trc_o(jpmes) == 'GL ' ) trc_o(:,:,jpmes) =  3.44e-7_wp
254      IF ( cn_trc_o(jpfer) == 'GL ' ) trc_o(:,:,jpfer) =  4.06e-10_wp
255      IF ( cn_trc_o(jpsfe) == 'GL ' ) trc_o(:,:,jpsfe) =  2.51e-11_wp
256      IF ( cn_trc_o(jpdfe) == 'GL ' ) trc_o(:,:,jpdfe) =  6.57e-12_wp
257      IF ( cn_trc_o(jpnfe) == 'GL ' ) trc_o(:,:,jpnfe) =  1.76e-11_wp
258      IF ( cn_trc_o(jpnch) == 'GL ' ) trc_o(:,:,jpnch) =  1.67e-7_wp
259      IF ( cn_trc_o(jpdch) == 'GL ' ) trc_o(:,:,jpdch) =  1.02e-7_wp
260      IF ( cn_trc_o(jpno3) == 'GL ' ) trc_o(:,:,jpno3) =  5.79e-6_wp / rno3 
261      IF ( cn_trc_o(jpnh4) == 'GL ' ) trc_o(:,:,jpnh4) =  3.22e-7_wp / rno3
262
263      !--- Arctic specificities (dissolved inorganic & DOM)
264      IF ( cn_trc_o(jpdic) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdic) =  1.98e-3_wp  ; END WHERE ; ENDIF
265      IF ( cn_trc_o(jpdoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdoc) =  6.00e-6_wp  ; END WHERE ; ENDIF
266      IF ( cn_trc_o(jptal) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jptal) =  2.13e-3_wp  ; END WHERE ; ENDIF
267      IF ( cn_trc_o(jpoxy) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpoxy) =  3.65e-4_wp  ; END WHERE ; ENDIF
268      IF ( cn_trc_o(jpcal) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpcal) =  1.50e-9_wp  ; END WHERE ; ENDIF
269      IF ( cn_trc_o(jppo4) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jppo4) =  4.09e-7_wp / po4r ; END WHERE ; ENDIF
270      IF ( cn_trc_o(jppoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jppoc) =  4.05e-7_wp  ; END WHERE ; ENDIF
271#  if ! defined key_kriest
272      IF ( cn_trc_o(jpgoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpgoc) =  2.84e-8_wp  ; END WHERE ; ENDIF
273      IF ( cn_trc_o(jpbfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpbfe) =  7.03e-13_wp ; END WHERE ; ENDIF
274#  else
275      IF ( cn_trc_o(jpnum) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnum) =  0.00e-00_wp ; END WHERE ; ENDIF
276#  endif
277      IF ( cn_trc_o(jpsil) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpsil) =  6.87e-6_wp  ; END WHERE ; ENDIF
278      IF ( cn_trc_o(jpdsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdsi) =  1.73e-7_wp  ; END WHERE ; ENDIF
279      IF ( cn_trc_o(jpgsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpgsi) =  7.93e-9_wp  ; END WHERE ; ENDIF
280      IF ( cn_trc_o(jpphy) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpphy) =  5.25e-7_wp  ; END WHERE ; ENDIF
281      IF ( cn_trc_o(jpdia) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdia) =  7.75e-7_wp  ; END WHERE ; ENDIF
282      IF ( cn_trc_o(jpzoo) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpzoo) =  3.34e-7_wp  ; END WHERE ; ENDIF
283      IF ( cn_trc_o(jpmes) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpmes) =  2.49e-7_wp  ; END WHERE ; ENDIF
284      IF ( cn_trc_o(jpfer) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpfer) =  1.43e-9_wp  ; END WHERE ; ENDIF
285      IF ( cn_trc_o(jpsfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpsfe) =  2.21e-11_wp ; END WHERE ; ENDIF
286      IF ( cn_trc_o(jpdfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdfe) =  2.04e-11_wp ; END WHERE ; ENDIF
287      IF ( cn_trc_o(jpnfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnfe) =  1.75e-11_wp ; END WHERE ; ENDIF
288      IF ( cn_trc_o(jpnch) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnch) =  1.46e-07_wp ; END WHERE ; ENDIF
289      IF ( cn_trc_o(jpdch) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdch) =  2.36e-07_wp ; END WHERE ; ENDIF
290      IF ( cn_trc_o(jpno3) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpno3) =  3.51e-06_wp / rno3 ; END WHERE ; ENDIF
291      IF ( cn_trc_o(jpnh4) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnh4) =  6.15e-08_wp / rno3 ; END WHERE ; ENDIF
292
293      !--- Antarctic specificities (dissolved inorganic & DOM)
294      IF ( cn_trc_o(jpdic) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdic) =  2.20e-3_wp  ; END WHERE ; ENDIF
295      IF ( cn_trc_o(jpdoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdoc) =  7.02e-6_wp  ; END WHERE ; ENDIF
296      IF ( cn_trc_o(jptal) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jptal) =  2.37e-3_wp  ; END WHERE ; ENDIF
297      IF ( cn_trc_o(jpoxy) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpoxy) =  3.42e-4_wp  ; END WHERE ; ENDIF
298      IF ( cn_trc_o(jpcal) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpcal) =  3.17e-9_wp  ; END WHERE ; ENDIF
299      IF ( cn_trc_o(jppo4) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jppo4) =  1.88e-6_wp / po4r  ; END WHERE ; ENDIF
300      IF ( cn_trc_o(jppoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jppoc) =  1.13e-6_wp  ; END WHERE ; ENDIF
301#  if ! defined key_kriest
302      IF ( cn_trc_o(jpgoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpgoc) =  2.89e-8_wp  ; END WHERE ; ENDIF
303      IF ( cn_trc_o(jpbfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpbfe) =  5.63e-13_wp ; END WHERE ; ENDIF
304#  else
305      IF ( cn_trc_o(jpnum) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnum) =  0.00e-00_wp ; END WHERE ; ENDIF
306#  endif
307      IF ( cn_trc_o(jpsil) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpsil) =  4.96e-5_wp  ; END WHERE ; ENDIF
308      IF ( cn_trc_o(jpdsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdsi) =  5.63e-7_wp  ; END WHERE ; ENDIF
309      IF ( cn_trc_o(jpgsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpgsi) =  5.35e-8_wp  ; END WHERE ; ENDIF
310      IF ( cn_trc_o(jpphy) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpphy) =  8.10e-7_wp  ; END WHERE ; ENDIF
311      IF ( cn_trc_o(jpdia) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdia) =  5.77e-7_wp  ; END WHERE ; ENDIF
312      IF ( cn_trc_o(jpzoo) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpzoo) =  6.68e-7_wp  ; END WHERE ; ENDIF
313      IF ( cn_trc_o(jpmes) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpmes) =  3.55e-7_wp  ; END WHERE ; ENDIF
314      IF ( cn_trc_o(jpfer) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpfer) =  1.62e-10_wp ; END WHERE ; ENDIF
315      IF ( cn_trc_o(jpsfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpsfe) =  2.29e-11_wp ; END WHERE ; ENDIF
316      IF ( cn_trc_o(jpdfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdfe) =  8.75e-12_wp ; END WHERE ; ENDIF
317      IF ( cn_trc_o(jpnfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnfe) =  1.48e-11_wp ; END WHERE ; ENDIF
318      IF ( cn_trc_o(jpnch) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnch) =  2.02e-7_wp  ; END WHERE ; ENDIF
319      IF ( cn_trc_o(jpdch) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdch) =  1.60e-7_wp  ; END WHERE ; ENDIF
320      IF ( cn_trc_o(jpno3) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpno3) =  2.64e-5_wp / rno3  ; END WHERE ; ENDIF
321      IF ( cn_trc_o(jpnh4) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnh4) =  3.39e-7_wp / rno3  ; END WHERE ; ENDIF
322
323      !--- Baltic Sea particular case for ORCA configurations
324      IF( cp_cfg == "orca" ) THEN            ! Baltic mask
325         WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
326                54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
327         trc_o(:,:,jpdic) = 1.14e-3_wp
328         trc_o(:,:,jpdoc) = 1.06e-5_wp
329         trc_o(:,:,jptal) = 1.16e-3_wp
330         trc_o(:,:,jpoxy) = 3.71e-4_wp
331         trc_o(:,:,jpcal) = 1.51e-9_wp
332         trc_o(:,:,jppo4) = 2.85e-9_wp / po4r
333         trc_o(:,:,jppoc) = 4.84e-7_wp
334#  if ! defined key_kriest
335         trc_o(:,:,jpgoc) = 1.05e-8_wp
336         trc_o(:,:,jpbfe) = 4.97e-13_wp
337#  else
338         trc_o(:,:,jpnum) = 0. ! could not get this value
339#  endif
340         trc_o(:,:,jpsil) = 4.91e-5_wp
341         trc_o(:,:,jpdsi) = 3.25e-7_wp
342         trc_o(:,:,jpgsi) = 1.93e-8_wp
343         trc_o(:,:,jpphy) = 6.64e-7_wp
344         trc_o(:,:,jpdia) = 3.41e-7_wp
345         trc_o(:,:,jpzoo) = 3.83e-7_wp
346         trc_o(:,:,jpmes) = 0.225e-6_wp
347         trc_o(:,:,jpfer) = 2.45e-9_wp
348         trc_o(:,:,jpsfe) = 3.89e-11_wp
349         trc_o(:,:,jpdfe) = 1.33e-11_wp
350         trc_o(:,:,jpnfe) = 2.62e-11_wp
351         trc_o(:,:,jpnch) = 1.17e-7_wp
352         trc_o(:,:,jpdch) = 9.69e-8_wp
353         trc_o(:,:,jpno3) = 5.36e-5_wp / rno3
354         trc_o(:,:,jpnh4) = 7.18e-7_wp / rno3
355         END WHERE
356      ENDIF ! cfg
357
358      !-----------------------------
359      ! Assign ice-ocean cc ratios
360      !-----------------------------
361      ! 0 means zero concentration in sea ice
362      ! 1 means same concentration in the sea ice as in the ocean
363
364      ! Ice ocean salinity ratio
365      zsoce_bal   = 4. ; zsice_bal   = 2. !! Baltic ocean and sea ice salinities
366      zrs(1) = sice / soce                !! ice-ocean salinity ratio, global case
367      zrs(2) = zsice_bal / zsoce_bal      !! ice-ocean salinity ratio, Baltic case
368
369      DO jn = 1, jptra
370         IF ( trc_ice_ratio(jn) >= 0._wp )  zratio(jn,:) = trc_ice_ratio(jn)
371         IF ( trc_ice_ratio(jn) == -1._wp ) zratio(jn,:) = zrs(:)
372         IF ( trc_ice_ratio(jn) == -2._wp ) zratio(jn,:) = -9999.99_wp
373      END DO
374
375      !-------------------------------
376      ! Sea ice tracer concentrations
377      !-------------------------------
378      DO jn = 1, jptra
379         !-- Everywhere but in the Baltic
380         IF ( trc_ice_ratio(jn) >= -1._wp ) THEN !! no prescribed concentration
381                                              !! (typically everything but iron)
382            trc_i(:,:,jn) = zratio(jn,1) * trc_o(:,:,jn) 
383         ELSE                                 !! prescribed concentration
384            trc_i(:,:,jn) = trc_ice_prescr(jn)
385         ENDIF
386       
387         !-- Baltic
388         IF( cp_cfg == "orca" ) THEN !! Baltic treated seperately for ORCA configs
389            IF ( trc_ice_ratio(jn) >= - 1._wp ) THEN !! no prescribed concentration
390                                                 !! (typically everything but iron)
391               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
392                      54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
393                  trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 
394               END WHERE
395            ELSE                                 !! prescribed tracer concentration in ice
396               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
397                   54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
398                  trc_i(:,:,jn) = trc_ice_prescr(jn)
399               END WHERE
400            ENDIF ! trc_ice_ratio
401         ENDIF
402      !
403      END DO ! jn
404
405   END SUBROUTINE trc_ice_ini_pisces
406
407#else
408   !!----------------------------------------------------------------------
409   !!   Dummy module                            No PISCES biochemical model
410   !!----------------------------------------------------------------------
411CONTAINS
412   SUBROUTINE trc_ice_ini_pisces         ! Empty routine
413   END SUBROUTINE trc_ice_ini_pisces
414#endif
415
416   !!======================================================================
417END MODULE trcice_pisces
Note: See TracBrowser for help on using the repository browser.