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

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

nemo_v1_update_005:RB: update headers for the TOP component.

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