98 & LBi, UBi, LBj, UBj, UBk, UBt, &
99 & IminS, ImaxS, JminS, JmaxS, &
104#if defined IRON_LIMIT && defined IRON_RELAX
121 integer,
intent(in) :: ng, tile
122 integer,
intent(in) :: LBi, UBi, LBj, UBj, UBk, UBt
123 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
124 integer,
intent(in) :: nstp, nnew
128 real(r8),
intent(in) :: rmask(LBi:,LBj:)
130# if defined IRON_LIMIT && defined IRON_RELAX
131 real(r8),
intent(in) :: h(LBi:,LBj:)
133 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
134 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
135 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
136 real(r8),
intent(in) :: srflx(LBi:,LBj:)
137 real(r8),
intent(in) :: t(LBi:,LBj:,:,:,:)
139 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
140 real(r8),
intent(in) :: tl_z_r(LBi:,LBj:,:)
141 real(r8),
intent(in) :: tl_z_w(LBi:,LBj:,0:)
142 real(r8),
intent(in) :: tl_srflx(LBi:,LBj:)
143 real(r8),
intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
146 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
148# if defined IRON_LIMIT && defined IRON_RELAX
149 real(r8),
intent(in) :: h(LBi:UBi,LBj:UBj)
151 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,UBk)
152 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,UBk)
153 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:UBk)
154 real(r8),
intent(in) :: srflx(LBi:UBi,LBj:UBj)
155 real(r8),
intent(in) :: t(LBi:UBi,LBj:UBj,UBk,3,UBt)
157 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,UBk)
158 real(r8),
intent(in) :: tl_z_r(LBi:UBi,LBj:UBj,UBk)
159 real(r8),
intent(in) :: tl_z_w(LBi:UBi,LBj:UBj,0:UBk)
160 real(r8),
intent(in) :: tl_srflx(LBi:UBi,LBj:UBj)
161 real(r8),
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,UBk,3,UBt)
166 integer,
parameter :: Nsink = 2
168 integer :: Iter, i, ibio, isink, itime, itrc, iTrcMax, j, k, ks
171 integer,
dimension(Nsink) :: idsink
173 real(r8),
parameter :: MinVal = 1.0e-6_r8
175 real(r8) :: Att, ExpAtt, Itop, PAR
176 real(r8) :: tl_Att, tl_ExpAtt, tl_Itop, tl_PAR
177 real(r8) :: cff, cff1, cff2, cff3, cff4, cff5, cff6, dtdays
178 real(r8) :: tl_cff, tl_cff1, tl_cff4, tl_cff5, tl_cff6
179 real(r8) :: cffL, cffR, cu, dltL, dltR
180 real(r8) :: tl_cffL, tl_cffR, tl_cu, tl_dltL, tl_dltR
181 real(r8) :: fac, fac1, fac2
182 real(r8) :: tl_fac, tl_fac1, tl_fac2
184 real(r8) :: Nlimit, FNlim
185 real(r8) :: tl_Nlimit, tl_FNlim
186 real(r8) :: FNratio, FCratio, FCratioE, Flimit
187 real(r8) :: tl_FNratio, tl_FCratio, tl_FCratioE, tl_Flimit
188 real(r8) :: FeC2FeN, FeN2FeC
190 real(r8) :: FeNudgCoef
193 real(r8),
dimension(Nsink) :: Wbio
194 real(r8),
dimension(Nsink) :: tl_Wbio
196 integer,
dimension(IminS:ImaxS,N(ng)) :: ksource
198 real(r8),
dimension(IminS:ImaxS) :: PARsur
199 real(r8),
dimension(IminS:ImaxS) :: tl_PARsur
201 real(r8),
dimension(NT(ng),2) :: BioTrc
202 real(r8),
dimension(NT(ng),2) :: BioTrc1
203 real(r8),
dimension(NT(ng),2) :: tl_BioTrc
204 real(r8),
dimension(IminS:ImaxS,N(ng),NT(ng)) :: Bio
205 real(r8),
dimension(IminS:ImaxS,N(ng),NT(ng)) :: Bio1
206 real(r8),
dimension(IminS:ImaxS,N(ng),NT(ng)) :: Bio2
207 real(r8),
dimension(IminS:ImaxS,N(ng),NT(ng)) :: Bio_old
209 real(r8),
dimension(IminS:ImaxS,N(ng),NT(ng)) :: tl_Bio
210 real(r8),
dimension(IminS:ImaxS,N(ng),NT(ng)) :: tl_Bio_old
212 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: FC
213 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_FC
215 real(r8),
dimension(IminS:ImaxS,N(ng)) :: Hz_inv
216 real(r8),
dimension(IminS:ImaxS,N(ng)) :: Hz_inv2
217 real(r8),
dimension(IminS:ImaxS,N(ng)) :: Hz_inv3
218 real(r8),
dimension(IminS:ImaxS,N(ng)) :: Light
219 real(r8),
dimension(IminS:ImaxS,N(ng)) :: WL
220 real(r8),
dimension(IminS:ImaxS,N(ng)) :: WR
221 real(r8),
dimension(IminS:ImaxS,N(ng)) :: bL
222 real(r8),
dimension(IminS:ImaxS,N(ng)) :: bL1
223 real(r8),
dimension(IminS:ImaxS,N(ng)) :: bR
224 real(r8),
dimension(IminS:ImaxS,N(ng)) :: bR1
225 real(r8),
dimension(IminS:ImaxS,N(ng)) :: qc
227 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_Hz_inv
228 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_Hz_inv2
229 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_Hz_inv3
230 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_Light
231 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_WL
232 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_WR
233 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_bL
234 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_bR
235 real(r8),
dimension(IminS:ImaxS,N(ng)) :: tl_qc
237#include "set_bounds.h"
251#if defined IRON_LIMIT && defined IRON_RELAX
261 fen2fec=(16.0_r8/106.0_r8)*1.0e3_r8
262 fec2fen=(106.0_r8/16.0_r8)*1.0e-3_r8
283 j_loop :
DO j=jstr,jend
289 hz_inv(i,k)=1.0_r8/hz(i,j,k)
290 tl_hz_inv(i,k)=-hz_inv(i,k)*hz_inv(i,k)*tl_hz(i,j,k)+ &
298 hz_inv2(i,k)=1.0_r8/(hz(i,j,k)+hz(i,j,k+1))
299 tl_hz_inv2(i,k)=-hz_inv2(i,k)*hz_inv2(i,k)* &
300 & (tl_hz(i,j,k)+tl_hz(i,j,k+1))+ &
302 & 2.0_r8*hz_inv2(i,k)
308 hz_inv3(i,k)=1.0_r8/(hz(i,j,k-1)+hz(i,j,k)+hz(i,j,k+1))
309 tl_hz_inv3(i,k)=-hz_inv3(i,k)*hz_inv3(i,k)* &
310 & (tl_hz(i,j,k-1)+tl_hz(i,j,k)+ &
313 & 2.0_r8*hz_inv3(i,k)
325 bio1(i,k,ibio)=0.0_r8
326 bio2(i,k,ibio)=0.0_r8
327 tl_bio(i,k,ibio)=0.0_r8
355 biotrc(ibio,nstp)=t(i,j,k,nstp,ibio)
356 tl_biotrc(ibio,nstp)=tl_t(i,j,k,nstp,ibio)
359 biotrc(ibio,nnew)=t(i,j,k,nnew,ibio)
360 tl_biotrc(ibio,nnew)=tl_t(i,j,k,nnew,ibio)* &
362 & t(i,j,k,nnew,ibio)*hz(i,j,k)* &
382 cff1=cff1+max(0.0_r8,minval-biotrc(ibio,itime))
384 & (0.5_r8-sign(0.5_r8, &
385 & biotrc(ibio,itime)-minval))* &
386 & tl_biotrc(ibio,itime)+ &
388 & (0.5_r8-sign(0.5_r8, &
389 & biotrc(ibio,itime)-minval))* &
392 IF (biotrc(ibio,itime).gt.biotrc(itrcmax,itime))
THEN
395 biotrc1(ibio,itime)=biotrc(ibio,itime)
396 biotrc(ibio,itime)=max(minval,biotrc1(ibio,itime))
397 tl_biotrc(ibio,itime)=(0.5_r8- &
400 & biotrc1(ibio,itime)))* &
401 & tl_biotrc(ibio,itime)+ &
406 & biotrc1(ibio,itime)))* &
410 IF (biotrc(itrcmax,itime).gt.cff1)
THEN
411 biotrc(itrcmax,itime)=biotrc(itrcmax,itime)-cff1
412 tl_biotrc(itrcmax,itime)=tl_biotrc(itrcmax,itime)- &
418 biotrc1(ibio,itime)=biotrc(ibio,itime)
419 biotrc(ibio,itime)=max(minval,biotrc1(ibio,itime))
420 tl_biotrc(ibio,itime)=(0.5_r8- &
423 & biotrc1(ibio,itime)))* &
424 & tl_biotrc(ibio,itime)+ &
429 & biotrc1(ibio,itime)))* &
440 bio_old(i,k,ibio)=biotrc(ibio,nstp)
441 tl_bio_old(i,k,ibio)=tl_biotrc(ibio,nstp)
442 bio(i,k,ibio)=biotrc(ibio,nstp)
443 tl_bio(i,k,ibio)=tl_biotrc(ibio,nstp)
446#if defined IRON_LIMIT && defined IRON_RELAX
452 IF (h(i,j).le.
fehmin(ng))
THEN
457 & fenudgcoef*tl_bio(i,k,
ifdis)+ &
459 & fenudgcoef*
femax(ng)
545 iter_loop:
DO iter=1,
bioiter(ng)
567 biotrc(ibio,nstp)=t(i,j,k,nstp,ibio)
570 biotrc(ibio,nnew)=t(i,j,k,nnew,ibio)
585 cff1=cff1+max(0.0_r8,minval-biotrc(ibio,itime))
586 IF (biotrc(ibio,itime).gt.biotrc(itrcmax,itime))
THEN
589 biotrc(ibio,itime)=max(minval,biotrc(ibio,itime))
591 IF (biotrc(itrcmax,itime).gt.cff1)
THEN
592 biotrc(itrcmax,itime)=biotrc(itrcmax,itime)-cff1
597 biotrc1(ibio,itime)=biotrc(ibio,itime)
598 biotrc(ibio,itime)=max(minval,biotrc(ibio,itime))
607 bio_old(i,k,ibio)=biotrc(ibio,nstp)
608 bio(i,k,ibio)=biotrc(ibio,nstp)
611#if defined IRON_LIMIT && defined IRON_RELAX
617 IF (h(i,j).le.
fehmin(ng))
THEN
651 IF (parsur(i).gt.0.0_r8)
THEN
659 & (z_w(i,j,k)-z_w(i,j,k-1))
662 par=itop*(1.0_r8-expatt)/att
704 fnratio=bio(i,k,
ifphy)/max(minval,bio(i,k,
iphyt))
705 fcratio=fnratio*fen2fec
707 flimit=fcratio*fcratio/ &
711 fnlim=min(1.0_r8,flimit/(bio(i,k,
ino3_)*nlimit))
713 cff4=1.0_r8/sqrt(cff2+cff3*light(i,k)*light(i,k))
714 cff=bio(i,k,
iphyt)* &
716 & cff1*cff4*light(i,k)*fnlim*nlimit
718 & cff1*cff4*light(i,k)/ &
731 fac=cff*bio(i,k,
ino3_)*fnratio/ &
732 & max(minval,bio(i,k,
ifdis))
743 cff5=dtdays*(fcratioe-fcratio)/
t_fe(ng)
744 cff6=bio(i,k,
iphyt)*cff5*fec2fen
745 IF (cff6.ge.0.0_r8)
THEN
746 cff=cff6/max(minval,bio(i,k,
ifdis))
751 cff=-cff6/max(minval,bio(i,k,
ifphy))
760 IF (iteradj.ne.iter)
THEN
771 cff1=dtdays*
zoogr(ng)
775 cff=bio(i,k,
izoop)* &
776 & cff1*(1.0_r8-exp(-
ivlev(ng)*bio(i,k,
iphyt)))/ &
780 & bio(i,k,
iphyt)*cff2*cff
798 cff1=1.0_r8/(1.0_r8+cff2+cff3)
803 & bio(i,k,
iphyt)*cff2
805 & bio(i,k,
iphyt)*cff3
819 cff1=1.0_r8/(1.0_r8+cff2+cff3)
824 & bio(i,k,
izoop)*cff2
826 & bio(i,k,
izoop)*cff3
832 cff2=dtdays*
detrr(ng)
833 cff1=1.0_r8/(1.0_r8+cff2)
838 & bio(i,k,
isdet)*cff2
860 qc(i,k)=bio(i,k,ibio)
866 fc(i,k)=(qc(i,k+1)-qc(i,k))*hz_inv2(i,k)
871 dltr=hz(i,j,k)*fc(i,k)
872 dltl=hz(i,j,k)*fc(i,k-1)
873 cff=hz(i,j,k-1)+2.0_r8*hz(i,j,k)+hz(i,j,k+1)
880 IF ((dltr*dltl).le.0.0_r8)
THEN
883 ELSE IF (abs(dltr).gt.abs(cffl))
THEN
885 ELSE IF (abs(dltl).gt.abs(cffr))
THEN
898 cff=(dltr-dltl)*hz_inv3(i,k)
899 dltr=dltr-cff*hz(i,j,k+1)
900 dltl=dltl+cff*hz(i,j,k-1)
903 wr(i,k)=(2.0_r8*dltr-dltl)**2
904 wl(i,k)=(dltr-2.0_r8*dltl)**2
910 dltl=max(cff,wl(i,k ))
911 dltr=max(cff,wr(i,k+1))
912 br(i,k)=(dltr*br(i,k)+dltl*bl(i,k+1))/(dltr+dltl)
918#if defined LINEAR_CONTINUATION
919 bl(i,
n(ng))=br(i,
n(ng)-1)
920 br(i,
n(ng))=2.0_r8*qc(i,
n(ng))-bl(i,
n(ng))
922 bl(i,
n(ng))=br(i,
n(ng)-1)
923 br(i,
n(ng))=1.5*qc(i,
n(ng))-0.5_r8*bl(i,
n(ng))
925 br(i,
n(ng))=qc(i,
n(ng))
926 bl(i,
n(ng))=qc(i,
n(ng))
927 br(i,
n(ng)-1)=qc(i,
n(ng))
929#if defined LINEAR_CONTINUATION
931 bl(i,1)=2.0_r8*qc(i,1)-br(i,1)
934 bl(i,1)=1.5_r8*qc(i,1)-0.5_r8*br(i,1)
952 IF ((dltr*dltl).lt.0.0_r8)
THEN
955 ELSE IF (abs(dltr).gt.abs(cffl))
THEN
957 ELSE IF (abs(dltl).gt.abs(cffr))
THEN
979 cff=dtdays*abs(wbio(isink))
983 wl(i,k)=z_w(i,j,k-1)+cff
984 wr(i,k)=hz(i,j,k)*qc(i,k)
991 IF (wl(i,k).gt.z_w(i,j,ks))
THEN
993 fc(i,k-1)=fc(i,k-1)+wr(i,ks)
1004 cu=min(1.0_r8,(wl(i,k)-z_w(i,j,ks-1))*hz_inv(i,ks))
1005 fc(i,k-1)=fc(i,k-1)+ &
1008 & cu*(0.5_r8*(br(i,ks)-bl(i,ks))- &
1010 & (br(i,ks)+bl(i,ks)- &
1011 & 2.0_r8*qc(i,ks))))
1016 bio(i,k,ibio)=qc(i,k)+ &
1017 & (fc(i,k)-fc(i,k-1))*hz_inv(i,k)
1035 IF (parsur(i).gt.0.0_r8)
THEN
1043 & (z_w(i,j,k)-z_w(i,j,k-1))
1045 & (z_w(i,j,k)-z_w(i,j,k-1))+ &
1047 & (tl_z_w(i,j,k)-tl_z_w(i,j,k-1))- &
1050 & (z_w(i,j,k)-z_w(i,j,k-1))
1053 tl_expatt=-expatt*tl_att+ &
1055 & (1.0_r8+att)*expatt
1059 par=itop*(1.0_r8-expatt)/att
1060 tl_par=(-tl_att*par+tl_itop*(1.0_r8-expatt)- &
1061 & itop*tl_expatt)/att+ &
1067 tl_light(i,k)=tl_par
1073 tl_par=tl_itop*expatt+itop*tl_expatt- &
1082 tl_light(i,k)=0.0_r8
1116 fac1=max(minval,bio1(i,k,
iphyt))
1117 tl_fac1=(0.5_r8-sign(0.5_r8,minval-bio1(i,k,
iphyt)))* &
1118 & tl_bio(i,k,
iphyt)+ &
1120 & (0.5_r8+sign(0.5_r8,minval-bio1(i,k,
iphyt)))* &
1123 fnratio=bio1(i,k,
ifphy)/fac1
1124 tl_fnratio=(tl_bio(i,k,
ifphy)-tl_fac1*fnratio)/fac1+ &
1128 fcratio=fnratio*fen2fec
1129 tl_fcratio=tl_fnratio*fen2fec
1133 & tl_bio(i,k,
ifdis)- &
1135 & (
a_fe(ng)-1.0_r8)*fcratioe
1137 flimit=fcratio*fcratio/ &
1139 tl_flimit=2.0_r8*(tl_fcratio*fcratio- &
1140 & tl_fcratio*fcratio*flimit)/ &
1143 & flimit*(fcratio*fcratio-
k_fec(ng)*
k_fec(ng))/ &
1148 tl_nlimit=-tl_bio(i,k,
ino3_)*nlimit*nlimit+ &
1150 & (
k_no3(ng)+2.0_r8*bio1(i,k,
ino3_))*nlimit*nlimit
1154 fac1=flimit/(bio1(i,k,
ino3_)*nlimit)
1155 tl_fac1=tl_flimit/(bio1(i,k,
ino3_)*nlimit)- &
1156 & (tl_bio(i,k,
ino3_)*nlimit+ &
1157 & bio1(i,k,
ino3_)*tl_nlimit)*fac1/ &
1158 & (bio1(i,k,
ino3_)*nlimit)+ &
1162 fnlim=min(1.0_r8,fac1)
1163 tl_fnlim=(0.5_r8+sign(0.5_r8,1.0_r8-fac1))*tl_fac1+ &
1165 & (0.5_r8-sign(0.5_r8,1.0_r8-fac1))
1168 cff4=1.0_r8/sqrt(cff2+cff3*light(i,k)*light(i,k))
1169 tl_cff4=-cff3*tl_light(i,k)*light(i,k)*cff4*cff4*cff4+ &
1171 & (cff2+2.0_r8*cff3*light(i,k)*light(i,k))* &
1174 cff=bio1(i,k,
iphyt)* &
1176 & cff1*cff4*light(i,k)*fnlim*nlimit
1178 & cff1*cff4*light(i,k)/ &
1182 tl_cff=tl_bio(i,k,
iphyt)* &
1183 & cff1*cff4*light(i,k)*fnlim*nlimit+ &
1184 & bio1(i,k,
iphyt)*cff1*cff4* &
1185 & (tl_light(i,k)*fnlim*nlimit+ &
1186 & light(i,k)*tl_fnlim*nlimit+ &
1187 & light(i,k)*fnlim*tl_nlimit)+ &
1188 & bio1(i,k,
iphyt)*cff1*tl_cff4* &
1189 & light(i,k)*fnlim*nlimit- &
1194 tl_cff=(tl_bio(i,k,
iphyt)*cff1*cff4*light(i,k)+ &
1195 & bio1(i,k,
iphyt)*cff1* &
1196 & (tl_cff4*light(i,k)+cff4*tl_light(i,k))- &
1197 & tl_bio(i,k,
ino3_)*cff)/ &
1207 & tl_cff*bio(i,k,
ino3_))/ &
1210 & cff*bio(i,k,
ino3_)/ &
1217 & tl_bio(i,k,
ino3_)*cff+ &
1218 & bio(i,k,
ino3_)*tl_cff- &
1220 & bio(i,k,
ino3_)*cff
1228 fac1=max(minval,bio1(i,k,
ifdis))
1229 tl_fac1=(0.5_r8-sign(0.5_r8,minval-bio1(i,k,
ifdis)))* &
1230 & tl_bio(i,k,
ifdis)+ &
1232 & (0.5_r8+sign(0.5_r8,minval-bio1(i,k,
ifdis)))* &
1236 tl_fac2=-fac2*fac2*tl_fac1+ &
1240 fac=cff*bio(i,k,
ino3_)*fnratio*fac2
1241 tl_fac=fnratio*fac2*(tl_cff*bio(i,k,
ino3_)+ &
1242 & cff*tl_bio(i,k,
ino3_))+ &
1243 & cff*bio(i,k,
ino3_)*(tl_fnratio*fac2+ &
1244 & fnratio*tl_fac2)- &
1251 & tl_fac*bio2(i,k,
ifdis))/ &
1254 & fac*bio2(i,k,
ifdis)/(1.0_r8+fac)
1260 & tl_bio(i,k,
ifdis)*fac+ &
1261 & bio2(i,k,
ifdis)*tl_fac- &
1263 & bio2(i,k,
ifdis)*fac
1268 cff5=dtdays*(fcratioe-fcratio)/
t_fe(ng)
1269 tl_cff5=dtdays*(tl_fcratioe-tl_fcratio)/
t_fe(ng)
1270 cff6=bio(i,k,
iphyt)*cff5*fec2fen
1271 tl_cff6=(tl_bio(i,k,
iphyt)*cff5+ &
1272 & bio(i,k,
iphyt)*tl_cff5)*fec2fen- &
1276 IF (cff6.ge.0.0_r8)
THEN
1279 fac1=max(minval,bio2(i,k,
ifdis))
1280 tl_fac1=(0.5_r8-sign(0.5_r8,minval-bio2(i,k,
ifdis)))* &
1281 & tl_bio(i,k,
ifdis)+ &
1283 & (0.5_r8+sign(0.5_r8,minval-bio2(i,k,
ifdis)))* &
1287 tl_cff=(tl_cff6-tl_fac1*cff)/fac1+ &
1294 & tl_cff*bio(i,k,
ifdis))/ &
1297 & cff*bio(i,k,
ifdis)/(1.0_r8+cff)
1303 & tl_bio(i,k,
ifdis)*cff+ &
1304 & bio(i,k,
ifdis)*tl_cff- &
1306 & bio(i,k,
ifdis)*cff
1311 fac1=-max(minval,bio2(i,k,
ifphy))
1312 tl_fac1=-(0.5_r8-sign(0.5_r8,minval-bio2(i,k,
ifphy)))* &
1313 & tl_bio(i,k,
ifphy)- &
1315 & (0.5_r8+sign(0.5_r8,minval-bio2(i,k,
ifphy)))* &
1319 tl_cff=(tl_cff6-tl_fac1*cff)/fac1+ &
1326 & tl_cff*bio(i,k,
ifphy))/ &
1329 & cff*bio(i,k,
ifphy)/(1.0_r8+cff)
1335 & tl_bio(i,k,
ifphy)*cff+ &
1336 & bio(i,k,
ifphy)*tl_cff- &
1338 & bio(i,k,
ifphy)*cff
1365 biotrc(ibio,nstp)=t(i,j,k,nstp,ibio)
1368 biotrc(ibio,nnew)=t(i,j,k,nnew,ibio)
1383 cff1=cff1+max(0.0_r8,minval-biotrc(ibio,itime))
1384 IF (biotrc(ibio,itime).gt.biotrc(itrcmax,itime))
THEN
1387 biotrc(ibio,itime)=max(minval,biotrc(ibio,itime))
1389 IF (biotrc(itrcmax,itime).gt.cff1)
THEN
1390 biotrc(itrcmax,itime)=biotrc(itrcmax,itime)-cff1
1395 biotrc1(ibio,itime)=biotrc(ibio,itime)
1396 biotrc(ibio,itime)=max(minval,biotrc(ibio,itime))
1405 bio_old(i,k,ibio)=biotrc(ibio,nstp)
1406 bio(i,k,ibio)=biotrc(ibio,nstp)
1409#if defined IRON_LIMIT && defined IRON_RELAX
1415 IF (h(i,j).le.
fehmin(ng))
THEN
1432 parsur(i)=158.075_r8
1449 IF (parsur(i).gt.0.0_r8)
THEN
1457 & (z_w(i,j,k)-z_w(i,j,k-1))
1460 par=itop*(1.0_r8-expatt)/att
1502 fnratio=bio(i,k,
ifphy)/max(minval,bio(i,k,
iphyt))
1503 fcratio=fnratio*fen2fec
1505 flimit=fcratio*fcratio/ &
1509 fnlim=min(1.0_r8,flimit/(bio(i,k,
ino3_)*nlimit))
1511 cff4=1.0_r8/sqrt(cff2+cff3*light(i,k)*light(i,k))
1512 cff=bio(i,k,
iphyt)* &
1514 & cff1*cff4*light(i,k)*fnlim*nlimit
1516 & cff1*cff4*light(i,k)/ &
1521 & bio(i,k,
ino3_)*cff
1527 fac=cff*bio(i,k,
ino3_)*fnratio/ &
1528 & max(minval,bio(i,k,
ifdis))
1531 & bio(i,k,
ifdis)*fac
1535 cff5=dtdays*(fcratioe-fcratio)/
t_fe(ng)
1536 cff6=bio(i,k,
iphyt)*cff5*fec2fen
1537 IF (cff6.ge.0.0_r8)
THEN
1538 cff=cff6/max(minval,bio(i,k,
ifdis))
1541 & bio(i,k,
ifdis)*cff
1543 cff=-cff6/max(minval,bio(i,k,
ifphy))
1546 & bio(i,k,
ifphy)*cff
1561 cff1=dtdays*
zoogr(ng)
1565 cff=bio(i,k,
izoop)* &
1566 & cff1*(1.0_r8-exp(-
ivlev(ng)*bio(i,k,
iphyt)))/ &
1572 & bio(i,k,
iphyt)*cff2*cff
1592 cff1=1.0_r8/(1.0_r8+cff2+cff3)
1597 & bio(i,k,
iphyt)*cff2
1599 & bio(i,k,
iphyt)*cff3
1608 IF (iteradj.ne.iter)
THEN
1615 cff1=1.0_r8/(1.0_r8+cff2+cff3)
1620 & bio(i,k,
izoop)*cff2
1622 & bio(i,k,
izoop)*cff3
1628 cff2=dtdays*
detrr(ng)
1629 cff1=1.0_r8/(1.0_r8+cff2)
1634 & bio(i,k,
isdet)*cff2
1656 qc(i,k)=bio(i,k,ibio)
1662 fc(i,k)=(qc(i,k+1)-qc(i,k))*hz_inv2(i,k)
1667 dltr=hz(i,j,k)*fc(i,k)
1668 dltl=hz(i,j,k)*fc(i,k-1)
1669 cff=hz(i,j,k-1)+2.0_r8*hz(i,j,k)+hz(i,j,k+1)
1676 IF ((dltr*dltl).le.0.0_r8)
THEN
1679 ELSE IF (abs(dltr).gt.abs(cffl))
THEN
1681 ELSE IF (abs(dltl).gt.abs(cffr))
THEN
1694 cff=(dltr-dltl)*hz_inv3(i,k)
1695 dltr=dltr-cff*hz(i,j,k+1)
1696 dltl=dltl+cff*hz(i,j,k-1)
1697 br(i,k)=qc(i,k)+dltr
1698 bl(i,k)=qc(i,k)-dltl
1699 wr(i,k)=(2.0_r8*dltr-dltl)**2
1700 wl(i,k)=(dltr-2.0_r8*dltl)**2
1706 dltl=max(cff,wl(i,k ))
1707 dltr=max(cff,wr(i,k+1))
1708 br(i,k)=(dltr*br(i,k)+dltl*bl(i,k+1))/(dltr+dltl)
1714#if defined LINEAR_CONTINUATION
1715 bl(i,
n(ng))=br(i,
n(ng)-1)
1716 br(i,
n(ng))=2.0_r8*qc(i,
n(ng))-bl(i,
n(ng))
1717#elif defined NEUMANN
1718 bl(i,
n(ng))=br(i,
n(ng)-1)
1719 br(i,
n(ng))=1.5*qc(i,
n(ng))-0.5_r8*bl(i,
n(ng))
1721 br(i,
n(ng))=qc(i,
n(ng))
1722 bl(i,
n(ng))=qc(i,
n(ng))
1723 br(i,
n(ng)-1)=qc(i,
n(ng))
1725#if defined LINEAR_CONTINUATION
1727 bl(i,1)=2.0_r8*qc(i,1)-br(i,1)
1728#elif defined NEUMANN
1730 bl(i,1)=1.5_r8*qc(i,1)-0.5_r8*br(i,1)
1744 dltr=br(i,k)-qc(i,k)
1745 dltl=qc(i,k)-bl(i,k)
1748 IF ((dltr*dltl).lt.0.0_r8)
THEN
1751 ELSE IF (abs(dltr).gt.abs(cffl))
THEN
1753 ELSE IF (abs(dltl).gt.abs(cffr))
THEN
1756 br(i,k)=qc(i,k)+dltr
1757 bl(i,k)=qc(i,k)-dltl
1775 cff=dtdays*abs(wbio(isink))
1779 wl(i,k)=z_w(i,j,k-1)+cff
1780 wr(i,k)=hz(i,j,k)*qc(i,k)
1787 IF (wl(i,k).gt.z_w(i,j,ks))
THEN
1789 fc(i,k-1)=fc(i,k-1)+wr(i,ks)
1800 cu=min(1.0_r8,(wl(i,k)-z_w(i,j,ks-1))*hz_inv(i,ks))
1801 fc(i,k-1)=fc(i,k-1)+ &
1804 & cu*(0.5_r8*(br(i,ks)-bl(i,ks))- &
1806 & (br(i,ks)+bl(i,ks)- &
1807 & 2.0_r8*qc(i,ks))))
1812 bio(i,k,ibio)=qc(i,k)+ &
1813 & (fc(i,k)-fc(i,k-1))*hz_inv(i,k)
1831 cff1=dtdays*
zoogr(ng)
1835 cff=bio1(i,k,
izoop)* &
1836 & cff1*(1.0_r8-exp(-
ivlev(ng)*bio1(i,k,
iphyt)))/ &
1838 tl_cff=(tl_bio(i,k,
izoop)* &
1839 & cff1*(1.0_r8-exp(-
ivlev(ng)*bio1(i,k,
iphyt)))+ &
1842 & tl_bio(i,k,
iphyt)*cff)/ &
1843 & bio1(i,k,
iphyt)- &
1845 & bio1(i,k,
izoop)* &
1854 & tl_cff*bio(i,k,
iphyt))/ &
1857 & cff*bio(i,k,
iphyt)/ &
1864 & cff2*(tl_bio(i,k,
iphyt)*cff+ &
1865 & bio(i,k,
iphyt)*tl_cff)- &
1867 & bio(i,k,
iphyt)*cff2*cff
1874 & bio(i,k,
iphyt)*tl_cff)- &
1883 & bio(i,k,
iphyt)*tl_cff)- &
1892 & tl_cff*bio2(i,k,
ifphy))/ &
1895 & cff*bio2(i,k,
ifphy)/(1.0_r8+cff)
1901 & (tl_bio(i,k,
ifphy)*cff+ &
1915 cff1=1.0_r8/(1.0_r8+cff2+cff3)
1925 & tl_bio(i,k,
iphyt)*cff2
1930 & tl_bio(i,k,
iphyt)*cff3
1940 & tl_bio(i,k,
ifphy)*(cff2+cff3)*
ferr(ng)
1950 cff1=1.0_r8/(1.0_r8+cff2+cff3)
1960 & tl_bio(i,k,
izoop)*cff2
1965 & tl_bio(i,k,
izoop)*cff3
1971 cff2=dtdays*
detrr(ng)
1972 cff1=1.0_r8/(1.0_r8+cff2)
1982 & tl_bio(i,k,
isdet)*cff2
2006 biotrc(ibio,nstp)=t(i,j,k,nstp,ibio)
2009 biotrc(ibio,nnew)=t(i,j,k,nnew,ibio)
2024 cff1=cff1+max(0.0_r8,minval-biotrc(ibio,itime))
2025 IF (biotrc(ibio,itime).gt.biotrc(itrcmax,itime))
THEN
2028 biotrc(ibio,itime)=max(minval,biotrc(ibio,itime))
2030 IF (biotrc(itrcmax,itime).gt.cff1)
THEN
2031 biotrc(itrcmax,itime)=biotrc(itrcmax,itime)-cff1
2036 biotrc1(ibio,itime)=biotrc(ibio,itime)
2037 biotrc(ibio,itime)=max(minval,biotrc(ibio,itime))
2046 bio_old(i,k,ibio)=biotrc(ibio,nstp)
2047 bio(i,k,ibio)=biotrc(ibio,nstp)
2050#if defined IRON_LIMIT && defined IRON_RELAX
2056 IF (h(i,j).le.
fehmin(ng))
THEN
2073 parsur(i)=158.075_r8
2090 IF (parsur(i).gt.0.0_r8)
THEN
2098 & (z_w(i,j,k)-z_w(i,j,k-1))
2101 par=itop*(1.0_r8-expatt)/att
2140 fnratio=bio(i,k,
ifphy)/max(minval,bio(i,k,
iphyt))
2141 fcratio=fnratio*fen2fec
2143 flimit=fcratio*fcratio/ &
2147 fnlim=min(1.0_r8,flimit/(bio(i,k,
ino3_)*nlimit))
2149 cff4=1.0_r8/sqrt(cff2+cff3*light(i,k)*light(i,k))
2150 cff=bio(i,k,
iphyt)* &
2152 & cff1*cff4*light(i,k)*fnlim*nlimit
2154 & cff1*cff4*light(i,k)/ &
2159 & bio(i,k,
ino3_)*cff
2165 fac=cff*bio(i,k,
ino3_)*fnratio/ &
2166 & max(minval,bio(i,k,
ifdis))
2169 & bio(i,k,
ifdis)*fac
2173 cff5=dtdays*(fcratioe-fcratio)/
t_fe(ng)
2174 cff6=bio(i,k,
iphyt)*cff5*fec2fen
2175 IF (cff6.ge.0.0_r8)
THEN
2176 cff=cff6/max(minval,bio(i,k,
ifdis))
2179 & bio(i,k,
ifdis)*cff
2181 cff=-cff6/max(minval,bio(i,k,
ifphy))
2184 & bio(i,k,
ifphy)*cff
2199 cff1=dtdays*
zoogr(ng)
2203 cff=bio(i,k,
izoop)* &
2204 & cff1*(1.0_r8-exp(-
ivlev(ng)*bio(i,k,
iphyt)))/ &
2208 & bio(i,k,
iphyt)*cff2*cff
2226 cff1=1.0_r8/(1.0_r8+cff2+cff3)
2231 & bio(i,k,
iphyt)*cff2
2233 & bio(i,k,
iphyt)*cff3
2247 cff1=1.0_r8/(1.0_r8+cff2+cff3)
2252 & bio(i,k,
izoop)*cff2
2254 & bio(i,k,
izoop)*cff3
2260 cff2=dtdays*
detrr(ng)
2261 cff1=1.0_r8/(1.0_r8+cff2)
2266 & bio(i,k,
isdet)*cff2
2270 IF (iteradj.ne.iter)
THEN
2290 qc(i,k)=bio(i,k,ibio)
2296 fc(i,k)=(qc(i,k+1)-qc(i,k))*hz_inv2(i,k)
2301 dltr=hz(i,j,k)*fc(i,k)
2302 dltl=hz(i,j,k)*fc(i,k-1)
2303 cff=hz(i,j,k-1)+2.0_r8*hz(i,j,k)+hz(i,j,k+1)
2310 IF ((dltr*dltl).le.0.0_r8)
THEN
2313 ELSE IF (abs(dltr).gt.abs(cffl))
THEN
2315 ELSE IF (abs(dltl).gt.abs(cffr))
THEN
2328 cff=(dltr-dltl)*hz_inv3(i,k)
2329 dltr=dltr-cff*hz(i,j,k+1)
2330 dltl=dltl+cff*hz(i,j,k-1)
2331 br(i,k)=qc(i,k)+dltr
2332 bl(i,k)=qc(i,k)-dltl
2333 wr(i,k)=(2.0_r8*dltr-dltl)**2
2334 wl(i,k)=(dltr-2.0_r8*dltl)**2
2340 dltl=max(cff,wl(i,k ))
2341 dltr=max(cff,wr(i,k+1))
2342 br(i,k)=(dltr*br(i,k)+dltl*bl(i,k+1))/(dltr+dltl)
2348#if defined LINEAR_CONTINUATION
2349 bl(i,
n(ng))=br(i,
n(ng)-1)
2350 br(i,
n(ng))=2.0_r8*qc(i,
n(ng))-bl(i,
n(ng))
2351#elif defined NEUMANN
2352 bl(i,
n(ng))=br(i,
n(ng)-1)
2353 br(i,
n(ng))=1.5*qc(i,
n(ng))-0.5_r8*bl(i,
n(ng))
2355 br(i,
n(ng))=qc(i,
n(ng))
2356 bl(i,
n(ng))=qc(i,
n(ng))
2357 br(i,
n(ng)-1)=qc(i,
n(ng))
2359#if defined LINEAR_CONTINUATION
2361 bl(i,1)=2.0_r8*qc(i,1)-br(i,1)
2362#elif defined NEUMANN
2364 bl(i,1)=1.5_r8*qc(i,1)-0.5_r8*br(i,1)
2378 dltr=br(i,k)-qc(i,k)
2379 dltl=qc(i,k)-bl(i,k)
2382 IF ((dltr*dltl).lt.0.0_r8)
THEN
2385 ELSE IF (abs(dltr).gt.abs(cffl))
THEN
2387 ELSE IF (abs(dltl).gt.abs(cffr))
THEN
2390 br(i,k)=qc(i,k)+dltr
2391 bl(i,k)=qc(i,k)-dltl
2409 cff=dtdays*abs(wbio(isink))
2413 wl(i,k)=z_w(i,j,k-1)+cff
2414 wr(i,k)=hz(i,j,k)*qc(i,k)
2421 IF (wl(i,k).gt.z_w(i,j,ks))
THEN
2423 fc(i,k-1)=fc(i,k-1)+wr(i,ks)
2434 cu=min(1.0_r8,(wl(i,k)-z_w(i,j,ks-1))*hz_inv(i,ks))
2435 fc(i,k-1)=fc(i,k-1)+ &
2438 & cu*(0.5_r8*(br(i,ks)-bl(i,ks))- &
2440 & (br(i,ks)+bl(i,ks)- &
2441 & 2.0_r8*qc(i,ks))))
2446 bio(i,k,ibio)=qc(i,k)+ &
2447 & (fc(i,k)-fc(i,k-1))*hz_inv(i,k)
2464 sink_loop:
DO isink=1,nsink
2474 qc(i,k)=bio(i,k,ibio)
2475 tl_qc(i,k)=tl_bio(i,k,ibio)
2481 fc(i,k)=(qc(i,k+1)-qc(i,k))*hz_inv2(i,k)
2482 tl_fc(i,k)=(tl_qc(i,k+1)-tl_qc(i,k))*hz_inv2(i,k)+ &
2483 & (qc(i,k+1)-qc(i,k))*tl_hz_inv2(i,k)- &
2491 dltr=hz(i,j,k)*fc(i,k)
2492 tl_dltr=tl_hz(i,j,k)*fc(i,k)+hz(i,j,k)*tl_fc(i,k)- &
2496 dltl=hz(i,j,k)*fc(i,k-1)
2497 tl_dltl=tl_hz(i,j,k)*fc(i,k-1)+hz(i,j,k)*tl_fc(i,k-1)- &
2501 cff=hz(i,j,k-1)+2.0_r8*hz(i,j,k)+hz(i,j,k+1)
2502 tl_cff=tl_hz(i,j,k-1)+2.0_r8*tl_hz(i,j,k)+tl_hz(i,j,k+1)
2504 tl_cffr=tl_cff*fc(i,k)+cff*tl_fc(i,k)- &
2509 tl_cffl=tl_cff*fc(i,k-1)+cff*tl_fc(i,k-1)- &
2517 IF ((dltr*dltl).le.0.0_r8)
THEN
2522 ELSE IF (abs(dltr).gt.abs(cffl))
THEN
2525 ELSE IF (abs(dltl).gt.abs(cffr))
THEN
2539 cff=(dltr-dltl)*hz_inv3(i,k)
2540 tl_cff=(tl_dltr-tl_dltl)*hz_inv3(i,k)+ &
2541 & (dltr-dltl)*tl_hz_inv3(i,k)- &
2545 dltr=dltr-cff*hz(i,j,k+1)
2546 tl_dltr=tl_dltr-tl_cff*hz(i,j,k+1)-cff*tl_hz(i,j,k+1)+ &
2550 dltl=dltl+cff*hz(i,j,k-1)
2551 tl_dltl=tl_dltl+tl_cff*hz(i,j,k-1)+cff*tl_hz(i,j,k-1)- &
2555 br(i,k)=qc(i,k)+dltr
2556 tl_br(i,k)=tl_qc(i,k)+tl_dltr
2557 bl(i,k)=qc(i,k)-dltl
2558 tl_bl(i,k)=tl_qc(i,k)-tl_dltl
2559 wr(i,k)=(2.0_r8*dltr-dltl)**2
2560 tl_wr(i,k)=2.0_r8*(2.0_r8*dltr-dltl)* &
2561 & (2.0_r8*tl_dltr-tl_dltl)- &
2565 wl(i,k)=(dltr-2.0_r8*dltl)**2
2566 tl_wl(i,k)=2.0_r8*(dltr-2.0_r8*dltl)* &
2567 & (tl_dltr-2.0_r8*tl_dltl)- &
2576 dltl=max(cff,wl(i,k ))
2577 tl_dltl=(0.5_r8-sign(0.5_r8,cff-wl(i,k )))* &
2580 & cff*(0.5_r8+sign(0.5_r8,cff-wl(i,k )))
2582 dltr=max(cff,wr(i,k+1))
2583 tl_dltr=(0.5_r8-sign(0.5_r8,cff-wr(i,k+1)))* &
2586 & cff*(0.5_r8+sign(0.5_r8,cff-wr(i,k+1)))
2589 bl1(i,k+1)=bl(i,k+1)
2590 br(i,k)=(dltr*br(i,k)+dltl*bl(i,k+1))/(dltr+dltl)
2591 tl_br(i,k)=(tl_dltr*br1(i,k )+dltr*tl_br(i,k )+ &
2592 & tl_dltl*bl1(i,k+1)+dltl*tl_bl(i,k+1))/ &
2594 & (tl_dltr+tl_dltl)*br(i,k)/(dltr+dltl)
2596 tl_bl(i,k+1)=tl_br(i,k)
2601 tl_fc(i,
n(ng))=0.0_r8
2602#if defined LINEAR_CONTINUATION
2603 bl(i,
n(ng))=br(i,
n(ng)-1)
2604 tl_bl(i,
n(ng))=tl_br(i,
n(ng)-1)
2605 br(i,
n(ng))=2.0_r8*qc(i,
n(ng))-bl(i,
n(ng))
2606 tl_br(i,
n(ng))=2.0_r8*tl_qc(i,
n(ng))-tl_bl(i,
n(ng))
2607#elif defined NEUMANN
2608 bl(i,
n(ng))=br(i,
n(ng)-1)
2609 tl_bl(i,
n(ng))=tl_br(i,
n(ng)-1)
2610 br(i,
n(ng))=1.5_r8*qc(i,
n(ng))-0.5_r8*bl(i,
n(ng))
2611 tl_br(i,
n(ng))=1.5_r8*tl_qc(i,
n(ng))-0.5_r8*tl_bl(i,
n(ng))
2613 br(i,
n(ng))=qc(i,
n(ng))
2614 bl(i,
n(ng))=qc(i,
n(ng))
2615 br(i,
n(ng)-1)=qc(i,
n(ng))
2616 tl_br(i,
n(ng))=tl_qc(i,
n(ng))
2617 tl_bl(i,
n(ng))=tl_qc(i,
n(ng))
2618 tl_br(i,
n(ng)-1)=tl_qc(i,
n(ng))
2620#if defined LINEAR_CONTINUATION
2622 tl_br(i,1)=tl_bl(i,2)
2623 bl(i,1)=2.0_r8*qc(i,1)-br(i,1)
2624 tl_bl(i,1)=2.0_r8*tl_qc(i,1)-tl_br(i,1)
2625#elif defined NEUMANN
2627 tl_br(i,1)=tl_bl(i,2)
2628 bl(i,1)=1.5_r8*qc(i,1)-0.5_r8*br(i,1)
2629 tl_bl(i,1)=1.5_r8*tl_qc(i,1)-0.5_r8*tl_br(i,1)
2634 tl_bl(i,2)=tl_qc(i,1)
2635 tl_br(i,1)=tl_qc(i,1)
2636 tl_bl(i,1)=tl_qc(i,1)
2646 dltr=br(i,k)-qc(i,k)
2647 tl_dltr=tl_br(i,k)-tl_qc(i,k)
2648 dltl=qc(i,k)-bl(i,k)
2649 tl_dltl=tl_qc(i,k)-tl_bl(i,k)
2651 tl_cffr=2.0_r8*tl_dltr
2653 tl_cffl=2.0_r8*tl_dltl
2654 IF ((dltr*dltl).lt.0.0_r8)
THEN
2659 ELSE IF (abs(dltr).gt.abs(cffl))
THEN
2662 ELSE IF (abs(dltl).gt.abs(cffr))
THEN
2666 br(i,k)=qc(i,k)+dltr
2667 tl_br(i,k)=tl_qc(i,k)+tl_dltr
2668 bl(i,k)=qc(i,k)-dltl
2669 tl_bl(i,k)=tl_qc(i,k)-tl_dltl
2687 cff=dtdays*abs(wbio(isink))
2688 tl_cff=dtdays*sign(1.0_r8,wbio(isink))*tl_wbio(isink)
2693 wl(i,k)=z_w(i,j,k-1)+cff
2694 tl_wl(i,k)=tl_z_w(i,j,k-1)+tl_cff
2695 wr(i,k)=hz(i,j,k)*qc(i,k)
2696 tl_wr(i,k)=tl_hz(i,j,k)*qc(i,k)+hz(i,j,k)*tl_qc(i,k)- &
2706 IF (wl(i,k).gt.z_w(i,j,ks))
THEN
2708 fc(i,k-1)=fc(i,k-1)+wr(i,ks)
2709 tl_fc(i,k-1)=tl_fc(i,k-1)+tl_wr(i,ks)
2720 cu=min(1.0_r8,(wl(i,k)-z_w(i,j,ks-1))*hz_inv(i,ks))
2721 tl_cu=(0.5_r8+sign(0.5_r8, &
2722 & (1.0_r8-(wl(i,k)-z_w(i,j,ks-1))* &
2723 & hz_inv(i,ks))))* &
2724 & ((tl_wl(i,k)-tl_z_w(i,j,ks-1))*hz_inv(i,ks)+ &
2725 & (wl(i,k)-z_w(i,j,ks-1))*tl_hz_inv(i,ks)- &
2727 & (wl(i,k)-z_w(i,j,ks-1))*hz_inv(i,ks) &
2731 & (0.5_r8-sign(0.5_r8, &
2732 & (1.0_r8-(wl(i,k)-z_w(i,j,ks-1))* &
2735 fc(i,k-1)=fc(i,k-1)+ &
2738 & cu*(0.5_r8*(br(i,ks)-bl(i,ks))- &
2740 & (br(i,ks)+bl(i,ks)- &
2741 & 2.0_r8*qc(i,ks))))
2742 tl_fc(i,k-1)=tl_fc(i,k-1)+ &
2743 & (tl_hz(i,j,ks)*cu+hz(i,j,ks)*tl_cu)* &
2745 & cu*(0.5_r8*(br(i,ks)-bl(i,ks))- &
2747 & (br(i,ks)+bl(i,ks)- &
2748 & 2.0_r8*qc(i,ks))))+ &
2751 & tl_cu*(0.5_r8*(br(i,ks)-bl(i,ks))- &
2753 & (br(i,ks)+bl(i,ks)- &
2754 & 2.0_r8*qc(i,ks)))+ &
2755 & cu*(0.5_r8*(tl_br(i,ks)-tl_bl(i,ks))+ &
2757 & (br(i,ks)+bl(i,ks)-2.0_r8*qc(i,ks))- &
2759 & (tl_br(i,ks)+tl_bl(i,ks)- &
2760 & 2.0_r8*tl_qc(i,ks))))- &
2763 & (2.0_r8*bl(i,ks)+ &
2764 & cu*(1.5_r8*(br(i,ks)-bl(i,ks))- &
2765 & (4.5_r8-4.0_r8*cu)* &
2766 & (br(i,ks)+bl(i,ks)- &
2767 & 2.0_r8*qc(i,ks))))
2773 bio(i,k,ibio)=qc(i,k)+(fc(i,k)-fc(i,k-1))*hz_inv(i,k)
2774 tl_bio(i,k,ibio)=tl_qc(i,k)+ &
2775 & (tl_fc(i,k)-tl_fc(i,k-1))*hz_inv(i,k)+ &
2776 & (fc(i,k)-fc(i,k-1))*tl_hz_inv(i,k)- &
2778 & (fc(i,k)-fc(i,k-1))*hz_inv(i,k)
2805 cff=bio(i,k,ibio)-bio_old(i,k,ibio)
2806 tl_cff=tl_bio(i,k,ibio)-tl_bio_old(i,k,ibio)
2809 tl_t(i,j,k,nnew,ibio)=tl_t(i,j,k,nnew,ibio)+ &
2810 & tl_cff*hz(i,j,k)+cff*tl_hz(i,j,k)- &