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.
p4zlys.F in trunk/NEMO/TOP_SRC/SMS – NEMO

source: trunk/NEMO/TOP_SRC/SMS/p4zlys.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: 4.5 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 p4zlys
8#if defined key_passivetrc && defined key_trc_pisces
9CCC---------------------------------------------------------------------
10CCC
11CCC        ROUTINE p4zlys : PISCES MODEL
12CCC        *****************************
13CCC
14CCC
15CCC     PURPOSE.
16CCC     --------
17CCC          *P4ZLYS*  CALCULATES DEGREE OF CACO3 SATURATION IN THE WATER
18CCC                    COLUMN, DISSOLUTION/PRECIPITATION OF CACO3 AND LOSS
19CCC                    OF CACO3 TO THE CACO3 SEDIMENT POOL.
20CC
21CC     EXTERNALS.
22CC     ----------
23CC          NONE.
24CC
25CC   MODIFICATIONS:
26CC   --------------
27CC      original      : 1988-07 E. MAIER-REIMER      MPI HAMBURG
28CC      additions     : 1998    O. Aumont
29CC      modifications : 1999    C. Le Quere
30CC      modifications : 2004    O. Aumont
31CC ---------------------------------------------------------------------------
32CC parameters and commons
33CC ======================
34CDIR$ NOLIST
35      USE oce_trc
36      USE trp_trc
37      USE sms
38      IMPLICIT NONE
39CDIR$ LIST
40CC----------------------------------------------------------------------
41CC local declarations
42CC ==================
43C
44      INTEGER ji, jj, jk, jn
45      REAL zbot, zalk, zdic, zph, remco3, ah2
46      REAL delco3, excess, dispot
47C
48C
49C* 1.1  BEGIN OF ITERATION
50C ------------------------
51C
52      DO jn = 1,5
53C
54C* 1.2  COMPUTE [CO3--] and [H+] CONCENTRATIONS
55C -------------------------------------------
56C
57        DO jk = 1,jpkm1
58          DO jj=1,jpj
59            DO ji = 1, jpi
60C
61C* 1.3  SET DUMMY VARIABLE FOR TOTAL BORATE
62C -----------------------------------------
63C
64              zbot = borat(ji,jj,jk)
65C
66C* 1.4  SET DUMMY VARIABLE FOR [H+]
67C ---------------------------------
68C
69              zph = hi(ji,jj,jk)*tmask(ji,jj,jk)
70     &           +(1.-tmask(ji,jj,jk))*1.e-9
71C
72C* 1.5  SET DUMMY VARIABLE FOR [SUM(CO2)]GIVEN 
73C -------------------------------------------
74C
75              zdic = trn(ji,jj,jk,jpdic) 
76C
77C* 1.6 CALCULATE [ALK]([CO3--], [HCO3-])
78C ------------------------------------
79C
80              zalk=trn(ji,jj,jk,jptal)-
81     &            (akw3(ji,jj,jk)/zph-zph
82     &            +zbot/(1.+zph/akb3(ji,jj,jk)))
83C
84C* 2.10 CALCULATE [H+] and [CO3--]
85C -----------------------------------------
86C
87              ah2=sqrt((zdic-zalk)*(zdic-zalk)+
88     &          4.*(zalk*ak23(ji,jj,jk)/ak13(ji,jj,jk))
89     &          *(2*zdic-zalk))
90C
91              ah2=0.5*ak13(ji,jj,jk)/zalk*((zdic-zalk)+ah2)
92              co3(ji,jj,jk) = zalk/(2.+ah2/ak23(ji,jj,jk))
93C
94              hi(ji,jj,jk)  = ah2
95C
96            ENDDO
97          ENDDO
98        END DO
99      END DO
100C
101C     ---------------------------------------------------------
102C*    2. CALCULATE DEGREE OF CACO3 SATURATION AND CORRESPONDING
103C        DISSOLOUTION AND PRECIPITATION OF CACO3 (BE AWARE OF
104C        MGCO3)
105C     ---------------------------------------------------------
106C
107      DO jk = 1,jpkm1
108        DO jj = 1,jpj
109          DO ji = 1, jpi
110C
111C* 2.1  DEVIATION OF [CO3--] FROM SATURATION VALUE
112C ------------------------------------------------
113C
114            delco3 = co3(ji,jj,jk)-aksp(ji,jj,jk)/calcon
115C
116C* 2.2  SET DEGREE OF UNDER-/SUPERSATURATION
117C ------------------------------------------
118C
119            excess = max(0.,delco3)
120C
121C* 2.3  AMOUNT CACO3 (12C) THAT RE-ENTERS SOLUTION
122C       (ACCORDING TO THIS FORMULATION ALSO SOME PARTICULATE
123C       CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION)
124C --------------------------------------------------------------
125C
126            dispot = trn(ji,jj,jk,jpcal)*min(1.,
127     &          (1.-delco3/(dispo0+abs(delco3))) )
128#    if defined key_off_degrad
129     &          *facvol(ji,jj,jk)
130#    endif
131C
132C* 2.4  CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3],
133C       AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION
134C -----------------------------------------------------------
135C
136            remco3=dispot/rmoss
137            co3(ji,jj,jk) = co3(ji,jj,jk)+
138     &          remco3*rfact
139            tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal)+
140     &          2.*remco3
141            tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal)-
142     &          remco3
143            tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic)+
144     &          remco3
145C
146          ENDDO
147        ENDDO
148      END DO
149
150#    if defined key_trc_dia3d
151         trc3d(:,:,:,1) = hi(:,:,:)
152         trc3d(:,:,:,2) = co3(:,:,:)
153         trc3d(:,:,:,3) = aksp(:,:,:)/calcon
154#    endif
155
156C
157#endif
158      RETURN
159      END
160
Note: See TracBrowser for help on using the repository browser.