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

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

nemo_v1_update_028 : CT : add missing headers

  • 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, zfact, zalka
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)
65        zfact=rhop(ji,jj,jk)/1000.+rtrn
66C
67C* 1.4  SET DUMMY VARIABLE FOR [H+]
68C ---------------------------------
69C
70        zph = hi(ji,jj,jk)*tmask(ji,jj,jk)/zfact
71     &    +(1.-tmask(ji,jj,jk))*1.e-9
72C
73C* 1.5  SET DUMMY VARIABLE FOR [SUM(CO2)]GIVEN 
74C -------------------------------------------
75C
76        zdic=trn(ji,jj,jk,jpdic)/zfact
77        zalka=trn(ji,jj,jk,jptal)/zfact
78C
79C* 1.6 CALCULATE [ALK]([CO3--], [HCO3-])
80C ------------------------------------
81C
82        zalk=zalka-(akw3(ji,jj,jk)/zph-zph
83     &     +zbot/(1.+zph/akb3(ji,jj,jk)))
84C
85C* 2.10 CALCULATE [H+] and [CO3--]
86C -----------------------------------------
87C
88        ah2=sqrt((zdic-zalk)*(zdic-zalk)+
89     &     4.*(zalk*ak23(ji,jj,jk)/ak13(ji,jj,jk))
90     &     *(2*zdic-zalk))
91C
92        ah2=0.5*ak13(ji,jj,jk)/zalk*((zdic-zalk)+ah2)
93        co3(ji,jj,jk) = zalk/(2.+ah2/ak23(ji,jj,jk))*zfact
94
95        hi(ji,jj,jk)  = ah2*zfact
96C
97          ENDDO
98        ENDDO
99      END DO
100C
101      END DO
102C
103C     ---------------------------------------------------------
104C*    2. CALCULATE DEGREE OF CACO3 SATURATION AND CORRESPONDING
105C        DISSOLOUTION AND PRECIPITATION OF CACO3 (BE AWARE OF
106C        MGCO3)
107C     ---------------------------------------------------------
108C
109      DO jk = 1,jpkm1
110        DO jj = 1,jpj
111          DO ji = 1, jpi
112C
113C* 2.1  DEVIATION OF [CO3--] FROM SATURATION VALUE
114C ------------------------------------------------
115C
116            delco3 = co3(ji,jj,jk)-aksp(ji,jj,jk)/calcon
117C
118C* 2.2  SET DEGREE OF UNDER-/SUPERSATURATION
119C ------------------------------------------
120C
121            excess = max(0.,-delco3)
122C
123C* 2.3  AMOUNT CACO3 (12C) THAT RE-ENTERS SOLUTION
124C       (ACCORDING TO THIS FORMULATION ALSO SOME PARTICULATE
125C       CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION)
126C --------------------------------------------------------------
127C
128            dispot = trn(ji,jj,jk,jpcal)*
129     &        excess/(dispo0+excess)
130#    if defined key_off_degrad
131     &        *facvol(ji,jj,jk)
132#    endif
133C
134C* 2.4  CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3],
135C       AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION
136C -----------------------------------------------------------
137C
138            remco3=dispot/rmoss
139            co3(ji,jj,jk) = co3(ji,jj,jk)+
140     &        remco3*rfact
141            tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal)+
142     &        2.*remco3
143            tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal)-
144     &        remco3
145            tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic)+
146     &        remco3
147C
148          ENDDO
149        ENDDO
150      END DO
151
152#    if defined key_trc_dia3d
153         trc3d(:,:,:,1) = rhop(:,:,:)
154         trc3d(:,:,:,2) = co3(:,:,:)
155         trc3d(:,:,:,3) = aksp(:,:,:)/calcon
156#    endif
157
158C
159#endif
160      RETURN
161      END
Note: See TracBrowser for help on using the repository browser.