Changeset 10975 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zfechem.F90
- Timestamp:
- 2019-05-13T18:34:33+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zfechem.F90
r10416 r10975 38 38 CONTAINS 39 39 40 SUBROUTINE p4z_fechem( kt, knt )40 SUBROUTINE p4z_fechem( kt, knt, Kbb, Kmm, Krhs ) 41 41 !!--------------------------------------------------------------------- 42 42 !! *** ROUTINE p4z_fechem *** … … 48 48 !!--------------------------------------------------------------------- 49 49 INTEGER, INTENT(in) :: kt, knt ! ocean time step 50 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 50 51 ! 51 52 INTEGER :: ji, jj, jk, jic, jn … … 79 80 ! ------------------------------------------------- 80 81 IF( ln_ligvar ) THEN 81 ztotlig(:,:,:) = 0.09 * tr b(:,:,:,jpdoc) * 1E6 + ligand * 1E982 ztotlig(:,:,:) = 0.09 * tr(:,:,:,jpdoc,Kbb) * 1E6 + ligand * 1E9 82 83 ztotlig(:,:,:) = MIN( ztotlig(:,:,:), 10. ) 83 84 ELSE 84 IF( ln_ligand ) THEN ; ztotlig(:,:,:) = tr b(:,:,:,jplgw) * 1E985 IF( ln_ligand ) THEN ; ztotlig(:,:,:) = tr(:,:,:,jplgw,Kbb) * 1E9 85 86 ELSE ; ztotlig(:,:,:) = ligand * 1E9 86 87 ENDIF … … 98 99 zkeq = fekeq(ji,jj,jk) 99 100 zfesatur = zTL1(ji,jj,jk) * 1E-9 100 ztfe = tr b(ji,jj,jk,jpfer)101 ztfe = tr(ji,jj,jk,jpfer,Kbb) 101 102 ! Fe' is the root of a 2nd order polynom 102 103 zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq - zkeq * ztfe ) & … … 104 105 & + 4. * ztfe * zkeq) ) / ( 2. * zkeq ) 105 106 zFe3 (ji,jj,jk) = zFe3(ji,jj,jk) * 1E9 106 zFeL1(ji,jj,jk) = MAX( 0., tr b(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) )107 zFeL1(ji,jj,jk) = MAX( 0., tr(ji,jj,jk,jpfer,Kbb) * 1E9 - zFe3(ji,jj,jk) ) 107 108 END DO 108 109 END DO … … 132 133 precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * 1E-9 - fe3sol ) ) * kfep * xstep 133 134 ! 134 ztrc = ( tr b(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6135 ztrc = ( tr(ji,jj,jk,jppoc,Kbb) + tr(ji,jj,jk,jpgoc,Kbb) + tr(ji,jj,jk,jpcal,Kbb) + tr(ji,jj,jk,jpgsi,Kbb) ) * 1.e6 135 136 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) & 136 & * EXP( -gdept _n(ji,jj,jk) / 540. )137 & * EXP( -gdept(ji,jj,jk,Kmm) / 540. ) 137 138 IF (ln_ligand) THEN 138 zxlam = xlam1 * MAX( 1.E-3, EXP(-2 * etot(ji,jj,jk) / 10. ) * (1. - EXP(-2 * tr b(ji,jj,jk,jpoxy) / 100.E-6 ) ))139 zxlam = xlam1 * MAX( 1.E-3, EXP(-2 * etot(ji,jj,jk) / 10. ) * (1. - EXP(-2 * tr(ji,jj,jk,jpoxy,Kbb) / 100.E-6 ) )) 139 140 ELSE 140 141 zxlam = xlam1 * 1.0 … … 146 147 ! to later allocate scavenged iron to the different organic pools 147 148 ! --------------------------------------------------------- 148 zdenom1 = zxlam * tr b(ji,jj,jk,jppoc) / zlam1b149 zdenom2 = zxlam * tr b(ji,jj,jk,jpgoc) / zlam1b149 zdenom1 = zxlam * tr(ji,jj,jk,jppoc,Kbb) / zlam1b 150 zdenom2 = zxlam * tr(ji,jj,jk,jpgoc,Kbb) / zlam1b 150 151 151 152 ! Increased scavenging for very high iron concentrations found near the coasts … … 154 155 zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 155 156 zlamfac = MIN( 1. , zlamfac ) 156 zdep = MIN( 1., 1000. / gdept _n(ji,jj,jk) )157 zcoag = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * tr b(ji,jj,jk,jpfer)157 zdep = MIN( 1., 1000. / gdept(ji,jj,jk,Kmm) ) 158 zcoag = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * tr(ji,jj,jk,jpfer,Kbb) 158 159 159 160 ! Compute the coagulation of colloidal iron. This parameterization … … 161 162 ! It requires certainly some more work as it is very poorly constrained. 162 163 ! ---------------------------------------------------------------- 163 zlam1a = ( 0.369 * 0.3 * tr b(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) &164 & + ( 114. * 0.3 * tr b(ji,jj,jk,jpdoc) )164 zlam1a = ( 0.369 * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 102.4 * tr(ji,jj,jk,jppoc,Kbb) ) * xdiss(ji,jj,jk) & 165 & + ( 114. * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) ) 165 166 zaggdfea = zlam1a * xstep * zfecoll 166 167 ! 167 zlam1b = 3.53E3 * tr b(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk)168 zlam1b = 3.53E3 * tr(ji,jj,jk,jpgoc,Kbb) * xdiss(ji,jj,jk) 168 169 zaggdfeb = zlam1b * xstep * zfecoll 169 170 ! 170 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb &171 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zscave - zaggdfea - zaggdfeb & 171 172 & - zcoag - precip(ji,jj,jk) 172 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea173 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb173 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + zscave * zdenom1 + zaggdfea 174 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zscave * zdenom2 + zaggdfeb 174 175 zscav3d(ji,jj,jk) = zscave 175 176 zcoll3d(ji,jj,jk) = zaggdfea + zaggdfeb … … 181 182 ! Define the bioavailable fraction of iron 182 183 ! ---------------------------------------- 183 biron(:,:,:) = tr b(:,:,:,jpfer)184 biron(:,:,:) = tr(:,:,:,jpfer,Kbb) 184 185 ! 185 186 IF( ln_ligand ) THEN … … 188 189 DO jj = 1, jpj 189 190 DO ji = 1, jpi 190 zlam1a = ( 0.369 * 0.3 * tr b(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) &191 & + ( 114. * 0.3 * tr b(ji,jj,jk,jpdoc) )191 zlam1a = ( 0.369 * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 102.4 * tr(ji,jj,jk,jppoc,Kbb) ) * xdiss(ji,jj,jk) & 192 & + ( 114. * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) ) 192 193 ! 193 zlam1b = 3.53E3 * tr b(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk)194 zligco = 0.5 * tr n(ji,jj,jk,jplgw)194 zlam1b = 3.53E3 * tr(ji,jj,jk,jpgoc,Kbb) * xdiss(ji,jj,jk) 195 zligco = 0.5 * tr(ji,jj,jk,jplgw,Kmm) 195 196 zaggliga = zlam1a * xstep * zligco 196 197 zaggligb = zlam1b * xstep * zligco 197 tr a(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb198 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) - zaggliga - zaggligb 198 199 zlcoll3d(ji,jj,jk) = zaggliga + zaggligb 199 200 END DO … … 201 202 END DO 202 203 ! 203 plig(:,:,:) = MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( tr b(:,:,:,jpfer) +rtrn ) ) )204 plig(:,:,:) = MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( tr(:,:,:,jpfer,Kbb) +rtrn ) ) ) 204 205 ! 205 206 ENDIF … … 223 224 WRITE(charout, FMT="('fechem')") 224 225 CALL prt_ctl_trc_info(charout) 225 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)226 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 226 227 ENDIF 227 228 !
Note: See TracChangeset
for help on using the changeset viewer.