Changeset 7646 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
- Timestamp:
- 2017-02-06T10:25:03+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r6140 r7646 5 5 !!====================================================================== 6 6 !! History : 3.5 ! 2012-07 (O. Aumont, A. Tagliabue, C. Ethe) Original code 7 !!---------------------------------------------------------------------- 8 #if defined key_pisces 9 !!---------------------------------------------------------------------- 10 !! 'key_top' and TOP models 11 !! 'key_pisces' PISCES bio-model 7 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 12 8 !!---------------------------------------------------------------------- 13 9 !! p4z_fechem : Compute remineralization/scavenging of iron … … 18 14 USE trc ! passive tracers common variables 19 15 USE sms_pisces ! PISCES Source Minus Sink variables 20 USE p4zopt ! optical model21 16 USE p4zche ! chemical model 22 17 USE p4zsbc ! Boundary conditions from sediments … … 30 25 PUBLIC p4z_fechem_init ! called in trcsms_pisces.F90 31 26 32 LOGICAL :: ln_fechem !: boolean for complex iron chemistry following Tagliabue and voelker 33 LOGICAL :: ln_ligvar !: boolean for variable ligand concentration following Tagliabue and voelker 34 REAL(wp), PUBLIC :: xlam1 !: scavenging rate of Iron 35 REAL(wp), PUBLIC :: xlamdust !: scavenging rate of Iron by dust 36 REAL(wp), PUBLIC :: ligand !: ligand concentration in the ocean 37 38 !!gm Not DOCTOR norm !!! 27 !! * Shared module variables 28 LOGICAL :: ln_fechem !: boolean for complex iron chemistry following Tagliabue and voelker 29 LOGICAL :: ln_ligvar !: boolean for variable ligand concentration following Tagliabue and voelker 30 LOGICAL :: ln_fecolloid !: boolean for variable colloidal fraction 31 REAL(wp), PUBLIC :: xlam1 !: scavenging rate of Iron 32 REAL(wp), PUBLIC :: xlamdust !: scavenging rate of Iron by dust 33 REAL(wp), PUBLIC :: ligand !: ligand concentration in the ocean 34 REAL(wp), PUBLIC :: kfep !: rate constant for nanoparticle formation 35 39 36 REAL(wp) :: kl1, kl2, kb1, kb2, ks, kpr, spd, con, kth 40 37 … … 59 56 !! and one particulate form (ln_fechem) 60 57 !!--------------------------------------------------------------------- 61 INTEGER, INTENT(in) :: kt, knt ! ocean time step62 !63 INTEGER :: ji, jj, jk, jic64 CHARACTER (len=25) :: charout58 ! 59 INTEGER, INTENT(in) :: kt, knt ! ocean time step 60 ! 61 INTEGER :: ji, jj, jk, jic, jn 65 62 REAL(wp) :: zdep, zlam1a, zlam1b, zlamfac 66 REAL(wp) :: zkeq, zfeequi, zfesatur, zfecoll 63 REAL(wp) :: zkeq, zfeequi, zfesatur, zfecoll, fe3sol 67 64 REAL(wp) :: zdenom1, zscave, zaggdfea, zaggdfeb, zcoag 68 65 REAL(wp) :: ztrc, zdust 69 #if ! defined key_kriest 70 REAL(wp) :: zdenom, zdenom2 71 #endif 72 REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig 73 REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP 66 REAL(wp) :: zdenom2 67 REAL(wp) :: zzFeL1, zzFeL2, zzFe2, zzFeP, zzFe3, zzstrn2 68 REAL(wp) :: zrum, zcodel, zargu, zlight 74 69 REAL(wp) :: zkox, zkph1, zkph2, zph, zionic, ztligand 75 70 REAL(wp) :: za, zb, zc, zkappa1, zkappa2, za0, za1, za2 76 71 REAL(wp) :: zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2 77 REAL(wp) :: ztfe, zoxy 78 REAL(wp) :: zstep 72 REAL(wp) :: ztfe, zoxy, zhplus 73 REAL(wp) :: zaggliga, zaggligb 74 REAL(wp) :: dissol, zligco 75 CHARACTER (len=25) :: charout 76 REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig, precip 77 REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP 78 REAL(wp), POINTER, DIMENSION(:,: ) :: zstrn, zstrn2 79 79 !!--------------------------------------------------------------------- 80 80 ! 81 81 IF( nn_timing == 1 ) CALL timing_start('p4z_fechem') 82 82 ! 83 CALL wrk_alloc( jpi,jpj,jpk, zFe3, zFeL1, zTL1, ztotlig ) 83 ! Allocate temporary workspace 84 CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 84 85 zFe3 (:,:,:) = 0. 85 86 zFeL1(:,:,:) = 0. 86 87 zTL1 (:,:,:) = 0. 87 88 IF( ln_fechem ) THEN 88 CALL wrk_alloc( jpi,jpj,jpk, zFe2, zFeL2, zTL2, zFeP ) 89 CALL wrk_alloc( jpi, jpj, zstrn, zstrn2 ) 90 CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 89 91 zFe2 (:,:,:) = 0. 90 92 zFeL2(:,:,:) = 0. … … 100 102 ztotlig(:,:,:) = MIN( ztotlig(:,:,:), 10. ) 101 103 ELSE 102 ztotlig(:,:,:) = ligand * 1E9 104 IF( ln_ligand ) THEN ; ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 105 ELSE ; ztotlig(:,:,:) = ligand * 1E9 106 ENDIF 103 107 ENDIF 104 108 105 109 IF( ln_fechem ) THEN 110 ! compute the day length depending on latitude and the day 111 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 112 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) ) 113 114 ! day length in hours 115 zstrn(:,:) = 0. 116 DO jj = 1, jpj 117 DO ji = 1, jpi 118 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 119 zargu = MAX( -1., MIN( 1., zargu ) ) 120 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 121 END DO 122 END DO 123 124 ! Maximum light intensity 125 zstrn2(:,:) = zstrn(:,:) / 24. 126 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 127 zstrn(:,:) = 24. / zstrn(:,:) 128 106 129 ! ------------------------------------------------------------ 107 130 ! NEW FE CHEMISTRY ROUTINE from Tagliabue and Volker (2009) … … 109 132 ! Chemistry is supposed to be fast enough to be at equilibrium 110 133 ! ------------------------------------------------------------ 111 DO jk = 1, jpkm1 134 DO jn = 1, 2 135 DO jk = 1, jpkm1 112 136 DO jj = 1, jpj 113 137 DO ji = 1, jpi 138 zlight = etot(ji,jj,jk) * zstrn(ji,jj) * REAL( 2-jn, wp ) 139 zzstrn2 = zstrn2(ji,jj) * REAL( 2-jn, wp ) + (1. - zstrn2(ji,jj) ) * REAL( jn-1, wp ) 114 140 ! Calculate ligand concentrations : assume 2/3rd of excess goes to 115 141 ! strong ligands (L1) and 1/3rd to weak ligands (L2) … … 118 144 zTL2(ji,jj,jk) = ligand * 1E9 - 0.000001 + 0.33 * ztligand 119 145 ! ionic strength from Millero et al. 1987 120 zionic = 19.9201 * tsn(ji,jj,jk,jp_sal) / ( 1000. - 1.00488 * tsn(ji,jj,jk,jp_sal) + rtrn )121 146 zph = -LOG10( MAX( hi(ji,jj,jk), rtrn) ) 122 zoxy = trb(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 )147 zoxy = trb(ji,jj,jk,jpoxy) 123 148 ! Fe2+ oxydation rate from Santana-Casiano et al. (2005) 124 zkox = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( t sn(ji,jj,jk,jp_tem) + 273.15 ) &125 & - 0.04406 * SQRT( tsn(ji,jj,jk,jp_sal) ) - 0.002847 * tsn(ji,jj,jk,jp_sal)149 zkox = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tempis(ji,jj,jk) + 273.15 ) & 150 & - 0.04406 * SQRT( salinprac(ji,jj,jk) ) - 0.002847 * salinprac(ji,jj,jk) 126 151 zkox = ( 10.** zkox ) * spd 127 152 zkox = zkox * MAX( 1.e-6, zoxy) / ( chemo2(ji,jj,jk) + rtrn ) 128 153 ! PHOTOREDUCTION of complexed iron : Tagliabue and Arrigo (2006) 129 zkph2 = MAX( 0., 15. * etot(ji,jj,jk) / ( etot(ji,jj,jk) + 2. ))154 zkph2 = MAX( 0., 15. * zlight / ( zlight + 2. ) ) * (1. - fr_i(ji,jj)) 130 155 zkph1 = zkph2 / 5. 131 156 ! pass the dfe concentration from PISCES … … 167 192 zphi = ACOS( zfff ) 168 193 DO jic = 1, 3 169 zfunc = -2 * zr * COS( zphi / 3. + 2. * FLOAT( jic - 1) * rpi / 3. ) - za2 / 3.194 zfunc = -2 * zr * COS( zphi / 3. + 2. * REAL( jic - 1, wp ) * rpi / 3. ) - za2 / 3. 170 195 IF( zfunc > 0. .AND. zfunc <= ztfe) zxs = zfunc 171 196 END DO … … 173 198 ENDIF 174 199 ! solve for the other Fe species 175 z Fe3(ji,jj,jk) = MAX( 0., zxs )176 z Fep(ji,jj,jk) = MAX( 0., ( ks * zFe3(ji,jj,jk)/ kpr ) )200 zzFe3 = MAX( 0., zxs ) 201 zzFep = MAX( 0., ( ks * zzFe3 / kpr ) ) 177 202 zkappa2 = ( kb2 + zkph2 ) / kl2 178 zFeL2(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * zTL2(ji,jj,jk) ) / ( zkappa2 + zFe3(ji,jj,jk) ) ) 179 zFeL1(ji,jj,jk) = MAX( 0., ( ztfe / zb - za / zb * zFe3(ji,jj,jk) - zc / zb * zFeL2(ji,jj,jk) ) ) 180 zFe2 (ji,jj,jk) = MAX( 0., ( ( zkph1 * zFeL1(ji,jj,jk) + zkph2 * zFeL2(ji,jj,jk) ) / zkox ) ) 203 zzFeL2 = MAX( 0., ( zzFe3 * zTL2(ji,jj,jk) ) / ( zkappa2 + zzFe3 ) ) 204 zzFeL1 = MAX( 0., ( ztfe / zb - za / zb * zzFe3 - zc / zb * zzFeL2 ) ) 205 zzFe2 = MAX( 0., ( ( zkph1 * zzFeL1 + zkph2 * zzFeL2 ) / zkox ) ) 206 zFe3(ji,jj,jk) = zFe3(ji,jj,jk) + zzFe3 * zzstrn2 207 zFe2(ji,jj,jk) = zFe2(ji,jj,jk) + zzFe2 * zzstrn2 208 zFeL2(ji,jj,jk) = zFeL2(ji,jj,jk) + zzFeL2 * zzstrn2 209 zFeL1(ji,jj,jk) = zFeL1(ji,jj,jk) + zzFeL1 * zzstrn2 210 zFeP(ji,jj,jk) = zFeP(ji,jj,jk) + zzFeP * zzstrn2 181 211 END DO 182 212 END DO 213 END DO 183 214 END DO 184 215 ELSE … … 206 237 ! 207 238 ENDIF 208 ! 239 209 240 zdust = 0. ! if no dust available 210 !211 241 DO jk = 1, jpkm1 212 242 DO jj = 1, jpj 213 243 DO ji = 1, jpi 214 zstep = xstep215 # if defined key_degrad216 zstep = zstep * facvol(ji,jj,jk)217 # endif218 244 ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water. 219 245 ! This parameterization assumes a simple second order kinetics (k[Particles][Fe]). … … 224 250 zfecoll = ( 0.3 * zFeL1(ji,jj,jk) + 0.5 * zFeL2(ji,jj,jk) ) * 1E-9 225 251 ELSE 226 zfeequi = zFe3(ji,jj,jk) * 1E-9 227 zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 252 zfeequi = zFe3(ji,jj,jk) * 1E-9 253 IF (ln_fecolloid) THEN 254 zhplus = max( rtrn, hi(ji,jj,jk) ) 255 fe3sol = fesol(ji,jj,jk,1) * ( zhplus**3 + fesol(ji,jj,jk,2) * zhplus**2 & 256 & + fesol(ji,jj,jk,3) * zhplus + fesol(ji,jj,jk,4) & 257 & + fesol(ji,jj,jk,5) / zhplus ) 258 zfecoll = max( ( 0.1 * zFeL1(ji,jj,jk) * 1E-9 ), ( zFeL1(ji,jj,jk) * 1E-9 -fe3sol ) ) 259 ELSE 260 zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 261 fe3sol = 0. 262 ENDIF 228 263 ENDIF 229 #if defined key_kriest 230 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 231 #else 264 ! 232 265 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 233 #endif234 266 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s 235 267 zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc 236 zscave = zfeequi * zlam1b * zstep268 zscave = zfeequi * zlam1b * xstep 237 269 238 270 ! Compute the different ratios for scavenging of iron … … 240 272 ! --------------------------------------------------------- 241 273 zdenom1 = xlam1 * trb(ji,jj,jk,jppoc) / zlam1b 242 #if ! defined key_kriest243 274 zdenom2 = xlam1 * trb(ji,jj,jk,jpgoc) / zlam1b 244 #endif245 275 246 276 ! Increased scavenging for very high iron concentrations found near the coasts … … 249 279 zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 250 280 zlamfac = MIN( 1. , zlamfac ) 251 !!gm very small BUG : it is unlikely but possible that gdept_n = 0 .....252 281 zdep = MIN( 1., 1000. / gdept_n(ji,jj,jk) ) 253 282 zlam1b = xlam1 * MAX( 0.e0, ( trb(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) ) 254 zcoag = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * trb(ji,jj,jk,jpfer)283 zcoag = zfeequi * zlam1b * xstep + 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 255 284 256 285 ! Compute the coagulation of colloidal iron. This parameterization … … 259 288 ! ---------------------------------------------------------------- 260 289 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 261 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) + 5.09E3 * trb(ji,jj,jk,jppoc) ) 262 zaggdfea = zlam1a * zstep * zfecoll 263 #if defined key_kriest 264 zaggdfeb = 0. 290 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 291 zaggdfea = zlam1a * xstep * zfecoll 265 292 ! 266 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag267 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea + zaggdfeb268 #else269 293 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 270 zaggdfeb = zlam1b * zstep * zfecoll294 zaggdfeb = zlam1b * xstep * zfecoll 271 295 ! 272 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag 296 ! precipitation of Fe3+, creation of nanoparticles 297 precip(ji,jj,jk) = MAX( 0., ( zfeequi - fe3sol ) ) * kfep * xstep 298 ! 299 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb & 300 & - zcoag - precip(ji,jj,jk) 273 301 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 274 302 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 275 #endif 303 ! 276 304 END DO 277 305 END DO … … 280 308 ! Define the bioavailable fraction of iron 281 309 ! ---------------------------------------- 282 IF( ln_fechem ) THEN 283 biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 284 ELSE 285 biron(:,:,:) = trb(:,:,:,jpfer) 286 ENDIF 287 310 IF( ln_fechem ) THEN ; biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 311 ELSE ; biron(:,:,:) = trb(:,:,:,jpfer) 312 ENDIF 313 ! 314 IF( ln_ligand ) THEN 315 ! 316 DO jk = 1, jpkm1 317 DO jj = 1, jpj 318 DO ji = 1, jpi 319 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 320 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 321 ! 322 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 323 zligco = MAX( ( 0.1 * trb(ji,jj,jk,jplgw) ), ( trb(ji,jj,jk,jplgw) - fe3sol ) ) 324 zaggliga = zlam1a * xstep * zligco 325 zaggligb = zlam1b * xstep * zligco 326 tra(ji,jj,jk,jpfep) = tra(ji,jj,jk,jpfep) + precip(ji,jj,jk) 327 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb 328 END DO 329 END DO 330 END DO 331 ! 332 IF( .NOT.ln_fechem) THEN 333 plig(:,:,:) = MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trb(:,:,:,jpfer) +rtrn ) ) ) 334 plig(:,:,:) = MAX( 0. , plig(:,:,:) ) 335 ENDIF 336 ! 337 ENDIF 288 338 ! Output of some diagnostics variables 289 339 ! --------------------------------- 290 IF( lk_iomput .AND. knt == nrdttrc ) THEN 340 IF( lk_iomput ) THEN 341 IF( knt == nrdttrc ) THEN 291 342 IF( iom_use("Fe3") ) CALL iom_put("Fe3" , zFe3 (:,:,:) * tmask(:,:,:) ) ! Fe3+ 292 343 IF( iom_use("FeL1") ) CALL iom_put("FeL1" , zFeL1 (:,:,:) * tmask(:,:,:) ) ! FeL1 … … 300 351 IF( iom_use("TL2") ) CALL iom_put("TL2" , zTL2 (:,:,:) * tmask(:,:,:) ) ! TL2 301 352 ENDIF 353 ENDIF 302 354 ENDIF 303 355 … … 308 360 ENDIF 309 361 ! 310 CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig ) 311 IF( ln_fechem ) CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 362 CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 363 IF( ln_fechem ) THEN 364 CALL wrk_dealloc( jpi, jpj, zstrn, zstrn2 ) 365 CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 366 ENDIF 312 367 ! 313 368 IF( nn_timing == 1 ) CALL timing_stop('p4z_fechem') … … 328 383 !! 329 384 !!---------------------------------------------------------------------- 330 NAMELIST/nampisfer/ ln_fechem, ln_ligvar, xlam1, xlamdust, ligand385 NAMELIST/nampisfer/ ln_fechem, ln_ligvar, ln_fecolloid, xlam1, xlamdust, ligand, kfep 331 386 INTEGER :: ios ! Local integer output status for namelist read 332 387 … … 344 399 WRITE(numout,*) ' Namelist parameters for Iron chemistry, nampisfer' 345 400 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 346 WRITE(numout,*) ' enable complex iron chemistry scheme ln_fechem =', ln_fechem 347 WRITE(numout,*) ' variable concentration of ligand ln_ligvar =', ln_ligvar 348 WRITE(numout,*) ' scavenging rate of Iron xlam1 =', xlam1 349 WRITE(numout,*) ' scavenging rate of Iron by dust xlamdust =', xlamdust 350 WRITE(numout,*) ' ligand concentration in the ocean ligand =', ligand 401 WRITE(numout,*) ' enable complex iron chemistry scheme ln_fechem =', ln_fechem 402 WRITE(numout,*) ' variable concentration of ligand ln_ligvar =', ln_ligvar 403 WRITE(numout,*) ' Variable colloidal fraction of Fe3+ ln_fecolloid =', ln_fecolloid 404 WRITE(numout,*) ' scavenging rate of Iron xlam1 =', xlam1 405 WRITE(numout,*) ' scavenging rate of Iron by dust xlamdust =', xlamdust 406 WRITE(numout,*) ' ligand concentration in the ocean ligand =', ligand 407 WRITE(numout,*) ' rate constant for nanoparticle formation kfep =', kfep 351 408 ENDIF 352 409 ! … … 377 434 ! 378 435 END SUBROUTINE p4z_fechem_init 379 380 #else381 !!======================================================================382 !! Dummy module : No PISCES bio-model383 !!======================================================================384 CONTAINS385 SUBROUTINE p4z_fechem ! Empty routine386 END SUBROUTINE p4z_fechem387 #endif388 389 436 !!====================================================================== 390 437 END MODULE p4zfechem
Note: See TracChangeset
for help on using the changeset viewer.