54 |
_RL O2sat(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL O2sat(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
55 |
_RL Kwexch(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL Kwexch(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
56 |
_RL FluxO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL FluxO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
_RL AtmosO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
57 |
_RL aTT |
_RL aTT |
58 |
_RL aTK |
_RL aTK |
59 |
_RL aTS |
_RL aTS |
73 |
C calculate SCHMIDT NO. for O2 |
C calculate SCHMIDT NO. for O2 |
74 |
DO j=jmin,jmax |
DO j=jmin,jmax |
75 |
DO i=imin,imax |
DO i=imin,imax |
76 |
IF (hFacC(i,j,k,bi,bj).NE.0.) THEN |
IF (maskC(i,j,k,bi,bj).NE.0.) THEN |
77 |
|
ttemp = theta(i,j,k,bi,bj) |
78 |
|
stemp = salt(i,j,k,bi,bj) |
79 |
|
|
80 |
SchmidtNoO2(i,j) = |
SchmidtNoO2(i,j) = |
81 |
& sox1 |
& sox1 |
82 |
& + sox2 * theta(i,j,k,bi,bj) |
& + sox2 * ttemp |
83 |
& + sox3 * theta(i,j,k,bi,bj)*theta(i,j,k,bi,bj) |
& + sox3 * ttemp*ttemp |
84 |
& + sox4 * theta(i,j,k,bi,bj)*theta(i,j,k,bi,bj) |
& + sox4 * ttemp*ttemp*ttemp |
|
& *theta(i,j,k,bi,bj) |
|
85 |
|
|
86 |
C Determine surface flux of O2 |
C Determine surface flux of O2 |
87 |
C exchange coeff, accounting for ice cover and Schmidt no. |
C exchange coeff accounting for ice cover and Schmidt no. |
88 |
pisvel(i,j,bi,bj) =0.337*wind(i,j,bi,bj)**2/3.6d5 |
C Kwexch_Pre= pisvel*(1-fice): previously computed in dic_surfforcing.F |
89 |
Kwexch(i,j) = |
|
90 |
& pisvel(i,j,bi,bj) |
Kwexch(i,j) = Kwexch_Pre(i,j,bi,bj) |
91 |
& / sqrt(SchmidtNoO2(i,j)/660.0) |
& / sqrt(SchmidtNoO2(i,j)/660.0 _d 0) |
|
c ice influence |
|
|
Kwexch(i,j) =(1.d0-Fice(i,j,bi,bj))*Kwexch(i,j) |
|
92 |
|
|
|
ttemp = theta(i,j,k,bi,bj) |
|
|
stemp = salt(i,j,k,bi,bj) |
|
93 |
C determine saturation O2 |
C determine saturation O2 |
94 |
C using Garcia and Gordon (1992), L&O (mistake in original???) |
C using Garcia and Gordon (1992), L&O (mistake in original???) |
95 |
aTT = 298.15-ttemp |
aTT = 298.15 _d 0 -ttemp |
96 |
aTK = 273.15+ttemp |
aTK = 273.15 _d 0 +ttemp |
97 |
aTS = log(aTT/aTK) |
aTS = log(aTT/aTK) |
98 |
aTS2 = aTS*aTS |
aTS2 = aTS*aTS |
99 |
aTS3 = aTS2*aTS |
aTS3 = aTS2*aTS |
108 |
o2s = EXP(oCnew) |
o2s = EXP(oCnew) |
109 |
|
|
110 |
c Convert from ml/l to mol/m^3 |
c Convert from ml/l to mol/m^3 |
111 |
O2sat(i,j) = o2s/22391.6*1000.0 |
O2sat(i,j) = o2s/22391.6 _d 0 * 1. _d 3 |
|
|
|
|
#ifdef USE_PLOAD |
|
|
C Convert anomalous pressure pLoad (in Pa) from atmospheric model |
|
|
C to total pressure (in Atm) |
|
|
C Note: it is assumed the reference atmospheric pressure is 1Atm=1013mb |
|
|
C rather than the actual ref. pressure from Atm. model so that on |
|
|
C average AtmosP is about 1 Atm. |
|
|
AtmosP(i,j,bi,bj)= 1. _d 0 + pLoad(i,j,bi,bj)/Pa2Atm |
|
|
#endif |
|
112 |
|
|
113 |
c Determine flux, inc. correction for local atmos surface pressure |
C Determine flux, inc. correction for local atmos surface pressure |
114 |
cQQ PTR_O2? |
FluxO2(i,j) = Kwexch(i,j)* |
|
FluxO2(i,j) = maskC(i,j,k,bi,bj)*Kwexch(i,j)* |
|
115 |
& (AtmosP(i,j,bi,bj)*O2sat(i,j) |
& (AtmosP(i,j,bi,bj)*O2sat(i,j) |
116 |
& - PTR_O2(i,j,1)) |
& - PTR_O2(i,j,K)) |
117 |
ELSE |
ELSE |
118 |
FluxO2(i,j) = 0.d0 |
FluxO2(i,j) = 0. _d 0 |
119 |
ENDIF |
ENDIF |
120 |
|
|
121 |
|
|
125 |
C update surface tendencies |
C update surface tendencies |
126 |
DO j=jmin,jmax |
DO j=jmin,jmax |
127 |
DO i=imin,imax |
DO i=imin,imax |
128 |
SGO2(i,j)= maskC(i,j,1,bi,bj)*FluxO2(i,j) |
SGO2(i,j)= FluxO2(i,j) |
129 |
& *recip_drF(1) * recip_hFacC(i,j,1,bi,bj) |
& *recip_drF(K) * recip_hFacC(i,j,K,bi,bj) |
130 |
ENDDO |
ENDDO |
131 |
ENDDO |
ENDDO |
132 |
#endif |
#endif |