source: branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcice_pisces.F90 @ 7041

Last change on this file since 7041 was 7041, checked in by cetlod, 4 years ago

ROBUST5_CNRS : implementation of part I of new TOP interface - 1st step -, see ticket #1782

File size: 11.9 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   !!----------------------------------------------------------------------
8#if defined key_pisces 
9   !!----------------------------------------------------------------------
10   !!   'key_pisces'                                       PISCES bio-model
11   !!----------------------------------------------------------------------
12   !! trc_ice_pisces   : PISCES fake sea ice model setting
13   !!----------------------------------------------------------------------
14   USE par_trc         ! TOP parameters
15   USE par_pisces      ! PISCES parameters
16   USE oce_trc         ! Shared variables between ocean and passive tracers
17   USE trc             ! Passive tracers common variables
18   USE phycst          ! Ocean physics parameters
19   USE sms_pisces      ! PISCES Source Minus Sink variables
20   USE in_out_manager
21
22   IMPLICIT NONE
23   PRIVATE
24
25   PUBLIC   trc_ice_ini_pisces ! called by trcini.F90 module
26
27CONTAINS
28
29
30   SUBROUTINE trc_ice_ini_pisces
31      !!----------------------------------------------------------------------
32      !!                   ***  ROUTINE trc_ini_pisces ***
33      !!
34      !! ** Purpose :   Initialisation of the PISCES biochemical model
35      !!----------------------------------------------------------------------
36
37      IF( ln_p4z ) THEN  ;   CALL p4z_ice_ini   !  PISCES
38      ELSE               ;   CALL p2z_ice_ini   !  LOBSTER
39      ENDIF
40
41   END SUBROUTINE trc_ice_ini_pisces
42
43
44   SUBROUTINE p4z_ice_ini
45      !!----------------------------------------------------------------------
46      !!                   ***  ROUTINE p4z_ice_ini ***
47      !!
48      !! ** Purpose :   PISCES fake sea ice model setting
49      !!    Method  :   Assign prescribe values to tracer concentrations in sea ice
50      !!
51      !! For levitating sea ice, constant ocean tracer concentrations also have to be defined.
52      !! This is done specifically for Global, Arctic, Antarctic and Baltic regions
53      !!
54      !! Sea ice concentrations are by default prescribed as follows
55      !!  trc_i = zratio * trc_o
56      !!
57      !! This formulation is modulated by the namelist parameter trc_ice_ratio
58      !!
59      !! trc_ice_ratio  * betw 0 and 1: prescribed ice/ocean tracer concentration ratio
60      !!                * -1 => the ice-ocean tracer concentration ratio follows the
61      !!                         ice-ocean salinity ratio
62      !!                * -2 => no ice-ocean tracer concentration is used
63      !!                        instead, the tracer concentration in sea ice
64      !!                        is prescribed to trc_ice_prescr
65      !!
66      !! cn_trc_o  specifies which disinctions are made for prescribed tracer concentration
67      !!                * 'GL' use global ocean values making distinction for Baltic Sea only
68      !!                * 'AA' use Arctic/Antarctic contrasted values, + Baltic
69      !!
70      !!----------------------------------------------------------------------
71
72                                        !--- Dummy variables
73      REAL(wp), DIMENSION(:,:), ALLOCATABLE  :: zratio  ! effective ice-ocean tracer cc ratio
74      REAL(wp), DIMENSION(:,:), ALLOCATABLE  :: zpisc   ! prescribes concentration
75      !                                            !  1:global, 2:Arctic, 3:Antarctic, 4:Baltic
76
77      REAL(wp), DIMENSION(2) :: zrs  ! ice-ocean salinity ratio, 1 - global, 2- Baltic
78      REAL(wp) :: zsice_bal          ! prescribed ice salinity in the Baltic
79      REAL(wp) :: zsoce_bal          ! prescribed ocean salinity in the Baltic
80      REAL(wp) :: zfeoce_glo         ! prescribed iron concentration in the global ocean
81      REAL(wp) :: zfeoce_bal         ! prescribed iron concentration in the global ocean
82      INTEGER  :: jn                 ! dummy loop index
83
84      !!----------------------------------------------------------------------
85
86      IF(lwp) WRITE(numout,*)
87      IF(lwp) WRITE(numout,*) ' trc_ice_ini_pisces: Prescribed sea ice biogeochemistry '
88      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~'
89
90      !--------------------------------------------
91      ! Initialize ocean prescribed concentrations
92      !--------------------------------------------
93      ! values taken from a 500 yr equilibrium run
94      ! used only in the levitating sea ice case with virtual salt / tracer
95      ! fluxes
96
97      ALLOCATE( zratio(jp_pisces,2),  zpisc(jp_pisces,4) )
98 
99      !--- Global values
100      zpisc(jpdic,1) =  1.99e-3_wp 
101      zpisc(jpdoc,1) =  2.04e-5_wp 
102      zpisc(jptal,1) =  2.31e-3_wp 
103      zpisc(jpoxy,1) =  2.47e-4_wp
104      zpisc(jpcal,1) =  1.04e-8_wp
105      zpisc(jppo4,1) =  5.77e-7_wp / po4r 
106      zpisc(jppoc,1) =  1.27e-6_wp 
107      zpisc(jpgoc,1) =  5.23e-8_wp 
108      zpisc(jpbfe,1) =  9.84e-13_wp 
109      zpisc(jpsil,1) =  7.36e-6_wp 
110      zpisc(jpdsi,1) =  1.07e-7_wp 
111      zpisc(jpgsi,1) =  1.53e-8_wp
112      zpisc(jpphy,1) =  9.57e-8_wp
113      zpisc(jpdia,1) =  4.24e-7_wp
114      zpisc(jpzoo,1) =  6.07e-7_wp
115      zpisc(jpmes,1) =  3.44e-7_wp
116      zpisc(jpfer,1) =  4.06e-10_wp
117      zpisc(jpsfe,1) =  2.51e-11_wp
118      zpisc(jpdfe,1) =  6.57e-12_wp
119      zpisc(jpnfe,1) =  1.76e-11_wp
120      zpisc(jpnch,1) =  1.67e-7_wp
121      zpisc(jpdch,1) =  1.02e-7_wp
122      zpisc(jpno3,1) =  5.79e-6_wp / rno3 
123      zpisc(jpnh4,1) =  3.22e-7_wp / rno3
124
125      !--- Arctic specificities (dissolved inorganic & DOM)
126      zpisc(jpdic,2) =  1.98e-3_wp 
127      zpisc(jpdoc,2) =  6.00e-6_wp 
128      zpisc(jptal,2) =  2.13e-3_wp 
129      zpisc(jpoxy,2) =  3.65e-4_wp 
130      zpisc(jpcal,2) =  1.50e-9_wp 
131      zpisc(jppo4,2) =  4.09e-7_wp / po4r 
132      zpisc(jppoc,2) =  4.05e-7_wp 
133      zpisc(jpgoc,2) =  2.84e-8_wp 
134      zpisc(jpbfe,2) =  7.03e-13_wp 
135      zpisc(jpsil,2) =  6.87e-6_wp 
136      zpisc(jpdsi,2) =  1.73e-7_wp 
137      zpisc(jpgsi,2) =  7.93e-9_wp
138      zpisc(jpphy,2) =  5.25e-7_wp 
139      zpisc(jpdia,2) =  7.75e-7_wp 
140      zpisc(jpzoo,2) =  3.34e-7_wp
141      zpisc(jpmes,2) =  2.49e-7_wp 
142      zpisc(jpfer,2) =  1.43e-9_wp 
143      zpisc(jpsfe,2) =  2.21e-11_wp 
144      zpisc(jpdfe,2) =  2.04e-11_wp 
145      zpisc(jpnfe,2) =  1.75e-11_wp 
146      zpisc(jpnch,2) =  1.46e-07_wp 
147      zpisc(jpdch,2) =  2.36e-07_wp 
148      zpisc(jpno3,2) =  3.51e-06_wp / rno3 
149      zpisc(jpnh4,2) =  6.15e-08_wp / rno3 
150
151      !--- Antarctic specificities (dissolved inorganic & DOM)
152      zpisc(jpdic,3) =  2.20e-3_wp 
153      zpisc(jpdoc,3) =  7.02e-6_wp 
154      zpisc(jptal,3) =  2.37e-3_wp 
155      zpisc(jpoxy,3) =  3.42e-4_wp 
156      zpisc(jpcal,3) =  3.17e-9_wp 
157      zpisc(jppo4,3) =  1.88e-6_wp / po4r 
158      zpisc(jppoc,3) =  1.13e-6_wp 
159      zpisc(jpgoc,3) =  2.89e-8_wp 
160      zpisc(jpbfe,3) =  5.63e-13_wp 
161      zpisc(jpsil,3) =  4.96e-5_wp 
162      zpisc(jpdsi,3) =  5.63e-7_wp 
163      zpisc(jpgsi,3) =  5.35e-8_wp
164      zpisc(jpphy,3) =  8.10e-7_wp 
165      zpisc(jpdia,3) =  5.77e-7_wp 
166      zpisc(jpzoo,3) =  6.68e-7_wp
167      zpisc(jpmes,3) =  3.55e-7_wp 
168      zpisc(jpfer,3) =  1.62e-10_wp
169      zpisc(jpsfe,3) =  2.29e-11_wp 
170      zpisc(jpdfe,3) =  8.75e-12_wp
171      zpisc(jpnfe,3) =  1.48e-11_wp 
172      zpisc(jpnch,3) =  2.02e-7_wp 
173      zpisc(jpdch,3) =  1.60e-7_wp 
174      zpisc(jpno3,3) =  2.64e-5_wp / rno3 
175      zpisc(jpnh4,3) =  3.39e-7_wp / rno3 
176
177      !--- Baltic Sea particular case for ORCA configurations
178      zpisc(jpdic,4) = 1.14e-3_wp
179      zpisc(jpdoc,4) = 1.06e-5_wp
180      zpisc(jptal,4) = 1.16e-3_wp
181      zpisc(jpoxy,4) = 3.71e-4_wp
182      zpisc(jpcal,4) = 1.51e-9_wp
183      zpisc(jppo4,4) = 2.85e-9_wp / po4r
184      zpisc(jppoc,4) = 4.84e-7_wp
185      zpisc(jpgoc,4) = 1.05e-8_wp
186      zpisc(jpbfe,4) = 4.97e-13_wp
187      zpisc(jpsil,4) = 4.91e-5_wp
188      zpisc(jpdsi,4) = 3.25e-7_wp
189      zpisc(jpgsi,4) = 1.93e-8_wp
190      zpisc(jpphy,4) = 6.64e-7_wp
191      zpisc(jpdia,4) = 3.41e-7_wp
192      zpisc(jpzoo,4) = 3.83e-7_wp
193      zpisc(jpmes,4) = 0.225e-6_wp
194      zpisc(jpfer,4) = 2.45e-9_wp
195      zpisc(jpsfe,4) = 3.89e-11_wp
196      zpisc(jpdfe,4) = 1.33e-11_wp
197      zpisc(jpnfe,4) = 2.62e-11_wp
198      zpisc(jpnch,4) = 1.17e-7_wp
199      zpisc(jpdch,4) = 9.69e-8_wp
200      zpisc(jpno3,4) = 5.36e-5_wp / rno3
201      zpisc(jpnh4,4) = 7.18e-7_wp / rno3
202 
203      DO jn = jp_pcs0, jp_pcs1
204         IF( cn_trc_o(jn) == 'GL ' ) trc_o(:,:,jn) = zpisc(jn,1)  ! Global case
205         IF( cn_trc_o(jn) == 'AA ' ) THEN
206            WHERE( gphit(:,:) >= 0._wp ) ; trc_o(:,:,jn) = zpisc(jn,2) ; END WHERE ! Arctic
207            WHERE( gphit(:,:) <  0._wp ) ; trc_o(:,:,jn) = zpisc(jn,3) ; END WHERE ! Antarctic
208         ENDIF
209         IF( cp_cfg == "orca" ) THEN     !  Baltic Sea particular case for ORCA configurations
210             WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
211                    54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
212                    trc_o(:,:,jn) = zpisc(jn,4)
213            END WHERE
214         ENDIF
215      ENDDO
216
217
218
219      !-----------------------------
220      ! Assign ice-ocean cc ratios
221      !-----------------------------
222      ! 0 means zero concentration in sea ice
223      ! 1 means same concentration in the sea ice as in the ocean
224
225      ! Ice ocean salinity ratio
226      zsoce_bal   = 4. ; zsice_bal   = 2. !! Baltic ocean and sea ice salinities
227      zrs(1) = sice / soce                !! ice-ocean salinity ratio, global case
228      zrs(2) = zsice_bal / zsoce_bal      !! ice-ocean salinity ratio, Baltic case
229
230      DO jn = jp_pcs0, jp_pcs1
231         IF( trc_ice_ratio(jn) >= 0._wp )  zratio(jn,:) = trc_ice_ratio(jn)
232         IF( trc_ice_ratio(jn) == -1._wp ) zratio(jn,:) = zrs(:)
233         IF( trc_ice_ratio(jn) == -2._wp ) zratio(jn,:) = -9999.99_wp
234      END DO
235
236      !-------------------------------
237      ! Sea ice tracer concentrations
238      !-------------------------------
239      DO jn = jp_pcs0, jp_pcs1
240         !-- Everywhere but in the Baltic
241         IF ( trc_ice_ratio(jn) >= -1._wp ) THEN ! no prescribed conc. ; typically everything but iron)
242            trc_i(:,:,jn) = zratio(jn,1) * trc_o(:,:,jn) 
243         ELSE                                    ! prescribed concentration
244            trc_i(:,:,jn) = trc_ice_prescr(jn)
245         ENDIF
246       
247         !-- Baltic
248         IF( cp_cfg == "orca" ) THEN  ! Baltic treated seperately for ORCA configs
249            IF ( trc_ice_ratio(jn) >= - 1._wp ) THEN ! no prescribed conc. ; typically everything but iron)
250               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
251                      54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
252                     trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 
253               END WHERE
254            ELSE                                 ! prescribed tracer concentration in ice
255               WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND.    &
256                   54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp )
257                     trc_i(:,:,jn) = trc_ice_prescr(jn)
258               END WHERE
259            ENDIF ! trc_ice_ratio
260         ENDIF
261      !
262      END DO ! jn
263      !
264      DEALLOCATE( zratio, zpisc )
265      !
266
267   END SUBROUTINE p4z_ice_ini
268
269   SUBROUTINE p2z_ice_ini
270      !!----------------------------------------------------------------------
271      !!                   ***  ROUTINE p2z_ice_ini ***
272      !!
273      !! ** Purpose :   Initialisation of the LOBSTER biochemical model
274      !!----------------------------------------------------------------------
275   END SUBROUTINE p2z_ice_ini
276
277
278#else
279   !!----------------------------------------------------------------------
280   !!   Dummy module                            No PISCES biochemical model
281   !!----------------------------------------------------------------------
282CONTAINS
283   SUBROUTINE trc_ice_ini_pisces         ! Empty routine
284   END SUBROUTINE trc_ice_ini_pisces
285#endif
286
287   !!======================================================================
288END MODULE trcice_pisces
Note: See TracBrowser for help on using the repository browser.