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

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

TOP ice routines 2

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