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

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

A few cosmetic changes before SETTE

File size: 22.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   !! 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 => tracer concentration in sea ice is prescribed and
51      !!                        trc_ice_prescr is used
52      !!
53      !! cn_trc_o          specifies which prescribed tracer concentration
54      !!                   should be used
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, IOSTAT = ios, ERR = 901 )
119901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisice in reference namelist', lwp )
120
121      REWIND( numnatp_cfg )
122      READ( numnatp_cfg, nampisice, IOSTAT = ios, ERR = 902 )
123902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisice in configuration namelist', lwp )
124
125      ! Assign namelist stuff
126      trc_ice_ratio(jpdic)  = sn_tri_dic%trc_ratio 
127      trc_ice_prescr(jpdic) = sn_tri_dic%trc_prescr
128      cn_trc_o      (jpdic) = sn_tri_dic%ctrc_o
129
130      trc_ice_ratio(jpdoc)  = sn_tri_doc%trc_ratio 
131      trc_ice_prescr(jpdoc) = sn_tri_doc%trc_prescr
132      cn_trc_o      (jpdoc) = sn_tri_doc%ctrc_o
133
134      trc_ice_ratio(jptal)  = sn_tri_tal%trc_ratio 
135      trc_ice_prescr(jptal) = sn_tri_tal%trc_prescr
136      cn_trc_o      (jptal) = sn_tri_tal%ctrc_o
137
138      trc_ice_ratio(jpoxy)  = sn_tri_oxy%trc_ratio 
139      trc_ice_prescr(jpoxy) = sn_tri_oxy%trc_prescr
140      cn_trc_o      (jpoxy) = sn_tri_oxy%ctrc_o
141
142      trc_ice_ratio(jpcal)  = sn_tri_cal%trc_ratio 
143      trc_ice_prescr(jpcal) = sn_tri_cal%trc_prescr
144      cn_trc_o      (jpcal) = sn_tri_cal%ctrc_o
145
146      trc_ice_ratio(jppo4)  = sn_tri_po4%trc_ratio 
147      trc_ice_prescr(jppo4) = sn_tri_po4%trc_prescr
148      cn_trc_o      (jppo4) = sn_tri_po4%ctrc_o
149
150      trc_ice_ratio(jppoc)  = sn_tri_poc%trc_ratio 
151      trc_ice_prescr(jppoc) = sn_tri_poc%trc_prescr
152      cn_trc_o      (jppoc) = sn_tri_poc%ctrc_o
153
154#if ! defined key_kriest
155      trc_ice_ratio(jpgoc)  = sn_tri_goc%trc_ratio 
156      trc_ice_prescr(jpgoc) = sn_tri_goc%trc_prescr
157      cn_trc_o      (jpgoc) = sn_tri_goc%ctrc_o
158
159      trc_ice_ratio(jpbfe)  = sn_tri_bfe%trc_ratio 
160      trc_ice_prescr(jpbfe) = sn_tri_bfe%trc_prescr
161      cn_trc_o      (jpbfe) = sn_tri_bfe%ctrc_o
162#else
163      trc_ice_ratio(jpnum)  = sn_tri_num%trc_ratio 
164      trc_ice_prescr(jpnum) = sn_tri_num%trc_prescr
165      cn_trc_o      (jpnum) = sn_tri_num%ctrc_o
166#endif
167
168      trc_ice_ratio(jpsil)  = sn_tri_sil%trc_ratio 
169      trc_ice_prescr(jpsil) = sn_tri_sil%trc_prescr
170      cn_trc_o      (jpsil) = sn_tri_sil%ctrc_o
171
172      trc_ice_ratio(jpdsi)  = sn_tri_dsi%trc_ratio 
173      trc_ice_prescr(jpdsi) = sn_tri_dsi%trc_prescr
174      cn_trc_o      (jpdsi) = sn_tri_dsi%ctrc_o
175
176      trc_ice_ratio(jpgsi)  = sn_tri_gsi%trc_ratio 
177      trc_ice_prescr(jpgsi) = sn_tri_gsi%trc_prescr
178      cn_trc_o      (jpgsi) = sn_tri_gsi%ctrc_o
179
180      trc_ice_ratio(jpphy)  = sn_tri_phy%trc_ratio 
181      trc_ice_prescr(jpphy) = sn_tri_phy%trc_prescr
182      cn_trc_o      (jpphy) = sn_tri_phy%ctrc_o
183
184      trc_ice_ratio(jpdia)  = sn_tri_dia%trc_ratio 
185      trc_ice_prescr(jpdia) = sn_tri_dia%trc_prescr
186      cn_trc_o      (jpdia) = sn_tri_dia%ctrc_o
187
188      trc_ice_ratio(jpzoo)  = sn_tri_zoo%trc_ratio 
189      trc_ice_prescr(jpzoo) = sn_tri_zoo%trc_prescr
190      cn_trc_o      (jpzoo) = sn_tri_zoo%ctrc_o
191
192      trc_ice_ratio(jpmes)  = sn_tri_mes%trc_ratio 
193      trc_ice_prescr(jpmes) = sn_tri_mes%trc_prescr
194      cn_trc_o      (jpmes) = sn_tri_mes%ctrc_o
195
196      trc_ice_ratio(jpfer)  = sn_tri_fer%trc_ratio 
197      trc_ice_prescr(jpfer) = sn_tri_fer%trc_prescr
198      cn_trc_o      (jpfer) = sn_tri_fer%ctrc_o
199
200      trc_ice_ratio(jpsfe)  = sn_tri_sfe%trc_ratio 
201      trc_ice_prescr(jpsfe) = sn_tri_sfe%trc_prescr
202      cn_trc_o      (jpsfe) = sn_tri_sfe%ctrc_o
203
204      trc_ice_ratio(jpdfe)  = sn_tri_dfe%trc_ratio 
205      trc_ice_prescr(jpdfe) = sn_tri_dfe%trc_prescr
206      cn_trc_o      (jpdfe) = sn_tri_dfe%ctrc_o
207
208      trc_ice_ratio(jpnfe)  = sn_tri_nfe%trc_ratio 
209      trc_ice_prescr(jpnfe) = sn_tri_nfe%trc_prescr
210      cn_trc_o      (jpnfe) = sn_tri_nfe%ctrc_o
211
212      trc_ice_ratio(jpnch)  = sn_tri_nch%trc_ratio 
213      trc_ice_prescr(jpnch) = sn_tri_nch%trc_prescr
214      cn_trc_o      (jpnch) = sn_tri_nch%ctrc_o
215
216      trc_ice_ratio(jpdch)  = sn_tri_dch%trc_ratio 
217      trc_ice_prescr(jpdch) = sn_tri_dch%trc_prescr
218      cn_trc_o      (jpdch) = sn_tri_dch%ctrc_o
219
220      trc_ice_ratio(jpno3)  = sn_tri_no3%trc_ratio 
221      trc_ice_prescr(jpno3) = sn_tri_no3%trc_prescr
222      cn_trc_o      (jpno3) = sn_tri_no3%ctrc_o
223
224      trc_ice_ratio(jpnh4)  = sn_tri_nh4%trc_ratio 
225      trc_ice_prescr(jpnh4) = sn_tri_nh4%trc_prescr
226      cn_trc_o      (jpnh4) = sn_tri_nh4%ctrc_o
227
228      ! Dummy write
229      WRITE(numout,*) ' trc_ice_ratio :', trc_ice_ratio
230      WRITE(numout,*) ' trc_ice_prescr:', trc_ice_prescr
231      WRITE(numout,*) ' cn_trc_o      :', cn_trc_o
232      ! End dummy write
233
234      !--------------------------------------------
235      ! Initialize ocean prescribed concentrations
236      !--------------------------------------------
237      ! values taken from a 500 yr equilibrium run
238      ! used only in the levitating sea ice case with virtual salt / tracer
239      ! fluxes
240
241      !--- Global case
242      IF ( cn_trc_o(jpdic) == 'GL ' ) trc_o(:,:,jpdic) =  1.99e-3_wp 
243      IF ( cn_trc_o(jpdoc) == 'GL ' ) trc_o(:,:,jpdoc) =  2.04e-5_wp 
244      IF ( cn_trc_o(jptal) == 'GL ' ) trc_o(:,:,jptal) =  2.31e-3_wp 
245      IF ( cn_trc_o(jpoxy) == 'GL ' ) trc_o(:,:,jpoxy) =  2.47e-4_wp
246      IF ( cn_trc_o(jpcal) == 'GL ' ) trc_o(:,:,jpcal) =  1.04e-8_wp
247      IF ( cn_trc_o(jppo4) == 'GL ' ) trc_o(:,:,jppo4) =  5.77e-7_wp / po4r 
248      IF ( cn_trc_o(jppoc) == 'GL ' ) trc_o(:,:,jppoc) =  1.27e-6_wp 
249#  if ! defined key_kriest
250      IF ( cn_trc_o(jpgoc) == 'GL ' ) trc_o(:,:,jpgoc) =  5.23e-8_wp 
251      IF ( cn_trc_o(jpbfe) == 'GL ' ) trc_o(:,:,jpbfe) =  9.84e-13_wp 
252#  else
253      IF ( cn_trc_o(jpnum) == 'GL ' ) trc_o(:,:,jpnum) = 0. ! could not get this value since did not use it
254#  endif
255      IF ( cn_trc_o(jpsil) == 'GL ' ) trc_o(:,:,jpsil) =  7.36e-6_wp 
256      IF ( cn_trc_o(jpdsi) == 'GL ' ) trc_o(:,:,jpdsi) =  1.07e-7_wp 
257      IF ( cn_trc_o(jpgsi) == 'GL ' ) trc_o(:,:,jpgsi) =  1.53e-8_wp
258      IF ( cn_trc_o(jpphy) == 'GL ' ) trc_o(:,:,jpphy) =  9.57e-8_wp
259      IF ( cn_trc_o(jpdia) == 'GL ' ) trc_o(:,:,jpdia) =  4.24e-7_wp
260      IF ( cn_trc_o(jpzoo) == 'GL ' ) trc_o(:,:,jpzoo) =  6.07e-7_wp
261      IF ( cn_trc_o(jpmes) == 'GL ' ) trc_o(:,:,jpmes) =  3.44e-7_wp
262      IF ( cn_trc_o(jpfer) == 'GL ' ) trc_o(:,:,jpfer) =  4.06e-10_wp
263      IF ( cn_trc_o(jpsfe) == 'GL ' ) trc_o(:,:,jpsfe) =  2.51e-11_wp
264      IF ( cn_trc_o(jpdfe) == 'GL ' ) trc_o(:,:,jpdfe) =  6.57e-12_wp
265      IF ( cn_trc_o(jpnfe) == 'GL ' ) trc_o(:,:,jpnfe) =  1.76e-11_wp
266      IF ( cn_trc_o(jpnch) == 'GL ' ) trc_o(:,:,jpnch) =  1.67e-7_wp
267      IF ( cn_trc_o(jpdch) == 'GL ' ) trc_o(:,:,jpdch) =  1.02e-7_wp
268      IF ( cn_trc_o(jpno3) == 'GL ' ) trc_o(:,:,jpno3) =  5.79e-6_wp / rno3 
269      IF ( cn_trc_o(jpnh4) == 'GL ' ) trc_o(:,:,jpnh4) =  3.22e-7_wp / rno3
270
271      !--- Arctic specificities (dissolved inorganic & DOM)
272      IF ( cn_trc_o(jpdic) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdic) =  1.98e-3_wp  ; END WHERE ; ENDIF
273      IF ( cn_trc_o(jpdoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdoc) =  6.00e-6_wp  ; END WHERE ; ENDIF
274      IF ( cn_trc_o(jptal) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jptal) =  2.13e-3_wp  ; END WHERE ; ENDIF
275      IF ( cn_trc_o(jpoxy) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpoxy) =  3.65e-4_wp  ; END WHERE ; ENDIF
276      IF ( cn_trc_o(jpcal) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpcal) =  1.50e-9_wp  ; END WHERE ; ENDIF
277      IF ( cn_trc_o(jppo4) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jppo4) =  4.09e-7_wp / po4r ; END WHERE ; ENDIF
278      IF ( cn_trc_o(jppoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jppoc) =  4.05e-7_wp  ; END WHERE ; ENDIF
279#  if ! defined key_kriest
280      IF ( cn_trc_o(jpgoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpgoc) =  2.84e-8_wp  ; END WHERE ; ENDIF
281      IF ( cn_trc_o(jpbfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpbfe) =  7.03e-13_wp ; END WHERE ; ENDIF
282#  else
283      IF ( cn_trc_o(jpnum) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnum) =  0.00e-00_wp ; END WHERE ; ENDIF
284#  endif
285      IF ( cn_trc_o(jpsil) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpsil) =  6.87e-6_wp  ; END WHERE ; ENDIF
286      IF ( cn_trc_o(jpdsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdsi) =  1.73e-7_wp  ; END WHERE ; ENDIF
287      IF ( cn_trc_o(jpgsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpgsi) =  7.93e-9_wp  ; END WHERE ; ENDIF
288      IF ( cn_trc_o(jpphy) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpphy) =  5.25e-7_wp  ; END WHERE ; ENDIF
289      IF ( cn_trc_o(jpdia) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdia) =  7.75e-7_wp  ; END WHERE ; ENDIF
290      IF ( cn_trc_o(jpzoo) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpzoo) =  3.34e-7_wp  ; END WHERE ; ENDIF
291      IF ( cn_trc_o(jpmes) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpmes) =  2.49e-7_wp  ; END WHERE ; ENDIF
292      IF ( cn_trc_o(jpfer) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpfer) =  1.43e-9_wp  ; END WHERE ; ENDIF
293      IF ( cn_trc_o(jpsfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpsfe) =  2.21e-11_wp ; END WHERE ; ENDIF
294      IF ( cn_trc_o(jpdfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdfe) =  2.04e-11_wp ; END WHERE ; ENDIF
295      IF ( cn_trc_o(jpnfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnfe) =  1.75e-11_wp ; END WHERE ; ENDIF
296      IF ( cn_trc_o(jpnch) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnch) =  1.46e-07_wp ; END WHERE ; ENDIF
297      IF ( cn_trc_o(jpdch) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdch) =  2.36e-07_wp ; END WHERE ; ENDIF
298      IF ( cn_trc_o(jpno3) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpno3) =  3.51e-06_wp / rno3 ; END WHERE ; ENDIF
299      IF ( cn_trc_o(jpnh4) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnh4) =  6.15e-08_wp / rno3 ; END WHERE ; ENDIF
300
301      !--- Antarctic specificities (dissolved inorganic & DOM)
302      IF ( cn_trc_o(jpdic) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdic) =  2.20e-3_wp  ; END WHERE ; ENDIF
303      IF ( cn_trc_o(jpdoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdoc) =  7.02e-6_wp  ; END WHERE ; ENDIF
304      IF ( cn_trc_o(jptal) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jptal) =  2.37e-3_wp  ; END WHERE ; ENDIF
305      IF ( cn_trc_o(jpoxy) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpoxy) =  3.42e-4_wp  ; END WHERE ; ENDIF
306      IF ( cn_trc_o(jpcal) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpcal) =  3.17e-9_wp  ; END WHERE ; ENDIF
307      IF ( cn_trc_o(jppo4) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jppo4) =  1.88e-6_wp / po4r  ; END WHERE ; ENDIF
308      IF ( cn_trc_o(jppoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jppoc) =  1.13e-6_wp  ; END WHERE ; ENDIF
309#  if ! defined key_kriest
310      IF ( cn_trc_o(jpgoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpgoc) =  2.89e-8_wp  ; END WHERE ; ENDIF
311      IF ( cn_trc_o(jpbfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpbfe) =  5.63e-13_wp ; END WHERE ; ENDIF
312#  else
313      IF ( cn_trc_o(jpnum) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnum) =  0.00e-00_wp ; END WHERE ; ENDIF
314#  endif
315      IF ( cn_trc_o(jpsil) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpsil) =  4.96e-5_wp  ; END WHERE ; ENDIF
316      IF ( cn_trc_o(jpdsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdsi) =  5.63e-7_wp  ; END WHERE ; ENDIF
317      IF ( cn_trc_o(jpgsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpgsi) =  5.35e-8_wp  ; END WHERE ; ENDIF
318      IF ( cn_trc_o(jpphy) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpphy) =  8.10e-7_wp  ; END WHERE ; ENDIF
319      IF ( cn_trc_o(jpdia) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdia) =  5.77e-7_wp  ; END WHERE ; ENDIF
320      IF ( cn_trc_o(jpzoo) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpzoo) =  6.68e-7_wp  ; END WHERE ; ENDIF
321      IF ( cn_trc_o(jpmes) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpmes) =  3.55e-7_wp  ; END WHERE ; ENDIF
322      IF ( cn_trc_o(jpfer) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpfer) =  1.62e-10_wp ; END WHERE ; ENDIF
323      IF ( cn_trc_o(jpsfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpsfe) =  2.29e-11_wp ; END WHERE ; ENDIF
324      IF ( cn_trc_o(jpdfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdfe) =  8.75e-12_wp ; END WHERE ; ENDIF
325      IF ( cn_trc_o(jpnfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnfe) =  1.48e-11_wp ; END WHERE ; ENDIF
326      IF ( cn_trc_o(jpnch) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnch) =  2.02e-7_wp  ; END WHERE ; ENDIF
327      IF ( cn_trc_o(jpdch) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdch) =  1.60e-7_wp  ; END WHERE ; ENDIF
328      IF ( cn_trc_o(jpno3) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpno3) =  2.64e-5_wp / rno3  ; END WHERE ; ENDIF
329      IF ( cn_trc_o(jpnh4) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnh4) =  3.39e-7_wp / rno3  ; END WHERE ; ENDIF
330
331      !--- Baltic Sea particular case for ORCA configurations
332      IF( cp_cfg == "orca" ) THEN            ! Baltic mask
333         WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
334                54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
335         trc_o(:,:,jpdic) = 1.14e-3_wp
336         trc_o(:,:,jpdoc) = 1.06e-5_wp
337         trc_o(:,:,jptal) = 1.16e-3_wp
338         trc_o(:,:,jpoxy) = 3.71e-4_wp
339         trc_o(:,:,jpcal) = 1.51e-9_wp
340         trc_o(:,:,jppo4) = 2.85e-9_wp / po4r
341         trc_o(:,:,jppoc) = 4.84e-7_wp
342#  if ! defined key_kriest
343         trc_o(:,:,jpgoc) = 1.05e-8_wp
344         trc_o(:,:,jpbfe) = 4.97e-13_wp
345#  else
346         trc_o(:,:,jpnum) = 0. ! could not get this value
347#  endif
348         trc_o(:,:,jpsil) = 4.91e-5_wp
349         trc_o(:,:,jpdsi) = 3.25e-7_wp
350         trc_o(:,:,jpgsi) = 1.93e-8_wp
351         trc_o(:,:,jpphy) = 6.64e-7_wp
352         trc_o(:,:,jpdia) = 3.41e-7_wp
353         trc_o(:,:,jpzoo) = 3.83e-7_wp
354         trc_o(:,:,jpmes) = 0.225e-6_wp
355         trc_o(:,:,jpfer) = 2.45e-9_wp
356         trc_o(:,:,jpsfe) = 3.89e-11_wp
357         trc_o(:,:,jpdfe) = 1.33e-11_wp
358         trc_o(:,:,jpnfe) = 2.62e-11_wp
359         trc_o(:,:,jpnch) = 1.17e-7_wp
360         trc_o(:,:,jpdch) = 9.69e-8_wp
361         trc_o(:,:,jpno3) = 5.36e-5_wp / rno3
362         trc_o(:,:,jpnh4) = 7.18e-7_wp / rno3
363         END WHERE
364      ENDIF ! cfg
365
366      !-----------------------------
367      ! Assign ice-ocean cc ratios
368      !-----------------------------
369      ! 0 means zero concentration in sea ice
370      ! 1 means same concentration in the sea ice as in the ocean
371
372      ! Ice ocean salinity ratio
373      zsoce_bal   = 4. ; zsice_bal   = 2. !! Baltic ocean and sea ice salinities
374      zrs(1) = sice / soce                !! ice-ocean salinity ratio, global case
375      zrs(2) = zsice_bal / zsoce_bal      !! ice-ocean salinity ratio, Baltic case
376
377      DO jn = 1, jptra
378         IF ( trc_ice_ratio(jn) >= 0._wp )  zratio(jn,:) = trc_ice_ratio(jn)
379         IF ( trc_ice_ratio(jn) == -1._wp ) zratio(jn,:) = zrs(:)
380         IF ( trc_ice_ratio(jn) == -2._wp ) zratio(jn,:) = -9999.99_wp
381      END DO
382
383      ! dummy write
384      DO jn = 1, jptra
385         WRITE(numout,*) jn, ' zratio : ', zratio(jn,:)
386      END DO
387      ! end dummy write
388
389      !-------------------------------
390      ! Sea ice tracer concentrations
391      !-------------------------------
392      DO jn = 1, jptra
393         !-- Everywhere but in the Baltic
394         IF ( trc_ice_ratio(jn) >= -1._wp ) THEN !! no prescribed concentration
395                                              !! (typically everything but iron)
396            trc_i(:,:,jn) = zratio(jn,1) * trc_o(:,:,jn) 
397         ELSE                                 !! prescribed concentration
398            trc_i(:,:,jn) = trc_ice_prescr(jn)
399         ENDIF
400       
401         !-- Baltic
402         IF( cp_cfg == "orca" ) THEN !! Baltic treated seperately for ORCA configs
403            IF ( trc_ice_ratio(jn) >= - 1._wp ) THEN !! no prescribed concentration
404                                                 !! (typically everything but iron)
405               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
406                      54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
407                  trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 
408               END WHERE
409            ELSE                                 !! prescribed tracer concentration in ice
410               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
411                   54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
412                  trc_i(:,:,jn) = trc_ice_prescr(jn)
413               END WHERE
414            ENDIF ! trc_ice_ratio
415         ENDIF
416      !
417      END DO ! jn
418
419   END SUBROUTINE trc_ice_ini_pisces
420
421#else
422   !!----------------------------------------------------------------------
423   !!   Dummy module                            No PISCES biochemical model
424   !!----------------------------------------------------------------------
425CONTAINS
426   SUBROUTINE trc_ice_ini_pisces         ! Empty routine
427   END SUBROUTINE trc_ice_ini_pisces
428#endif
429
430   !!======================================================================
431END MODULE trcice_pisces
Note: See TracBrowser for help on using the repository browser.