New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
p4zflx.F in trunk/NEMO/TOP_SRC/SMS – NEMO

source: trunk/NEMO/TOP_SRC/SMS/p4zflx.F @ 247

Last change on this file since 247 was 247, checked in by opalod, 19 years ago

CL : Add CVS Header and CeCILL licence information

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 6.2 KB
Line 
1
2CCC $Header$ 
3CCC  TOP 1.0 , LOCEAN-IPSL (2005) 
4C This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
5C ---------------------------------------------------------------------------
6CDIR$ LIST
7      SUBROUTINE p4zflx
8#if defined key_passivetrc && defined key_trc_pisces
9CCC---------------------------------------------------------------------
10CCC
11CCC          ROUTINE p4zflx : PISCES MODEL
12CCC          *****************************
13CCC
14CCC
15CC     PURPOSE.
16CC     --------
17CC          *P4ZFLX* CALCULATES GAS EXCHANGE AND CHEMISTRY AT SEA SURFACE
18CC
19CC     EXTERNALS.
20CC     ----------
21CC          NONE.
22CC
23CC   MODIFICATIONS:
24CC   --------------
25CC      original      : 1988-07 E. MAIER-REIMER      MPI HAMBURG
26CC      additions     : 1998    O. Aumont
27CC      modifications : 1999    C. Le Quere
28CC      modifications : 2004    O. Aumont
29CC     -----------------------------------------------------------------
30CC  parameters and commons
31CC ======================
32CDIR$ NOLIST
33      USE oce_trc
34      USE trp_trc
35      USE sms
36      IMPLICIT NONE
37CDIR$ LIST
38CC----------------------------------------------------------------------
39CC local declarations
40CC ==================
41C
42      INTEGER ji, jj, krorr
43      REAL zexp1, zexp2
44      REAL a1, a2, a3, b2, b3, ttc, ws, alpco2
45      REAL fld, flu, oxy16, flu16
46      REAL zph,ah2,zbot,zdic,zalk,schmitt, zrhocd
47      REAL zwind(jpi,jpj)
48
49CC
50CC----------------------------------------------------------------------
51CC statement functions
52CC ===================
53CDIR$ NOLIST
54#include "domzgr_substitute.h90"
55CDIR$ LIST
56C
57C
58C  1. ASSIGNATION TO EXPONENTS IN THE LISS AND MERLIVAT
59C     FORMULATION OF THE GAS EXCHANGE RATE
60c -----------------------------------------------------
61C
62
63      zexp1 = -2./3.
64      zexp2 = -1./2. 
65      a1    = 0.17
66      a2    = 2.85
67      a3    = 5.90
68      b2    = 9.65
69      b3    = 49.3 
70 
71      zrhocd = 1.3*1.3e-3       
72      DO jj = 1, jpj
73         DO ji = 1 , jpi
74            IF (igaswind .EQ. 0 ) then
75               zwind(ji,jj) = sqrt(taux(ji,jj)**2+tauy(ji,jj)**2)
76     $                            /zrhocd
77            ELSE
78               zwind(ji,jj) = vatm(ji,jj)
79            ENDIF
80         END DO
81      END DO
82C
83C* 1.1 SURFACE CHEMISTRY (PCO2 AND [H+] IN
84C     SURFACE LAYER); THE RESULT OF THIS CALCULATION
85C     IS USED TO COMPUTE AIR-SEA FLUX OF CO2
86C ---------------------------------------------------
87C
88      DO krorr = 1,10
89C
90        DO jj = 1,jpj
91          DO ji = 1,jpi
92C
93C* 1.2 DUMMY VARIABLES FOR DIC, H+, AND BORATE
94C --------------------------------------------
95C
96            zbot = borat(ji,jj,1)
97            zdic  = trn(ji,jj,1,jpdic)
98            zph = max(hi(ji,jj,1),1.E-10)
99C
100C* 1.3 CALCULATE [ALK]([CO3--], [HCO3-])
101C ------------------------------------
102C
103            zalk=trn(ji,jj,1,jptal)-
104     &          (akw3(ji,jj,1)/zph-zph+zbot/(1.+zph/akb3(ji,jj,1)))
105C
106C* 1.4 CALCULATE [H+] AND [H2CO3]
107C -----------------------------------------
108C
109            ah2=sqrt((zdic-zalk)**2+4*(zalk*ak23(ji,jj,1)
110     &          /ak13(ji,jj,1))*(2*zdic-zalk))
111            ah2=0.5*ak13(ji,jj,1)/zalk*((zdic-zalk)+ah2)
112            h2co3(ji,jj) = (2*zdic-zalk)/(2.+ak13(ji,jj,1)/ah2)
113            hi(ji,jj,1)  = ah2
114          END DO
115        END DO
116      END DO
117C
118C
119C 2. COMPUTE FLUXES
120C --------------
121C
122C 2.1 FIRST COMPUTE GAS EXCHANGE COEFFICIENTS
123C -------------------------------------------
124C
125      DO jj = 1,jpj
126        DO ji = 1,jpi
127
128           ws = zwind(ji,jj)
129          ttc = min(35.,tn(ji,jj,1))
130          schmitt= 2073.1-125.62*ttc+3.6276*ttc**2-0.043126*ttc**3
131C
132C 2.2 COMPUTE GAS EXCHANGE FOR CO2
133C --------------------------------
134C
135          kgwanin(ji,jj) = (0.3*ws*ws + 2.5*(0.5246+ttc*(0.016256+
136     &       ttc*0.00049946)))*sqrt(660./schmitt)
137C
138C 2.3 CONVERT TO M/S
139C ------------------
140C
141          kgwanin(ji,jj) = kgwanin(ji,jj)/100./3600.
142C
143C 2.4 convert to mol/m2/s/uatm, alpco2(chemc(ji,jj,1)) is in 
144C      mol/L/uatm and apply ice cover
145C -----------------------------------------------------------
146C
147          kgwanin(ji,jj) = kgwanin(ji,jj)*chemc(ji,jj,1)*1.e3* 
148     &       (1-freeze(ji,jj))
149         END DO
150       END DO
151C
152C 2.5 COMPUTE GAS EXCHANGE COEFFICIENT FO O2 FROM LISS AND
153C      MERLIVAT EQUATIONS
154C ---------------------------------------------------------
155C
156       DO jj = 1,jpj
157         DO ji = 1,jpi
158C
159           ws = zwind(ji,jj)
160
161           ttc = min(35.,tn(ji,jj,1))
162           schmitt = 1953.4-128.0*ttc+3.9918*ttc**2
163     &               -0.050091*ttc**3
164C
165           IF (ws.LE.3.6) THEN
166               fugaci(ji,jj) = (a1*ws)*(schmitt/660.)**zexp1
167           ENDIF
168           IF ((ws.GT.3.6).AND.(ws.LE.13.)) THEN
169               fugaci(ji,jj) = (a2*ws-b2)*(schmitt/660.)**zexp2
170           ENDIF
171           IF (ws.GT.13.) THEN
172               fugaci(ji,jj) = (a3*ws-b3)*(schmitt/660.)**zexp2
173           ENDIF
174C
175C CONVERT TO CM AND APPLY SEA ICE COVER
176C -------------------------------------
177C
178           fugaci(ji,jj) = fugaci(ji,jj)/100./3600.*
179     $         (1-freeze(ji,jj))*tmask(ji,jj,1)
180C
181#    if defined key_off_degrad
182           fugaci(ji,jj) = exp(-rfact*fugaci(ji,jj)
183     $         *facvol(ji,jj,1)/fse3t(ji,jj,1))
184#    else
185           fugaci(ji,jj) = exp(-rfact*fugaci(ji,jj)
186     $         /fse3t(ji,jj,1))
187#    endif
188           
189         ENDDO
190       ENDDO
191C
192
193       DO jj = 1,jpj
194         DO ji = 1,jpi
195C
196C Compute CO2 flux for the sea and air
197C ------------------------------------
198C
199           alpco2 = chemc(ji,jj,1)
200           fld = atcco2*tmask(ji,jj,1)*kgwanin(ji,jj)
201           flu = h2co3(ji,jj)/alpco2
202     &        *tmask(ji,jj,1)*kgwanin(ji,jj)
203
204           tra(ji,jj,1,jpdic)= tra(ji,jj,1,jpdic)+(fld-flu)
205     &        /1000./fse3t(ji,jj,1)
206C
207C Compute O2 flux 
208C ---------------
209C
210          oxy16 = trn(ji,jj,1,jpoxy)
211          flu16 = (-fugaci(ji,jj)+1)*fse3t(ji,jj,1)
212     &            *(atcox*chemc(ji,jj,3)-oxy16)*
213     &            tmask(ji,jj,1)/rfact 
214          tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy)+flu16
215     &            /fse3t(ji,jj,1)
216 
217C
218C Save diagnostics
219C ----------------
220C
221#    if defined key_trc_diaadd
222          trc2d(ji,jj,1) = (fld-flu)
223          trc2d(ji,jj,2) = flu16*1000.
224          trc2d(ji,jj,3) = kgwanin(ji,jj)
225          trc2d(ji,jj,4) = (fld-flu)/(kgwanin(ji,jj)+1.E-15)
226#    endif
227C
228        END DO
229      END DO
230C
231#endif
232      RETURN
233      END
234
Note: See TracBrowser for help on using the repository browser.