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.
h3clys.F in tags/nemo_v1_04/NEMO/TOP_SRC/SMS – NEMO

source: tags/nemo_v1_04/NEMO/TOP_SRC/SMS/h3clys.F @ 8023

Last change on this file since 8023 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:keywords set to Author Date Id Revision
File size: 8.9 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 h3clys
7#if defined key_passivetrc && defined key_trc_hamocc3
8CCC---------------------------------------------------------------------
9CCC
10CCC                       ROUTINE h3clys
11CCC                     ******************
12CCC
13CCC
14CCC     PURPOSE.
15CCC     --------
16CCC          *H3CLYS*  CALCULATES DEGREE OF CACO3 SATURATION IN THE WATER
17CCC                    COLUMN, DISSOLUTION/PRECIPITATION OF CACO3 AND LOSS
18CCC                    OF CACO3 TO THE CACO3 SEDIMENT POOL.
19CCC
20CC
21CC     METHOD.
22CC     -------
23CC          [H+] AND [CO3--] FOR THE ACTUAL TIME STEP ARE CALCULATED
24CC     BY NEWTON-RAPHSON ITERATION (E.G. SCARBOROUGH, 1958).
25CC
26CC     EXTERNALS.
27CC     ----------
28CC          NONE.
29CC
30CC     REFERENCE.
31CC     ----------
32CC
33CC          SCARBOROUGH, J. (1958) NUMERICAL MATHEMATICAL ANALYSIS.
34CC          OXFORD UNIVERSITY PRESS, LONDON, 4TH ED., 576 PP..
35CC
36CC*     VARIABLE           TYPE    PURPOSE.
37CC      --------           ----    --------
38CC 
39CC      *NYEAR*            INTEGER COUNTS TIMESTEPS (YEARS) OF INTEGRATION
40CC                           (INTEGER, INPUT)
41CC      *CONVEG*           REAL    CHECK FOR CONVERGENCE OF NEWTON-RAPHSON
42CC                                 METHOD
43CC      *KITTER*           INTEGER SETS UPPER LIMIT FOR NUMBER OF ITERATIONS
44CC                                 TO DETERMINE [CO3--] AND [H+]
45CC      *AKW*              REAL    APPROXIMATE VALUE OF IONIC PRODUCT OF
46CC                                 WATER
47CC      *H*                REAL    [H+], DUMMY VARIABLE
48CC      *R*                REAL    [CO3--] [MOLE/L], DUMMY VARIABLE
49CC      *ALKA*             REAL    GIVEN ALKALINITY [EQV/L], DUMMY VARIABLE
50CC      *C*                REAL    GIVEN [SUM(12C)O2] [MOLE/L], DUMMY VARIABLE
51CC      *A*                REAL    ALKALINITY [EQV/L] AS FUNCTION OF [CO3--]
52CC                                 AND [H+], DUMMY VARIABLE
53CC      *DELCO3*           REAL    DEVIATION OF ACTUAL CACO3 CONCENTRATION FROM
54CC                                 SATURATION VALUE
55CC      *UNDSAT*           REAL    UNDERSATURATION OF CACO3 (E.G. 3.=THREEFOLD)
56CC      *EXCESS*           REAL    EXCESS OF CACO3 (E.G. 3.=THREEFOLD)
57CC      *DISPOT*           REAL    FRACTION CACO3 (12C) THAT IS DISSOLVED
58CC      *EXCE14*           REAL    SUPERSATURATION IN CA(14C)O3 (E.G. 3.=
59CC                                 THREEFOLD)
60CC      *DISP14*           REAL    FRACTION CACO3 (14C) THAT IS DISSOLVED
61CC      *EXCE13*           REAL    SUPERSATURATION IN CA(13C)O3 (E.G. 3.=
62CC                                 THREEFOLD)
63CC      *DISP13*           REAL    FRACTION CACO3 (13C) THAT IS DISSOLVED
64CC      *SEDLOS*           REAL    FRACTION OF CACO3 IN THE BOTTOM WATER LAYER
65CC                                 LOST TO THE CACO3 SEDIMENT POOL
66CC      *SEDLOI*           REAL    FRACTION OF CACO3 IN THE BOTTOM WATER LAYER
67CC                                 WHICH REMAINS IN THE WATER COLUMN
68CC
69CC   MODIFICATIONS:
70CC   --------------
71CC      original      : 1988-07 E. MAIER-REIMER      MPI HAMBURG
72CC      additions     : 1998    O. Aumont
73CC      modifications : 1999    C. Le Quere
74CC ---------------------------------------------------------------------------
75CC parameters and commons
76CC ======================
77CDIR$ NOLIST
78      USE oce_trc
79      USE trp_trc
80      USE sms
81      IMPLICIT NONE
82CDIR$ LIST
83CC----------------------------------------------------------------------
84CC local declarations
85CC ==================
86C
87      INTEGER ji, jj, jk, jn
88      INTEGER kitter
89      REAL bot, alka
90      REAL r, a, c
91      REAL delco3, excess, dispot
92      REAL h,remco3,ah2
93      REAL conveg, bicarb, caralk
94C
95C ------------------------------------------------------------------
96C
97C* 1. SET HALF PRECISION CONSTANTS
98C --------------------------------
99C
100      zero = 0.
101C
102C ===========================================================
103C* 2. ITERATION TO DETERMINE [CO3--] AND [H+]
104C     (NEWTON-RAPHSON METHOD:
105C     THE VALUES OF [SUM(CO2)] AND [ALK] ARE GIVEN,
106C     DESIRED ROOTS OF [CO3--] AND [H+] FOR THAT PAIR
107C     ARE DETERMINED BY SOLVING NUMERICALLY THE SYSTEM
108C     OF THE TWO NONLINEAR EQUATIONS
109C     1) [ALK]GIVEN      - [ALK]([CO3--],[H+])      = 0 (=F)
110C     2) [SUM(CO2)]GIVEN - [SUM(CO2)]([CO3--],[H+]) = 0 (=GG)
111C ===========================================================
112C
113C
114C* 2.1  SET MAX. NUMBER OF ITERATIONS
115C --------------------------------------
116C
117      kitter = 15
118C
119C* 2.2  SET DAMPING PARAMETERS FOR CORRECTIONS OF [CO3--]
120C       AND [H+]
121C -------------------------------------------------------
122C
123C
124C 2.3 INITIALISATION OF [HI+], and [CO3--]
125C ----------------------------------------
126C
127      DO jk=1,jpkm1
128        DO jj=1,jpj
129          DO ji=1,jpi
130            caralk = trn(ji,jj,jk,jptal)-
131     &          borat(ji,jj,jk)/(1.+1E-8/akb3(ji,jj,jk))
132            co3(ji,jj,jk) = caralk-trn(ji,jj,jk,jpdic)
133     &          +(1.-tmask(ji,jj,jk))*.5e-3
134            bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk)
135            hi(ji,jj,jk) = ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk)
136          END DO
137        END DO
138      END DO
139C
140C* 2.4  BEGIN OF ITERATION
141C ------------------------
142C
143      DO jn = 1,kitter
144C
145C* 2.5  COMPUTE [CO3--] and [H+] CONCENTRATIONS
146C -------------------------------------------
147C
148        rconvs=0.
149        DO jk = 1,jpkm1
150          DO jj=1,jpj
151            DO ji = 1, jpi
152C
153C* 2.6  SET DUMMY VARIABLE FOR TOTAL BORATE
154C -----------------------------------------
155C
156              bot = borat(ji,jj,jk)
157C
158C* 2.7  SET DUMMY VARIABLE FOR [H+], AND [CO3--]
159C ----------------------------------------------
160C
161              h = hi(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9
162              h = amax1(hi(ji,jj,jk),1.E-10)
163              r = co3(ji,jj,jk)+(1.-tmask(ji,jj,jk))*.5e-3
164C
165C* 2.8  SET DUMMY VARIABLE FOR [ALK]GIVEN AND
166C       [SUM(CO2)]GIVEN
167C -------------------------------------------
168C
169              alka = trn(ji,jj,jk,jptal) 
170              c = trn(ji,jj,jk,jpdic) 
171C
172C* 2.9 CALCULATE [ALK]([CO3--], [HCO3-])
173C ------------------------------------
174C
175              a=alka-
176     &            (akw3(ji,jj,jk)/h-h+bot/(1.+h/akb3(ji,jj,jk)))
177C
178C* 2.10 CALCULATE [H+] and [CO3--]
179C -----------------------------------------
180C
181              ah2=sqrt((c-a)**2+4.*(a*ak23(ji,jj,jk)/ak13(ji,jj,jk))
182     &            *(2*c-a))
183              ah2=0.5*ak13(ji,jj,jk)/a*((c-a)+ah2)
184              co3(ji,jj,jk) = a/(2.+ah2/ak23(ji,jj,jk))
185C
186C* 2.11 CONTROL VARIABLE TO CHECK CONVERGENCE
187C -------------------------------------------
188C
189c
190              conveg=((ah2-hi(ji,jj,jk))/hi(ji,jj,jk))**2
191     $            *tmask(ji,jj,jk)
192              rconvs = rconvs+conveg
193              hi(ji,jj,jk)  = ah2
194            ENDDO
195          ENDDO
196        END DO
197C
198C
199C  2.12 CHECK CONVERGENCE
200C  ----------------------
201C
202        IF (rconvs.LE.1.E-2) EXIT
203C
204      END DO
205C
206C     ---------------------------------------------------------
207C*    3. CALCULATE DEGREE OF CACO3 SATURATION AND CORRESPONDING
208C        DISSOLOUTION AND PRECIPITATION OF CACO3 (BE AWARE OF
209C        MGCO3)
210C     ---------------------------------------------------------
211C
212      DO jk = 2,jpkm1
213        DO jj = 1,jpj
214          DO ji = 1, jpi
215C
216C* 3.1  DEVIATION OF [CO3--] FROM SATURATION VALUE
217C ------------------------------------------------
218C
219            delco3 = co3(ji,jj,jk)-aksp(ji,jj,jk)/calcon
220C
221C* 3.2  SET DEGREE OF UNDER-/SUPERSATURATION
222C ------------------------------------------
223C
224            excess = amax1(zero,delco3)
225C
226C* 3.3  AMOUNT CACO3 (12C) THAT RE-ENTERS SOLUTION
227C       (ACCORDING TO THIS FORMULATION ALSO SOME PARTICULATE
228C       CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION)
229C --------------------------------------------------------------
230C
231            dispot = trn(ji,jj,jk,jpcal)*amin1(1.,
232     &          (1.-delco3/(dispo0+abs(delco3))) )
233#    if defined key_off_degrad
234     &          *facvol(ji,jj,jk)
235#    endif
236C
237C* 3.5  CHANGE OF PARTICULATE CACO3 AND TOTAL INORGANIC 14C
238C       IN THE WATER COLUMN DUE TO CACO3 DISSOLUTION/PRECIP.
239C ----------------------------------------------------------
240C
241            cristl = spocri
242#    if defined key_off_degrad
243     &          *facvol(ji,jj,jk)
244#    endif
245C* 3.8  CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3],
246C       AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION
247C -----------------------------------------------------------
248C
249            remco3=(dispot-excess*cristl)/rmoss
250            co3(ji,jj,jk) = co3(ji,jj,jk)
251     &          +remco3*rfact
252            tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal)+
253     &          2.*remco3
254            tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal)-
255     &          remco3
256            tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic)+
257     &          remco3
258#    if defined key_trc_biohamocc13
259            tra(ji,jj,jk,jp13c) = tra(ji,jj,jk,jp13c)+pdb*
260     &          remco3
261#    endif
262C
263C
264          ENDDO
265        ENDDO
266      END DO
267C
268#endif
269      RETURN
270      END
271
Note: See TracBrowser for help on using the repository browser.