12 |
I myIter, myTime, myThid ) |
I myIter, myTime, myThid ) |
13 |
|
|
14 |
C !DESCRIPTION: |
C !DESCRIPTION: |
15 |
C Calculate the oxygen air-sea flux terms |
C Calculate the oxygen air-sea flux terms |
16 |
|
|
17 |
C !USES: =============================================================== |
C !USES: =============================================================== |
18 |
IMPLICIT NONE |
IMPLICIT NONE |
50 |
_RL O2sat(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL O2sat(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
51 |
_RL Kwexch(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL Kwexch(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
52 |
_RL FluxO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL FluxO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
53 |
_RL aTT |
_RL aTT |
54 |
_RL aTK |
_RL aTK |
55 |
_RL aTS |
_RL aTS |
56 |
_RL aTS2 |
_RL aTS2 |
73 |
ttemp = theta(i,j,k,bi,bj) |
ttemp = theta(i,j,k,bi,bj) |
74 |
stemp = salt(i,j,k,bi,bj) |
stemp = salt(i,j,k,bi,bj) |
75 |
|
|
76 |
SchmidtNoO2(i,j) = |
SchmidtNoO2(i,j) = |
77 |
& sox1 |
& sox1 |
78 |
& + sox2 * ttemp |
& + sox2 * ttemp |
79 |
& + sox3 * ttemp*ttemp |
& + sox3 * ttemp*ttemp |
80 |
& + sox4 * ttemp*ttemp*ttemp |
& + sox4 * ttemp*ttemp*ttemp |
81 |
|
|
82 |
C Determine surface flux of O2 |
C Determine surface flux of O2 |
83 |
C exchange coeff accounting for ice cover and Schmidt no. |
C exchange coeff accounting for ice cover and Schmidt no. |
84 |
C Kwexch_Pre= pisvel*(1-fice): previously computed in dic_surfforcing.F |
C Kwexch_Pre= pisvel*(1-fice): previously computed in dic_surfforcing.F |
85 |
|
|
87 |
& / sqrt(SchmidtNoO2(i,j)/660.0 _d 0) |
& / sqrt(SchmidtNoO2(i,j)/660.0 _d 0) |
88 |
|
|
89 |
C determine saturation O2 |
C determine saturation O2 |
90 |
C using Garcia and Gordon (1992), L&O (mistake in original???) |
C using Garcia and Gordon (1992), L&O (mistake in original ?) |
91 |
aTT = 298.15 _d 0 -ttemp |
aTT = 298.15 _d 0 -ttemp |
92 |
aTK = 273.15 _d 0 +ttemp |
aTK = 273.15 _d 0 +ttemp |
93 |
aTS = log(aTT/aTK) |
aTS = log(aTT/aTK) |
96 |
aTS4 = aTS3*aTS |
aTS4 = aTS3*aTS |
97 |
aTS5 = aTS4*aTS |
aTS5 = aTS4*aTS |
98 |
|
|
99 |
oCnew = oA0 + oA1*aTS + oA2*aTS2 + oA3*aTS3 + |
oCnew = oA0 + oA1*aTS + oA2*aTS2 + oA3*aTS3 + |
100 |
& oA4*aTS4 + oA5*aTS5 |
& oA4*aTS4 + oA5*aTS5 |
101 |
& + stemp*(oB0 + oB1*aTS + oB2*aTS2 + oB3*aTS3) |
& + stemp*(oB0 + oB1*aTS + oB2*aTS2 + oB3*aTS3) |
102 |
& + oC0*(stemp*stemp) |
& + oC0*(stemp*stemp) |
108 |
|
|
109 |
C Determine flux, inc. correction for local atmos surface pressure |
C Determine flux, inc. correction for local atmos surface pressure |
110 |
FluxO2(i,j) = Kwexch(i,j)* |
FluxO2(i,j) = Kwexch(i,j)* |
111 |
& (AtmosP(i,j,bi,bj)*O2sat(i,j) |
& (AtmosP(i,j,bi,bj)*O2sat(i,j) |
112 |
& - PTR_O2(i,j,K)) |
& - PTR_O2(i,j,K)) |
113 |
ELSE |
ELSE |
114 |
FluxO2(i,j) = 0. _d 0 |
FluxO2(i,j) = 0. _d 0 |
115 |
ENDIF |
ENDIF |
118 |
END DO |
END DO |
119 |
END DO |
END DO |
120 |
|
|
121 |
C update surface tendencies |
C update surface tendencies |
122 |
DO j=jmin,jmax |
DO j=jmin,jmax |
123 |
DO i=imin,imax |
DO i=imin,imax |
124 |
SGO2(i,j)= FluxO2(i,j) |
SGO2(i,j)= FluxO2(i,j) |