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 trunk/NEMO/TOP_SRC/SMS – NEMO

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