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

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

sette modifs 1

File size: 22.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 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 )
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      ! Dummy write
227      WRITE(numout,*) ' trc_ice_ratio :', trc_ice_ratio
228      WRITE(numout,*) ' trc_ice_prescr:', trc_ice_prescr
229      WRITE(numout,*) ' cn_trc_o      :', cn_trc_o
230      ! End dummy write
231
232      !--------------------------------------------
233      ! Initialize ocean prescribed concentrations
234      !--------------------------------------------
235      ! values taken from a 500 yr equilibrium run
236      ! used only in the levitating sea ice case with virtual salt / tracer
237      ! fluxes
238
239      !--- Global case
240      IF ( cn_trc_o(jpdic) == 'GL ' ) trc_o(:,:,jpdic) =  1.99e-3_wp 
241      IF ( cn_trc_o(jpdoc) == 'GL ' ) trc_o(:,:,jpdoc) =  2.04e-5_wp 
242      IF ( cn_trc_o(jptal) == 'GL ' ) trc_o(:,:,jptal) =  2.31e-3_wp 
243      IF ( cn_trc_o(jpoxy) == 'GL ' ) trc_o(:,:,jpoxy) =  2.47e-4_wp
244      IF ( cn_trc_o(jpcal) == 'GL ' ) trc_o(:,:,jpcal) =  1.04e-8_wp
245      IF ( cn_trc_o(jppo4) == 'GL ' ) trc_o(:,:,jppo4) =  5.77e-7_wp / po4r 
246      IF ( cn_trc_o(jppoc) == 'GL ' ) trc_o(:,:,jppoc) =  1.27e-6_wp 
247#  if ! defined key_kriest
248      IF ( cn_trc_o(jpgoc) == 'GL ' ) trc_o(:,:,jpgoc) =  5.23e-8_wp 
249      IF ( cn_trc_o(jpbfe) == 'GL ' ) trc_o(:,:,jpbfe) =  9.84e-13_wp 
250#  else
251      IF ( cn_trc_o(jpnum) == 'GL ' ) trc_o(:,:,jpnum) = 0. ! could not get this value since did not use it
252#  endif
253      IF ( cn_trc_o(jpsil) == 'GL ' ) trc_o(:,:,jpsil) =  7.36e-6_wp 
254      IF ( cn_trc_o(jpdsi) == 'GL ' ) trc_o(:,:,jpdsi) =  1.07e-7_wp 
255      IF ( cn_trc_o(jpgsi) == 'GL ' ) trc_o(:,:,jpgsi) =  1.53e-8_wp
256      IF ( cn_trc_o(jpphy) == 'GL ' ) trc_o(:,:,jpphy) =  9.57e-8_wp
257      IF ( cn_trc_o(jpdia) == 'GL ' ) trc_o(:,:,jpdia) =  4.24e-7_wp
258      IF ( cn_trc_o(jpzoo) == 'GL ' ) trc_o(:,:,jpzoo) =  6.07e-7_wp
259      IF ( cn_trc_o(jpmes) == 'GL ' ) trc_o(:,:,jpmes) =  3.44e-7_wp
260      IF ( cn_trc_o(jpfer) == 'GL ' ) trc_o(:,:,jpfer) =  4.06e-10_wp
261      IF ( cn_trc_o(jpsfe) == 'GL ' ) trc_o(:,:,jpsfe) =  2.51e-11_wp
262      IF ( cn_trc_o(jpdfe) == 'GL ' ) trc_o(:,:,jpdfe) =  6.57e-12_wp
263      IF ( cn_trc_o(jpnfe) == 'GL ' ) trc_o(:,:,jpnfe) =  1.76e-11_wp
264      IF ( cn_trc_o(jpnch) == 'GL ' ) trc_o(:,:,jpnch) =  1.67e-7_wp
265      IF ( cn_trc_o(jpdch) == 'GL ' ) trc_o(:,:,jpdch) =  1.02e-7_wp
266      IF ( cn_trc_o(jpno3) == 'GL ' ) trc_o(:,:,jpno3) =  5.79e-6_wp / rno3 
267      IF ( cn_trc_o(jpnh4) == 'GL ' ) trc_o(:,:,jpnh4) =  3.22e-7_wp / rno3
268
269      !--- Arctic specificities (dissolved inorganic & DOM)
270      IF ( cn_trc_o(jpdic) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdic) =  1.98e-3_wp  ; END WHERE ; ENDIF
271      IF ( cn_trc_o(jpdoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdoc) =  6.00e-6_wp  ; END WHERE ; ENDIF
272      IF ( cn_trc_o(jptal) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jptal) =  2.13e-3_wp  ; END WHERE ; ENDIF
273      IF ( cn_trc_o(jpoxy) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpoxy) =  3.65e-4_wp  ; END WHERE ; ENDIF
274      IF ( cn_trc_o(jpcal) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpcal) =  1.50e-9_wp  ; END WHERE ; ENDIF
275      IF ( cn_trc_o(jppo4) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jppo4) =  4.09e-7_wp / po4r ; END WHERE ; ENDIF
276      IF ( cn_trc_o(jppoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jppoc) =  4.05e-7_wp  ; END WHERE ; ENDIF
277#  if ! defined key_kriest
278      IF ( cn_trc_o(jpgoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpgoc) =  2.84e-8_wp  ; END WHERE ; ENDIF
279      IF ( cn_trc_o(jpbfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpbfe) =  7.03e-13_wp ; END WHERE ; ENDIF
280#  else
281      IF ( cn_trc_o(jpnum) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnum) =  0.00e-00_wp ; END WHERE ; ENDIF
282#  endif
283      IF ( cn_trc_o(jpsil) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpsil) =  6.87e-6_wp  ; END WHERE ; ENDIF
284      IF ( cn_trc_o(jpdsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdsi) =  1.73e-7_wp  ; END WHERE ; ENDIF
285      IF ( cn_trc_o(jpgsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpgsi) =  7.93e-9_wp  ; END WHERE ; ENDIF
286      IF ( cn_trc_o(jpphy) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpphy) =  5.25e-7_wp  ; END WHERE ; ENDIF
287      IF ( cn_trc_o(jpdia) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdia) =  7.75e-7_wp  ; END WHERE ; ENDIF
288      IF ( cn_trc_o(jpzoo) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpzoo) =  3.34e-7_wp  ; END WHERE ; ENDIF
289      IF ( cn_trc_o(jpmes) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpmes) =  2.49e-7_wp  ; END WHERE ; ENDIF
290      IF ( cn_trc_o(jpfer) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpfer) =  1.43e-9_wp  ; END WHERE ; ENDIF
291      IF ( cn_trc_o(jpsfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpsfe) =  2.21e-11_wp ; END WHERE ; ENDIF
292      IF ( cn_trc_o(jpdfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdfe) =  2.04e-11_wp ; END WHERE ; ENDIF
293      IF ( cn_trc_o(jpnfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnfe) =  1.75e-11_wp ; END WHERE ; ENDIF
294      IF ( cn_trc_o(jpnch) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnch) =  1.46e-07_wp ; END WHERE ; ENDIF
295      IF ( cn_trc_o(jpdch) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpdch) =  2.36e-07_wp ; END WHERE ; ENDIF
296      IF ( cn_trc_o(jpno3) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpno3) =  3.51e-06_wp / rno3 ; END WHERE ; ENDIF
297      IF ( cn_trc_o(jpnh4) == 'AA ' ) THEN ; WHERE( gphit(:,:) >= 00._wp ) ; trc_o(:,:,jpnh4) =  6.15e-08_wp / rno3 ; END WHERE ; ENDIF
298
299      !--- Antarctic specificities (dissolved inorganic & DOM)
300      IF ( cn_trc_o(jpdic) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdic) =  2.20e-3_wp  ; END WHERE ; ENDIF
301      IF ( cn_trc_o(jpdoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdoc) =  7.02e-6_wp  ; END WHERE ; ENDIF
302      IF ( cn_trc_o(jptal) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jptal) =  2.37e-3_wp  ; END WHERE ; ENDIF
303      IF ( cn_trc_o(jpoxy) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpoxy) =  3.42e-4_wp  ; END WHERE ; ENDIF
304      IF ( cn_trc_o(jpcal) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpcal) =  3.17e-9_wp  ; END WHERE ; ENDIF
305      IF ( cn_trc_o(jppo4) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jppo4) =  1.88e-6_wp / po4r  ; END WHERE ; ENDIF
306      IF ( cn_trc_o(jppoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jppoc) =  1.13e-6_wp  ; END WHERE ; ENDIF
307#  if ! defined key_kriest
308      IF ( cn_trc_o(jpgoc) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpgoc) =  2.89e-8_wp  ; END WHERE ; ENDIF
309      IF ( cn_trc_o(jpbfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpbfe) =  5.63e-13_wp ; END WHERE ; ENDIF
310#  else
311      IF ( cn_trc_o(jpnum) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnum) =  0.00e-00_wp ; END WHERE ; ENDIF
312#  endif
313      IF ( cn_trc_o(jpsil) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpsil) =  4.96e-5_wp  ; END WHERE ; ENDIF
314      IF ( cn_trc_o(jpdsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdsi) =  5.63e-7_wp  ; END WHERE ; ENDIF
315      IF ( cn_trc_o(jpgsi) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpgsi) =  5.35e-8_wp  ; END WHERE ; ENDIF
316      IF ( cn_trc_o(jpphy) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpphy) =  8.10e-7_wp  ; END WHERE ; ENDIF
317      IF ( cn_trc_o(jpdia) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdia) =  5.77e-7_wp  ; END WHERE ; ENDIF
318      IF ( cn_trc_o(jpzoo) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpzoo) =  6.68e-7_wp  ; END WHERE ; ENDIF
319      IF ( cn_trc_o(jpmes) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpmes) =  3.55e-7_wp  ; END WHERE ; ENDIF
320      IF ( cn_trc_o(jpfer) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpfer) =  1.62e-10_wp ; END WHERE ; ENDIF
321      IF ( cn_trc_o(jpsfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpsfe) =  2.29e-11_wp ; END WHERE ; ENDIF
322      IF ( cn_trc_o(jpdfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdfe) =  8.75e-12_wp ; END WHERE ; ENDIF
323      IF ( cn_trc_o(jpnfe) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnfe) =  1.48e-11_wp ; END WHERE ; ENDIF
324      IF ( cn_trc_o(jpnch) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnch) =  2.02e-7_wp  ; END WHERE ; ENDIF
325      IF ( cn_trc_o(jpdch) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpdch) =  1.60e-7_wp  ; END WHERE ; ENDIF
326      IF ( cn_trc_o(jpno3) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpno3) =  2.64e-5_wp / rno3  ; END WHERE ; ENDIF
327      IF ( cn_trc_o(jpnh4) == 'AA ' ) THEN ; WHERE( gphit(:,:) <  00._wp ) ; trc_o(:,:,jpnh4) =  3.39e-7_wp / rno3  ; END WHERE ; ENDIF
328
329      !--- Baltic Sea particular case for ORCA configurations
330      IF( cp_cfg == "orca" ) THEN            ! Baltic mask
331         WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
332                54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
333         trc_o(:,:,jpdic) = 1.14e-3_wp
334         trc_o(:,:,jpdoc) = 1.06e-5_wp
335         trc_o(:,:,jptal) = 1.16e-3_wp
336         trc_o(:,:,jpoxy) = 3.71e-4_wp
337         trc_o(:,:,jpcal) = 1.51e-9_wp
338         trc_o(:,:,jppo4) = 2.85e-9_wp / po4r
339         trc_o(:,:,jppoc) = 4.84e-7_wp
340#  if ! defined key_kriest
341         trc_o(:,:,jpgoc) = 1.05e-8_wp
342         trc_o(:,:,jpbfe) = 4.97e-13_wp
343#  else
344         trc_o(:,:,jpnum) = 0. ! could not get this value
345#  endif
346         trc_o(:,:,jpsil) = 4.91e-5_wp
347         trc_o(:,:,jpdsi) = 3.25e-7_wp
348         trc_o(:,:,jpgsi) = 1.93e-8_wp
349         trc_o(:,:,jpphy) = 6.64e-7_wp
350         trc_o(:,:,jpdia) = 3.41e-7_wp
351         trc_o(:,:,jpzoo) = 3.83e-7_wp
352         trc_o(:,:,jpmes) = 0.225e-6_wp
353         trc_o(:,:,jpfer) = 2.45e-9_wp
354         trc_o(:,:,jpsfe) = 3.89e-11_wp
355         trc_o(:,:,jpdfe) = 1.33e-11_wp
356         trc_o(:,:,jpnfe) = 2.62e-11_wp
357         trc_o(:,:,jpnch) = 1.17e-7_wp
358         trc_o(:,:,jpdch) = 9.69e-8_wp
359         trc_o(:,:,jpno3) = 5.36e-5_wp / rno3
360         trc_o(:,:,jpnh4) = 7.18e-7_wp / rno3
361         END WHERE
362      ENDIF ! cfg
363
364      !-----------------------------
365      ! Assign ice-ocean cc ratios
366      !-----------------------------
367      ! 0 means zero concentration in sea ice
368      ! 1 means same concentration in the sea ice as in the ocean
369
370      ! Ice ocean salinity ratio
371      zsoce_bal   = 4. ; zsice_bal   = 2. !! Baltic ocean and sea ice salinities
372      zrs(1) = sice / soce                !! ice-ocean salinity ratio, global case
373      zrs(2) = zsice_bal / zsoce_bal      !! ice-ocean salinity ratio, Baltic case
374
375      DO jn = 1, jptra
376         IF ( trc_ice_ratio(jn) >= 0._wp )  zratio(jn,:) = trc_ice_ratio(jn)
377         IF ( trc_ice_ratio(jn) == -1._wp ) zratio(jn,:) = zrs(:)
378         IF ( trc_ice_ratio(jn) == -2._wp ) zratio(jn,:) = -9999.99_wp
379      END DO
380
381      ! dummy write
382      DO jn = 1, jptra
383         WRITE(numout,*) jn, ' zratio : ', zratio(jn,:)
384      END DO
385      ! end dummy write
386
387      !-------------------------------
388      ! Sea ice tracer concentrations
389      !-------------------------------
390      DO jn = 1, jptra
391         !-- Everywhere but in the Baltic
392         IF ( trc_ice_ratio(jn) >= -1._wp ) THEN !! no prescribed concentration
393                                              !! (typically everything but iron)
394            trc_i(:,:,jn) = zratio(jn,1) * trc_o(:,:,jn) 
395         ELSE                                 !! prescribed concentration
396            trc_i(:,:,jn) = trc_ice_prescr(jn)
397         ENDIF
398       
399         !-- Baltic
400         IF( cp_cfg == "orca" ) THEN !! Baltic treated seperately for ORCA configs
401            IF ( trc_ice_ratio(jn) >= - 1._wp ) THEN !! no prescribed concentration
402                                                 !! (typically everything but iron)
403               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
404                      54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
405                  trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 
406               END WHERE
407            ELSE                                 !! prescribed tracer concentration in ice
408               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
409                   54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
410                  trc_i(:,:,jn) = trc_ice_prescr(jn)
411               END WHERE
412            ENDIF ! trc_ice_ratio
413         ENDIF
414      !
415      END DO ! jn
416
417   END SUBROUTINE trc_ice_ini_pisces
418
419#else
420   !!----------------------------------------------------------------------
421   !!   Dummy module                            No PISCES biochemical model
422   !!----------------------------------------------------------------------
423CONTAINS
424   SUBROUTINE trc_ice_ini_pisces         ! Empty routine
425   END SUBROUTINE trc_ice_ini_pisces
426#endif
427
428   !!======================================================================
429END MODULE trcice_pisces
Note: See TracBrowser for help on using the repository browser.