9 |
|
|
10 |
C !INTERFACE: ========================================================== |
C !INTERFACE: ========================================================== |
11 |
SUBROUTINE DIC_BIOTIC_FORCING( PTR_DIC, PTR_ALK, PTR_PO4, |
SUBROUTINE DIC_BIOTIC_FORCING( PTR_DIC, PTR_ALK, PTR_PO4, |
12 |
& PTR_DOP, PTR_O2, |
& PTR_DOP, |
13 |
|
#ifdef ALLOW_O2 |
14 |
|
& PTR_O2, |
15 |
|
#endif |
16 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
17 |
& PTR_FE, |
& PTR_FE, |
18 |
#endif |
#endif |
50 |
_RL PTR_ALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL PTR_ALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
51 |
_RL PTR_PO4(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL PTR_PO4(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
52 |
_RL PTR_DOP(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL PTR_DOP(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
53 |
|
#ifdef ALLOW_O2 |
54 |
_RL PTR_O2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL PTR_O2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
55 |
|
#endif |
56 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
57 |
_RL PTR_FE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL PTR_FE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
58 |
#endif |
#endif |
80 |
_RL GALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL GALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
81 |
_RL GPO4(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL GPO4(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
82 |
_RL GDOP(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL GDOP(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
|
_RL GO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
|
83 |
_RL SURA(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL SURA(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
84 |
_RL SURC(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL SURC(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
85 |
_RL SURO(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL SURO(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
90 |
_RL pflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL pflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
91 |
_RL exportflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL exportflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
92 |
_RL cflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL cflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
93 |
|
#ifdef ALLOW_O2 |
94 |
|
_RL GO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
95 |
|
#endif |
96 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
97 |
_RL GFE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL GFE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
98 |
_RL freefe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL freefe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
112 |
GALK(i,j,k)=0.d0 |
GALK(i,j,k)=0.d0 |
113 |
GPO4(i,j,k)=0.d0 |
GPO4(i,j,k)=0.d0 |
114 |
GDOP(i,j,k)=0.d0 |
GDOP(i,j,k)=0.d0 |
|
GO2(i,j,k)=0.d0 |
|
115 |
SURA(i,j)=0.d0 |
SURA(i,j)=0.d0 |
116 |
SURC(i,j)=0.d0 |
SURC(i,j)=0.d0 |
117 |
CAR(i,j,k)=0.d0 |
CAR(i,j,k)=0.d0 |
121 |
pflux(i,j,k)=0.d0 |
pflux(i,j,k)=0.d0 |
122 |
exportflux(i,j,k)=0.d0 |
exportflux(i,j,k)=0.d0 |
123 |
cflux(i,j,k)=0.d0 |
cflux(i,j,k)=0.d0 |
124 |
|
#ifdef ALLOW_O2 |
125 |
|
GO2(i,j,k)=0.d0 |
126 |
|
#endif |
127 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
128 |
GFE(i,j,k)=0.d0 |
GFE(i,j,k)=0.d0 |
129 |
freefe(i,j,k)=0.d0 |
freefe(i,j,k)=0.d0 |
142 |
& bi,bj,imin,imax,jmin,jmax, |
& bi,bj,imin,imax,jmin,jmax, |
143 |
& myIter,myTime,myThid) |
& myIter,myTime,myThid) |
144 |
|
|
145 |
c carbon air-sea interaction |
#ifdef ALLOW_O2 |
146 |
|
c oxygen air-sea interaction |
147 |
CALL O2_SURFFORCING( PTR_O2, SURO, |
CALL O2_SURFFORCING( PTR_O2, SURO, |
148 |
& bi,bj,imin,imax,jmin,jmax, |
& bi,bj,imin,imax,jmin,jmax, |
149 |
& myIter,myTime,myThid) |
& myIter,myTime,myThid) |
150 |
|
#endif |
151 |
|
|
152 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
153 |
c find free iron |
c find free iron |
206 |
GALK(i,j,k)=+2.d0*car(i,j,k)-R_NP*bio(i,j,k) |
GALK(i,j,k)=+2.d0*car(i,j,k)-R_NP*bio(i,j,k) |
207 |
BIO_kar(i,j,k)=R_NP*bio(i,j,k) |
BIO_kar(i,j,k)=R_NP*bio(i,j,k) |
208 |
GDIC(i,j,k)=car(i,j,k)+R_CP*bio(i,j,k) |
GDIC(i,j,k)=car(i,j,k)+R_CP*bio(i,j,k) |
209 |
|
#ifdef ALLOW_O2 |
210 |
if (PTR_O2(i,j,k).gt.o2crit) then |
if (PTR_O2(i,j,k).gt.o2crit) then |
211 |
GO2(i,j,k)=R_OP*bio(i,j,k) |
GO2(i,j,k)=R_OP*bio(i,j,k) |
212 |
else |
else |
213 |
GO2(i,j,k)=0.d0 |
GO2(i,j,k)=0.d0 |
214 |
endif |
endif |
215 |
|
#endif |
216 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
217 |
GFE(i,j,k)=R_FeP*bio(i,j,k) |
GFE(i,j,k)=R_FeP*bio(i,j,k) |
218 |
& -Kscav*freefe(i,j,k) |
& -Kscav*freefe(i,j,k) |
220 |
IF (K.eq.1) then |
IF (K.eq.1) then |
221 |
GALK(i,j,1)=GALK(i,j,1)+SURA(i,j) |
GALK(i,j,1)=GALK(i,j,1)+SURA(i,j) |
222 |
GDIC(i,j,1)=GDIC(i,j,1)+SURC(i,j) |
GDIC(i,j,1)=GDIC(i,j,1)+SURC(i,j) |
223 |
|
#ifdef ALLOW_O2 |
224 |
GO2(i,j,1)=GO2(i,j,1)+SURO(i,j) |
GO2(i,j,1)=GO2(i,j,1)+SURO(i,j) |
225 |
|
#endif |
226 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
227 |
GFE(i,j,1)=GFE(i,j,1)+alpfe* |
GFE(i,j,1)=GFE(i,j,1)+alpfe* |
228 |
& InputFe(i,j,bi,bj)*recip_drF(1) |
& InputFe(i,j,bi,bj)*recip_drF(1) |
246 |
& PTR_PO4(i,j,k)+GPO4(i,j,k)*dTtracerLev(k) |
& PTR_PO4(i,j,k)+GPO4(i,j,k)*dTtracerLev(k) |
247 |
PTR_DOP(i,j,k)= |
PTR_DOP(i,j,k)= |
248 |
& PTR_DOP(i,j,k)+GDOP(i,j,k)*dTtracerLev(k) |
& PTR_DOP(i,j,k)+GDOP(i,j,k)*dTtracerLev(k) |
249 |
|
#ifdef ALLOW_O2 |
250 |
PTR_O2(i,j,k)= |
PTR_O2(i,j,k)= |
251 |
& PTR_O2(i,j,k)+GO2(i,j,k)*dTtracerLev(k) |
& PTR_O2(i,j,k)+GO2(i,j,k)*dTtracerLev(k) |
252 |
|
#endif |
253 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
254 |
PTR_FE(i,j,k)= |
PTR_FE(i,j,k)= |
255 |
& PTR_FE(i,j,k)+GFE(i,j,k)*dTtracerLev(k) |
& PTR_FE(i,j,k)+GFE(i,j,k)*dTtracerLev(k) |
287 |
if (k.eq.1) then |
if (k.eq.1) then |
288 |
SURave(i,j,bi,bj)=SURave(i,j,bi,bj)+ |
SURave(i,j,bi,bj)=SURave(i,j,bi,bj)+ |
289 |
& SURC(i,j)*deltaTclock |
& SURC(i,j)*deltaTclock |
290 |
|
#ifdef ALLOW_O2 |
291 |
SUROave(i,j,bi,bj)=SUROave(i,j,bi,bj)+ |
SUROave(i,j,bi,bj)=SUROave(i,j,bi,bj)+ |
292 |
& SURO(i,j)*deltaTclock |
& SURO(i,j)*deltaTclock |
293 |
|
#endif |
294 |
pCO2ave(i,j,bi,bj)=pCO2ave(i,j,bi,bj)+ |
pCO2ave(i,j,bi,bj)=pCO2ave(i,j,bi,bj)+ |
295 |
& pCO2(i,j,bi,bj)*deltaTclock |
& pCO2(i,j,bi,bj)*deltaTclock |
296 |
pHave(i,j,bi,bj)=pHave(i,j,bi,bj)+ |
pHave(i,j,bi,bj)=pHave(i,j,bi,bj)+ |