source: branches/2014/dev_4707_CNRS04_bgc_ice/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90 @ 4722

Last change on this file since 4722 was 4722, checked in by vancop, 6 years ago

[sea ice tracer boundary conditions ORCA2_LIM2 PISCES]

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