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 branches/dev_001_GM/NEMO/TOP_SRC/PISCES_SMS – NEMO

source: branches/dev_001_GM/NEMO/TOP_SRC/PISCES_SMS/p4zlys.F @ 772

Last change on this file since 772 was 772, checked in by gm, 16 years ago

dev_001_GM - change the name of cpp key to key_top, key_lobster, key_pisces, key_kriest and the corresponding lk_

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