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 @ 186

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

CL + CE : NEMO TRC_SRC start

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