80 |
_RL SURC(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL SURC(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
81 |
_RL SURO(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL SURO(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
82 |
_RL BIO(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL BIO(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
83 |
|
_RL BIO_kar(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
84 |
_RL CAR(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL CAR(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
85 |
_RL bioac(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL bioac(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
86 |
_RL pflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL pflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
90 |
_RL freefe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL freefe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
91 |
#endif |
#endif |
92 |
INTEGER I,J,k |
INTEGER I,J,k |
93 |
|
INTEGER nCALCITEstep |
94 |
CEOP |
CEOP |
95 |
|
|
96 |
DO k=1,Nr |
DO k=1,Nr |
105 |
SURC(i,j)=0.d0 |
SURC(i,j)=0.d0 |
106 |
CAR(i,j,k)=0.d0 |
CAR(i,j,k)=0.d0 |
107 |
BIO(i,j,k)=0.d0 |
BIO(i,j,k)=0.d0 |
108 |
|
BIO_kar(i,j,k)=0.d0 |
109 |
bioac(i,j,k)=0.d0 |
bioac(i,j,k)=0.d0 |
110 |
pflux(i,j,k)=0.d0 |
pflux(i,j,k)=0.d0 |
111 |
cflux(i,j,k)=0.d0 |
cflux(i,j,k)=0.d0 |
154 |
& myIter,myTime,myThid) |
& myIter,myTime,myThid) |
155 |
|
|
156 |
c carbonate |
c carbonate |
157 |
|
#ifdef CAR_DISS |
158 |
|
c dissolution only below saturation horizon |
159 |
|
c code following methid by Karsten Friis |
160 |
|
nCALCITEstep = 3600 |
161 |
|
IF(myIter .lt. (nIter0+5) .or. |
162 |
|
& mod(myIter,nCALCITEstep) .eq. 0)THEN |
163 |
|
CALL CALCITE_SATURATION( |
164 |
|
I bi,bj,imin,imax,jmin,jmax, |
165 |
|
I myIter,myTime,myThid) |
166 |
|
ENDIF |
167 |
|
c |
168 |
|
CALL CAR_FLUX_OMEGA_TOP( bioac, cflux, |
169 |
|
& bi,bj,imin,imax,jmin,jmax, |
170 |
|
& myIter,myTime,myThid) |
171 |
|
#else |
172 |
|
c old OCMIP way |
173 |
CALL CAR_FLUX( bioac, cflux, |
CALL CAR_FLUX( bioac, cflux, |
174 |
& bi,bj,imin,imax,jmin,jmax, |
& bi,bj,imin,imax,jmin,jmax, |
175 |
& myIter,myTime,myThid) |
& myIter,myTime,myThid) |
176 |
|
#endif |
177 |
|
|
178 |
c add all tendencies for PO4, DOP, ALK, DIC |
c add all tendencies for PO4, DOP, ALK, DIC |
179 |
DO k=1,Nr |
DO k=1,Nr |
187 |
GDOP(i,j,k)=+bioac(i,j,k)*DOPfraction |
GDOP(i,j,k)=+bioac(i,j,k)*DOPfraction |
188 |
& - maskC(i,j,k,bi,bj)*Kdopremin*PTR_DOP(i,j,k) |
& - maskC(i,j,k,bi,bj)*Kdopremin*PTR_DOP(i,j,k) |
189 |
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) |
190 |
|
BIO_kar(i,j,k)=R_NP*bio(i,j,k) |
191 |
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) |
192 |
if (PTR_O2(i,j,k).gt.o2crit) then |
if (PTR_O2(i,j,k).gt.o2crit) then |
193 |
GO2(i,j,k)=R_OP*bio(i,j,k) |
GO2(i,j,k)=R_OP*bio(i,j,k) |
204 |
GO2(i,j,1)=GO2(i,j,1)+SURO(i,j) |
GO2(i,j,1)=GO2(i,j,1)+SURO(i,j) |
205 |
#ifdef ALLOW_FE |
#ifdef ALLOW_FE |
206 |
GFE(i,j,1)=GFE(i,j,1)+alpfe* |
GFE(i,j,1)=GFE(i,j,1)+alpfe* |
207 |
& InputFe(i,j,bi,bj)/drF(1) |
& InputFe(i,j,bi,bj)*recip_drF(1) |
208 |
|
& *recip_hFacC(i,j,1,bi,bj) |
209 |
#endif |
#endif |
210 |
ENDIF |
ENDIF |
211 |
ENDDO |
ENDDO |
235 |
ENDDO |
ENDDO |
236 |
ENDDO |
ENDDO |
237 |
|
|
238 |
|
#ifdef ALLOW_FE |
239 |
|
#ifdef MINFE |
240 |
|
c find free iron and get rid of insoluble part |
241 |
|
call fe_chem(bi,bj,iMin,iMax,jMin,jMax, PTR_FE, freefe, |
242 |
|
& myIter, mythid) |
243 |
|
#endif |
244 |
|
#endif |
245 |
|
|
246 |
|
|
247 |
#ifdef ALLOW_TIMEAVE |
#ifdef ALLOW_TIMEAVE |
248 |
c save averages |
c save averages |
249 |
DO k=1,Nr |
DO k=1,Nr |
253 |
& BIOac(i,j,k)*deltaTclock |
& BIOac(i,j,k)*deltaTclock |
254 |
CARave(i,j,k,bi,bj)=CARave(i,j,k,bi,bj)+ |
CARave(i,j,k,bi,bj)=CARave(i,j,k,bi,bj)+ |
255 |
& CAR(i,j,k)*deltaTclock |
& CAR(i,j,k)*deltaTclock |
256 |
|
OmegaCave(i,j,k,bi,bj)= OmegaCave(i,j,k,bi,bj)+ |
257 |
|
& OmegaC(i,j,k,bi,bj)*deltaTclock |
258 |
|
pfluxave(i,j,k,bi,bj)= pfluxave(i,j,k,bi,bj) + |
259 |
|
& pflux(i,j,k)*deltaTclock |
260 |
|
cfluxave(i,j,k,bi,bj)= cfluxave(i,j,k,bi,bj) + |
261 |
|
& cflux(i,j,k)*deltaTclock |
262 |
if (k.eq.1) then |
if (k.eq.1) then |
263 |
SURave(i,j,bi,bj)=SURave(i,j,bi,bj)+ |
SURave(i,j,bi,bj)=SURave(i,j,bi,bj)+ |
264 |
& SURC(i,j)*deltaTclock |
& SURC(i,j)*deltaTclock |