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.
asmphyto3dbal_medusa.F90 in branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_3dnitbal/NEMOGCM/NEMO/OPA_SRC/ASM – NEMO

source: branches/UKMO/dev_r5518_GO6_package_asm_3d_bgc_3dnitbal/NEMOGCM/NEMO/OPA_SRC/ASM/asmphyto3dbal_medusa.F90

Last change on this file was 11990, checked in by dford, 4 years ago

Get the nitrogen balancing working with 3D chlorophyll increments.

File size: 21.2 KB
Line 
1MODULE asmphyto3dbal_medusa
2   !!======================================================================
3   !!                       ***  MODULE asmphyto2dbal_medusa  ***
4   !! Calculate increments to MEDUSA based on surface phyto2d increments
5   !!
6   !! IMPORTANT NOTE: This calls the bioanalysis routine of Hemmings et al.
7   !! For licensing reasons this is kept in its own internal Met Office
8   !! branch (dev/frdf/vn3.6_nitrogen_balancing) rather than in the Paris
9   !! repository, and must be merged in when building.
10   !!
11   !!======================================================================
12   !! History :  3.6  ! 2017-08 (D. Ford)  Adapted from asmphyto2dbal_hadocc
13   !!----------------------------------------------------------------------
14#if defined key_asminc && defined key_medusa && defined key_foam_medusa
15   !!----------------------------------------------------------------------
16   !! 'key_asminc'          : assimilation increment interface
17   !! 'key_medusa'          : MEDUSA model
18   !! 'key_foam_medusa'     : MEDUSA extras for FOAM OBS and ASM
19   !!----------------------------------------------------------------------
20   !! asm_phyto2d_bal_medusa : routine to calculate increments to MEDUSA
21   !!----------------------------------------------------------------------
22   USE par_kind,      ONLY: wp             ! kind parameters
23   USE par_oce,       ONLY: jpi, jpj, jpk  ! domain array sizes
24   USE dom_oce,       ONLY: gdepw_n        ! domain information
25   USE zdftmx,        ONLY: ln_tmx_itf, &  ! Indonesian Throughflow
26      &                     mask_itf       ! tidal mixing mask
27   USE iom                                 ! i/o
28   USE sms_medusa                          ! MEDUSA parameters
29   USE par_medusa                          ! MEDUSA parameters
30   USE par_trc,       ONLY: jptra          ! Tracer parameters
31   USE bioanalysis                         ! Nitrogen balancing
32
33   IMPLICIT NONE
34   PRIVATE                   
35
36   PUBLIC asm_phyto3d_bal_medusa
37
38   ! Default values for biological assimilation parameters
39   ! Should match Hemmings et al. (2008)
40   REAL(wp), PARAMETER :: balnutext  =  0.6    !: Default nutrient balancing factor
41   REAL(wp), PARAMETER :: balnutmin  =  0.1    !: Fraction of phytoplankton loss to nutrient
42   REAL(wp), PARAMETER :: r          =  1      !: Reliability of model specific growth rate
43   REAL(wp), PARAMETER :: beta_g     =  0.05   !: Low rate bias correction for growth rate estimator
44   REAL(wp), PARAMETER :: beta_l     =  0.05   !: Low rate bias correction for primary loss rate estimator
45   REAL(wp), PARAMETER :: beta_m     =  0.05   !: Low rate bias correction for secondary loss rate estimator
46   REAL(wp), PARAMETER :: a_g        =  0.2    !: Error s.d. for log10 of growth rate estimator
47   REAL(wp), PARAMETER :: a_l        =  0.4    !: Error s.d. for log10 of primary loss rate estimator
48   REAL(wp), PARAMETER :: a_m        =  0.7    !: Error s.d. for log10 of secondary loss rate estimator
49   REAL(wp), PARAMETER :: zfracb0    =  0.7    !: Base zooplankton fraction of loss to Z & D
50   REAL(wp), PARAMETER :: zfracb1    =  0      !: Phytoplankton sensitivity of zooplankton fraction
51   REAL(wp), PARAMETER :: qrfmax     =  1.1    !: Maximum nutrient limitation reduction factor
52   REAL(wp), PARAMETER :: qafmax     =  1.1    !: Maximum nutrient limitation amplification factor
53   REAL(wp), PARAMETER :: zrfmax     =  2      !: Maximum zooplankton reduction factor
54   REAL(wp), PARAMETER :: zafmax     =  2      !: Maximum zooplankton amplification factor
55   REAL(wp), PARAMETER :: prfmax     =  10     !: Maximum phytoplankton reduction factor (secondary)
56   REAL(wp), PARAMETER :: incphymin  =  0.0001 !: Minimum size of non-zero phytoplankton increment
57   REAL(wp), PARAMETER :: integnstep =  20     !: Number of steps for p.d.f. integral evaluation
58   REAL(wp), PARAMETER :: pthreshold =  0.01   !: Fractional threshold level for setting p.d.f.
59   !
60   LOGICAL,  PARAMETER :: diag_active           = .TRUE.  !: Depth-independent diagnostics
61   LOGICAL,  PARAMETER :: diag_fulldepth_active = .TRUE.  !: Full-depth diagnostics
62   LOGICAL,  PARAMETER :: gl_active             = .TRUE.  !: Growth/loss-based balancing
63   LOGICAL,  PARAMETER :: nbal_active           = .TRUE.  !: Nitrogen balancing
64   LOGICAL,  PARAMETER :: subsurf_active        = .TRUE.  !: Increments below MLD
65   LOGICAL,  PARAMETER :: deepneg_active        = .FALSE. !: Negative primary increments below MLD
66   LOGICAL,  PARAMETER :: deeppos_active        = .FALSE. !: Positive primary increments below MLD
67   LOGICAL,  PARAMETER :: nutprof_active        = .TRUE.  !: Secondary increments
68
69CONTAINS
70
71   SUBROUTINE asm_phyto3d_bal_medusa( pinc_chltot,                    &
72      &                               pincper,                        &
73      &                               p_maxchlinc,                    &
74      &                               pgrow_avg_bkg, ploss_avg_bkg,   &
75      &                               phyt_avg_bkg,                   &
76      &                               tracer_bkg, phyto3d_balinc )
77      !!---------------------------------------------------------------------------
78      !!                    ***  ROUTINE asm_phyto2d_bal_medusa  ***
79      !!
80      !! ** Purpose :   calculate increments to MEDUSA from 2d phytoplankton increments
81      !!
82      !! ** Method  :   average up MEDUSA to look like HadOCC
83      !!                call nitrogen balancing scheme
84      !!                separate back out to MEDUSA
85      !!
86      !! ** Action  :   populate phyto2d_balinc
87      !!
88      !! References :   Hemmings et al., 2008, J. Mar. Res.
89      !!                Ford et al., 2012, Ocean Sci.
90      !!---------------------------------------------------------------------------
91      !!
92      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk)       :: pinc_chltot    ! chltot increments
93      REAL(wp), INTENT(in   )                               :: pincper        ! Assimilation period
94      REAL(wp), INTENT(in   )                               :: p_maxchlinc    ! Max chl increment
95      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpk)       :: pgrow_avg_bkg  ! Avg phyto growth
96      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpk)       :: ploss_avg_bkg  ! Avg phyto loss
97      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpk)       :: phyt_avg_bkg   ! Avg phyto
98      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpk,jptra) :: tracer_bkg     ! State variables
99      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj,jpk,jptra) :: phyto3d_balinc ! Balancing increments
100      !!
101      INTEGER                                               :: ji, jj, jk, jn ! Loop counters
102      INTEGER                                               :: jkmax          ! Loop index
103      INTEGER,                 DIMENSION(6)                 :: i_tracer       ! Tracer indices
104      REAL(wp)                                              :: n2be_p         ! N:biomass for total phy
105      REAL(wp)                                              :: n2be_z         ! N:biomass for total zoo
106      REAL(wp)                                              :: n2be_d         ! N:biomass for detritus
107      REAL(wp)                                              :: zfrac          ! Fraction
108      REAL(wp)                                              :: zfrac_chn      ! Fraction of jpchn
109      REAL(wp)                                              :: zfrac_chd      ! Fraction of jpchd
110      REAL(wp)                                              :: zfrac_phn      ! Fraction of jpphn
111      REAL(wp)                                              :: zfrac_phd      ! Fraction of jpphd
112      REAL(wp)                                              :: zfrac_zmi      ! Fraction of jpzmi
113      REAL(wp)                                              :: zfrac_zme      ! Fraction of jpzme
114      REAL(wp)                                              :: zrat_pds_phd   ! Ratio of jppds:jpphd
115      REAL(wp)                                              :: zrat_chd_phd   ! Ratio of jpchd:jpphd
116      REAL(wp)                                              :: zrat_chn_phn   ! Ratio of jpchn:jpphn
117      REAL(wp)                                              :: zrat_phn_chn   ! Ratio of jpphn:jpchn
118      REAL(wp)                                              :: zrat_phd_chd   ! Ratio of jpphd:jpchd
119      REAL(wp)                                              :: zrat_pds_chd   ! Ratio of jppds:jpchd
120      REAL(wp)                                              :: zrat_dtc_det   ! Ratio of jpdtc:jpdet
121      REAL(wp),                DIMENSION(jpi,jpj,jpk)       :: cchl_p         ! C:Chl for total phy
122      REAL(wp),                DIMENSION(jpi,jpj)           :: cchl_p_2d      ! C:Chl for total phy
123      REAL(wp),                DIMENSION(16)                :: modparm        ! Model parameters
124      REAL(wp),                DIMENSION(20)                :: assimparm      ! Assimilation parameters
125      REAL(wp),                DIMENSION(jpi,jpj,jpk,6)     :: bstate         ! Background state
126      REAL(wp),                DIMENSION(jpi,jpj,1,6)       :: bstate_2d      ! Background state
127      REAL(wp),                DIMENSION(jpi,jpj,jpk,6)     :: outincs        ! Balancing increments
128      REAL(wp),                DIMENSION(jpi,jpj,1,6)       :: outincs_2d     ! Balancing increments
129      REAL(wp),                DIMENSION(jpi,jpj,22)        :: diag           ! Depth-indep diagnostics
130      REAL(wp),                DIMENSION(jpi,jpj,1,22)      :: diag_fulldepth ! Full-depth diagnostics
131      REAL(wp),                DIMENSION(jpi,jpj)           :: pinc_chltot_2d
132      REAL(wp),                DIMENSION(jpi,jpj)           :: pgrow_avg_bkg_2d
133      REAL(wp),                DIMENSION(jpi,jpj)           :: ploss_avg_bkg_2d
134      REAL(wp),                DIMENSION(jpi,jpj)           :: phyt_avg_bkg_2d
135      REAL(wp),                DIMENSION(jpi,jpj,1)         :: tmask_2d
136      REAL(wp),                DIMENSION(jpi,jpj)           :: pmld_2d
137      REAL(wp),                DIMENSION(jpi,jpj)           :: mld_max_bkg_2d
138      !!---------------------------------------------------------------------------
139
140      ! If p_maxchlinc > 0 then cap total absolute chlorophyll increment at that value
141      IF ( p_maxchlinc > 0.0 ) THEN
142         DO jk = 1, jpk
143            DO jj = 1, jpj
144               DO ji = 1, jpi
145                  pinc_chltot(ji,jj,jk) = MAX( -1.0 * p_maxchlinc, MIN( pinc_chltot(ji,jj,jk), p_maxchlinc ) )
146               END DO
147            END DO
148         END DO
149      ENDIF
150
151      ! Set up model parameters to be passed into Hemmings balancing routine.
152      ! For now these are hardwired to the standard HadOCC parameter values
153      ! (except C:N ratios) as this is what the scheme was developed for.
154      ! Obviously, HadOCC and MEDUSA are rather different models, so this
155      ! isn't ideal, but there's not always direct analogues between the two
156      ! parameter sets, so it's the easiest way to get something running.
157      ! In the longer term, some serious MarMOT-based development is required.
158      modparm(1)  = 0.1                               ! grow_sat
159      modparm(2)  = 2.0                               ! psmax
160      modparm(3)  = 0.845                             ! par
161      modparm(4)  = 0.02                              ! alpha
162      modparm(5)  = 0.05                              ! resp_rate
163      modparm(6)  = 0.05                              ! pmort_rate
164      modparm(7)  = 0.01                              ! phyto_min
165      modparm(8)  = 0.05                              ! z_mort_1
166      modparm(9)  = 1.0                               ! z_mort_2
167      modparm(10) = ( xthetapn  + xthetapd  ) / 2.0   ! c2n_p
168      modparm(11) = ( xthetazmi + xthetazme ) / 2.0   ! c2n_z
169      modparm(12) = xthetad                           ! c2n_d
170      modparm(13) = 0.01                              ! graze_threshold
171      modparm(14) = 2.0                               ! holling_coef
172      modparm(15) = 0.5                               ! graze_sat
173      modparm(16) = 2.0                               ! graze_max
174
175      ! Set up assimilation parameters to be passed into balancing routine
176      ! Not sure what assimparm(1) is meant to be, but it doesn't get used
177      assimparm(2)  = balnutext
178      assimparm(3)  = balnutmin
179      assimparm(4)  = r
180      assimparm(5)  = beta_g
181      assimparm(6)  = beta_l
182      assimparm(7)  = beta_m
183      assimparm(8)  = a_g
184      assimparm(9)  = a_l
185      assimparm(10) = a_m
186      assimparm(11) = zfracb0
187      assimparm(12) = zfracb1
188      assimparm(13) = qrfmax
189      assimparm(14) = qafmax
190      assimparm(15) = zrfmax
191      assimparm(16) = zafmax
192      assimparm(17) = prfmax
193      assimparm(18) = incphymin
194      assimparm(19) = integnstep
195      assimparm(20) = pthreshold
196
197      ! Set up external tracer indices array bstate
198      i_tracer(1) = 1   ! nutrient
199      i_tracer(2) = 2   ! phytoplankton
200      i_tracer(3) = 3   ! zooplankton
201      i_tracer(4) = 4   ! detritus
202      i_tracer(5) = 5   ! DIC
203      i_tracer(6) = 6   ! Alkalinity
204
205      ! Set background state
206      bstate(:,:,:,i_tracer(1)) = tracer_bkg(:,:,:,jpdin)
207      bstate(:,:,:,i_tracer(2)) = tracer_bkg(:,:,:,jpphn) + tracer_bkg(:,:,:,jpphd)
208      bstate(:,:,:,i_tracer(3)) = tracer_bkg(:,:,:,jpzmi) + tracer_bkg(:,:,:,jpzme)
209      bstate(:,:,:,i_tracer(4)) = tracer_bkg(:,:,:,jpdet)
210      bstate(:,:,:,i_tracer(5)) = tracer_bkg(:,:,:,jpdic)
211      bstate(:,:,:,i_tracer(6)) = tracer_bkg(:,:,:,jpalk)
212
213      ! Calculate carbon to chlorophyll ratio for combined phytoplankton
214      ! and nitrogen to biomass equivalent for PZD
215      ! Hardwire nitrogen mass to 14.01 for now as it doesn't seem to be set in MEDUSA
216      cchl_p(:,:,:) = 0.0
217      DO jk = 1, jpk
218         DO jj = 1, jpj
219            DO ji = 1, jpi
220               IF ( ( tracer_bkg(ji,jj,jk,jpchn) + tracer_bkg(ji,jj,jk,jpchd ) ) .GT. 0.0 ) THEN
221                  cchl_p(ji,jj,jk) = xmassc * ( ( tracer_bkg(ji,jj,jk,jpphn) * xthetapn ) +      &
222                     &                       ( tracer_bkg(ji,jj,jk,jpphd) * xthetapd )   ) /  &
223                     &            ( tracer_bkg(ji,jj,jk,jpchn) + tracer_bkg(ji,jj,jk,jpchd ) )
224               ENDIF
225            END DO
226         END DO
227      END DO
228      n2be_p = 14.01 + ( xmassc * ( ( xthetapn  + xthetapd  ) / 2.0 ) )
229      n2be_z = 14.01 + ( xmassc * ( ( xthetazmi + xthetazme ) / 2.0 ) )
230      n2be_d = 14.01 + ( xmassc * xthetad )
231
232      pmld_2d(:,:)        = 0.5
233      mld_max_bkg_2d(:,:) = 0.5
234
235      DO jk = 1, jpk
236
237         tmask_2d(:,:,1)       = tmask(:,:,jk)
238         pinc_chltot_2d(:,:)   = pinc_chltot(:,:,jk)
239         cchl_p_2d(:,:)        = cchl_p(:,:,jk)
240         phyt_avg_bkg_2d(:,:)  = phyt_avg_bkg(:,:,jk)
241         pgrow_avg_bkg_2d(:,:) = pgrow_avg_bkg(:,:,jk)
242         ploss_avg_bkg_2d(:,:) = ploss_avg_bkg(:,:,jk)
243         bstate_2d(:,:,1,:)    = bstate(:,:,jk,:)
244         outincs_2d(:,:,:,:)   = 0.0
245         
246         ! Call nitrogen balancing routine
247         CALL bio_analysis( jpi, jpj, 1, gdepw_n(:,:,2), i_tracer, modparm,   &
248            &               n2be_p, n2be_z, n2be_d, assimparm,                      &
249            &               INT(pincper), 1, INT(SUM(tmask_2d,3)), tmask_2d(:,:,:),       &
250            &               pmld_2d(:,:), mld_max_bkg_2d(:,:), pinc_chltot_2d(:,:), cchl_p_2d(:,:), &
251            &               nbal_active, phyt_avg_bkg_2d(:,:),                         &
252            &               gl_active, pgrow_avg_bkg_2d(:,:), ploss_avg_bkg_2d(:,:),      &
253            &               subsurf_active, deepneg_active,                         &
254            &               deeppos_active, nutprof_active,                         &
255            &               bstate_2d, outincs_2d,                                        &
256            &               diag_active, diag,                                      &
257            &               diag_fulldepth_active, diag_fulldepth )
258
259         outincs(:,:,jk,:) = outincs_2d(:,:,1,:)
260
261      END DO
262
263      ! Loop over each grid point partioning the increments
264      phyto3d_balinc(:,:,:,:) = 0.0
265      DO jk = 1, jpk
266         DO jj = 1, jpj
267            DO ji = 1, jpi
268
269               ! Phytoplankton
270               IF ( ( tracer_bkg(ji,jj,jk,jpphn) > 0.0 ) .AND. &
271                  & ( tracer_bkg(ji,jj,jk,jpphd) > 0.0 ) .AND. &
272                  & ( pinc_chltot(ji,jj,jk) /= 0.0 ) ) THEN
273                  ! Phytoplankton nitrogen split up based on existing ratios
274                  zfrac_phn = tracer_bkg(ji,jj,jk,jpphn) / &
275                     &        (tracer_bkg(ji,jj,jk,jpphn) + tracer_bkg(ji,jj,jk,jpphd))
276                  zfrac_phd = tracer_bkg(ji,jj,jk,jpphd) / &
277                     &        (tracer_bkg(ji,jj,jk,jpphn) + tracer_bkg(ji,jj,jk,jpphd))
278
279                  ! Phytoplankton silicate split up based on existing ratios
280                  zrat_pds_phd = tracer_bkg(ji,jj,jk,jppds) / tracer_bkg(ji,jj,jk,jpphd)
281
282                  ! Chlorophyll split up based on existing ratios to phytoplankton nitrogen
283                  ! Not using pinc_chltot directly as it's only 2D
284                  ! This method should give same results at surface as splitting pinc_chltot would
285                  zrat_chn_phn = tracer_bkg(ji,jj,jk,jpchn) / tracer_bkg(ji,jj,jk,jpphn)
286                  zrat_chd_phd = tracer_bkg(ji,jj,jk,jpchd) / tracer_bkg(ji,jj,jk,jpphd)
287
288                  phyto3d_balinc(ji,jj,jk,jpphn) = outincs(ji,jj,jk,i_tracer(2)) * zfrac_phn
289                  phyto3d_balinc(ji,jj,jk,jpphd) = outincs(ji,jj,jk,i_tracer(2)) * zfrac_phd
290                  phyto3d_balinc(ji,jj,jk,jppds) = phyto3d_balinc(ji,jj,jk,jpphd) * zrat_pds_phd
291                  phyto3d_balinc(ji,jj,jk,jpchn) = phyto3d_balinc(ji,jj,jk,jpphn) * zrat_chn_phn
292                  phyto3d_balinc(ji,jj,jk,jpchd) = phyto3d_balinc(ji,jj,jk,jpphd) * zrat_chd_phd
293               ENDIF
294
295               ! Zooplankton nitrogen split up based on existing ratios
296               IF ( ( tracer_bkg(ji,jj,jk,jpzmi) > 0.0 ) .AND. ( tracer_bkg(ji,jj,jk,jpzme) > 0.0 ) ) THEN
297                  zfrac_zmi = tracer_bkg(ji,jj,jk,jpzmi) / &
298                     &        (tracer_bkg(ji,jj,jk,jpzmi) + tracer_bkg(ji,jj,jk,jpzme))
299                  zfrac_zme = tracer_bkg(ji,jj,jk,jpzme) / &
300                     &        (tracer_bkg(ji,jj,jk,jpzmi) + tracer_bkg(ji,jj,jk,jpzme))
301                  phyto3d_balinc(ji,jj,jk,jpzmi) = outincs(ji,jj,jk,i_tracer(3)) * zfrac_zmi
302                  phyto3d_balinc(ji,jj,jk,jpzme) = outincs(ji,jj,jk,i_tracer(3)) * zfrac_zme
303               ENDIF
304
305               ! Nitrogen nutrient straight from balancing scheme
306               phyto3d_balinc(ji,jj,jk,jpdin) = outincs(ji,jj,jk,i_tracer(1))
307
308               ! Nitrogen detritus straight from balancing scheme
309               phyto3d_balinc(ji,jj,jk,jpdet) = outincs(ji,jj,jk,i_tracer(4))
310
311               ! DIC straight from balancing scheme
312               phyto3d_balinc(ji,jj,jk,jpdic) = outincs(ji,jj,jk,i_tracer(5))
313
314               ! Alkalinity straight from balancing scheme
315               phyto3d_balinc(ji,jj,jk,jpalk) = outincs(ji,jj,jk,i_tracer(6))
316
317               ! Remove diatom silicate increment from nutrient silicate to conserve mass
318               IF ( ( tracer_bkg(ji,jj,jk,jpsil) - phyto3d_balinc(ji,jj,jk,jppds) ) > 0.0 ) THEN
319                  phyto3d_balinc(ji,jj,jk,jpsil) = phyto3d_balinc(ji,jj,jk,jppds) * (-1.0)
320               ENDIF
321
322               ! Carbon detritus based on existing ratios
323               IF ( ( tracer_bkg(ji,jj,jk,jpdet) > 0.0 ) .AND. ( tracer_bkg(ji,jj,jk,jpdtc) > 0.0 ) ) THEN
324                  zrat_dtc_det = tracer_bkg(ji,jj,jk,jpdtc) / tracer_bkg(ji,jj,jk,jpdet)
325                  phyto3d_balinc(ji,jj,jk,jpdtc) = phyto3d_balinc(ji,jj,jk,jpdet) * zrat_dtc_det
326               ENDIF
327
328               ! Do nothing with iron or oxygen for the time being
329               phyto3d_balinc(ji,jj,jk,jpfer) = 0.0
330               phyto3d_balinc(ji,jj,jk,jpoxy) = 0.0
331
332            END DO
333         END DO
334      END DO
335     
336      ! If performing extra tidal mixing in the Indonesian Throughflow,
337      ! increments have been found to make the carbon cycle unstable
338      ! Therefore, mask these out
339      IF ( ln_tmx_itf ) THEN
340         DO jn = 1, jptra
341            DO jk = 1, jpk
342               phyto3d_balinc(:,:,jk,jn) = phyto3d_balinc(:,:,jk,jn) * ( 1.0 - mask_itf(:,:) )
343            END DO
344         END DO
345      ENDIF
346
347   END SUBROUTINE asm_phyto3d_bal_medusa
348
349#else
350   !!----------------------------------------------------------------------
351   !!   Default option : Empty routine
352   !!----------------------------------------------------------------------
353CONTAINS
354   SUBROUTINE asm_phyto3d_bal_medusa(pinc_chltot,                    &
355      &                              pincper,                        &
356      &                              p_maxchlinc,                    &
357      &                              pgrow_avg_bkg, ploss_avg_bkg,   &
358      &                              phyt_avg_bkg,                   &
359      &                              tracer_bkg, phyto3d_balinc )
360      REAL    :: pinc_chltot(:,:,:)
361      REAL    :: pincper
362      REAL    :: p_maxchlinc
363      REAL    :: pgrow_avg_bkg(:,:,:)
364      REAL    :: ploss_avg_bkg(:,:,:)
365      REAL    :: phyt_avg_bkg(:,:,:)
366      REAL    :: tracer_bkg(:,:,:,:)
367      REAL    :: phyto2d_balinc(:,:,:,:)
368      WRITE(*,*) 'asm_phyto3d_bal_medusa: You should not have seen this print! error?'
369   END SUBROUTINE asm_phyto3d_bal_medusa
370#endif
371
372   !!======================================================================
373END MODULE asmphyto3dbal_medusa
Note: See TracBrowser for help on using the repository browser.