/[MITgcm]/MITgcm/pkg/dic/calcite_saturation.F
ViewVC logotype

Annotation of /MITgcm/pkg/dic/calcite_saturation.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.7 - (hide annotations) (download)
Fri Apr 4 21:32:36 2008 UTC (16 years, 1 month ago) by dfer
Branch: MAIN
Changes since 1.6: +2 -3 lines
Merging DIC_ABIOTIC.h and DIC_BIOTIC.h

1 dfer 1.7 C $Header: /u/gcmpack/MITgcm/pkg/dic/calcite_saturation.F,v 1.6 2008/04/03 22:49:53 dfer Exp $
2 jmc 1.4 C $Name: $
3    
4 stephd 1.1 #include "DIC_OPTIONS.h"
5     #include "GCHEM_OPTIONS.h"
6    
7     CBOP
8     C !ROUTINE: CAR_FLUX
9    
10     C !INTERFACE: ==========================================================
11 stephd 1.3 SUBROUTINE CALCITE_SATURATION(PTR_DIC, PTR_ALK, PTR_PO4,
12 stephd 1.1 I bi,bj,imin,imax,jmin,jmax,
13     I myIter,myTime,myThid)
14    
15     C !DESCRIPTION:
16     C Calculate carbonate fluxes
17    
18     C !USES: ===============================================================
19     IMPLICIT NONE
20     #include "SIZE.h"
21     #include "DYNVARS.h"
22     #include "EEPARAMS.h"
23     #include "PARAMS.h"
24     #include "GRID.h"
25 dfer 1.7 #include "DIC_VARS.h"
26 stephd 1.1
27     C !INPUT PARAMETERS: ===================================================
28     C myThid :: thread number
29     C myIter :: current timestep
30     C myTime :: current time
31     C bioac :: biological productivity
32 stephd 1.3 _RL PTR_DIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
33     _RL PTR_ALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
34     _RL PTR_PO4(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
35    
36 stephd 1.1 INTEGER myIter
37     _RL myTime
38     INTEGER myThid
39     INTEGER imin, imax, jmin, jmax, bi, bj
40    
41     C !OUTPUT PARAMETERS: ===================================================
42    
43     #ifdef ALLOW_PTRACERS
44     #ifdef DIC_BIOTIC
45    
46     C !LOCAL VARIABLES: ====================================================
47     C i,j,k :: loop indices
48     c ko :: loop-within-loop index
49     c depth_u, depth_l :: depths of upper and lower interfaces
50     c flux_u, flux_l :: flux through upper and lower interfaces
51     c zbase :: depth of bottom of current productive layer
52     INTEGER I,J,k
53     _RL carbonate
54     _RL calcium
55     _RL silicaTEST
56     _RL po4local
57     _RL diclocal
58     _RL alklocal
59     _RL pCO2local
60     _RL pHlocal
61     INTEGER CO3ITER
62     INTEGER CO3ITERmax
63     CEOP
64    
65    
66     cmick...................................................
67     write(6,*)'myIter ',myIter,' CALLED CALCITEcd_SATURATION'
68     c write(6,*)'WARNING calcite_sat needs 3d silica & H0 set=7.9'
69     c write(6,*)' - & Fixed first guess of deep pH to 7.9'
70     cmick....................................................
71    
72     c determine carbonate ion concentration through full domain
73     c determine calcite saturation state
74 dfer 1.5 DO k=1,Nr
75 stephd 1.1
76     CALL CARBON_COEFFS_PRESSURE_DEP(
77     I theta,salt,
78     I bi,bj,iMin,iMax,jMin,jMax,
79     I k)
80    
81    
82 stephd 1.2 DO j=jmin,jmax
83     DO i=imin,imax
84 stephd 1.1
85 dfer 1.5 if ( hFacC(i,j,k,bi,bj) .gt. 0. _d 0 ) then
86 stephd 1.1
87 dfer 1.5 calcium = 1.028 _d -2*salt(i,j,k,bi,bj)/35. _d 0
88 stephd 1.1
89     c 30 micromol = 0.03 mol m-3
90 dfer 1.5 silicaTEST = 0.03 _d 0
91 stephd 1.3 po4local = PTR_PO4(i,j,k)
92     diclocal = PTR_DIC(i,j,k)
93     alklocal = PTR_ALK(i,j,k)
94 dfer 1.5 pHlocal = 7.9 _d 0
95 stephd 1.1
96     CMICK - TEMPORARY!!!!!
97     CMICK silica = fixed
98     CMICK silica = fixed
99     C
100     CMICK -DEC 04
101     CMICK- NOW ITERATE pH SOLVER AT DEPTH ONLY
102     CMICK TO ENSURE ACCURATE ESTIMATE OF CO3 AT DEPTH
103     CMICK - NOTE Si STILL USING A UNIFORM DUMMY VALUE
104     CO3itermax = 10
105     CMICK - SO NOW WE ITERATE, UPDATING THE ESTIMATE OF pH and CO3--
106     CMICK - SINCE WE CALL THIS FOR DEEP OCEAN INFREQUENTLY (MONTHLY?)
107     CMIKC - CAN AFFORD TO MAKE SEVERAL ITERATIONS...
108     DO CO3iter = 1, CO3itermax
109     CALL CALC_PCO2_APPROX_CO3(
110     I theta(i,j,k,bi,bj),salt(i,j,k,bi,bj),
111     I diclocal, po4local,
112     I silicaTEST,alklocal,
113     I ak1(i,j,bi,bj),ak2(i,j,bi,bj),
114     I ak1p(i,j,bi,bj),ak2p(i,j,bi,bj),ak3p(i,j,bi,bj),
115     I aks(i,j,bi,bj),akb(i,j,bi,bj),akw(i,j,bi,bj),
116     I aksi(i,j,bi,bj),akf(i,j,bi,bj),ff(i,j,bi,bj),
117     I bt(i,j,bi,bj),st(i,j,bi,bj),ft(i,j,bi,bj),
118     U pHlocal,pCO2local,
119     U carbonate )
120     c........................................................
121     c if(i .eq. 76 .and. j .eq. 36 .and. k .eq. 15) then
122     c write(6,*)'Iteration, pH = ',CO3iter,pHlocal
123     c endif
124     c........................................................
125     END DO
126    
127    
128     omegaC(i,j,k,bi,bj) = calcium * carbonate /
129     & Ksp_TP_Calc(i,j,bi,bj)
130    
131     cmick...................................................
132     c if(omegaC(i,j,k,bi,bj) .eq. 0.) then
133     c if(i .eq. 76 .and. j .eq. 36 .and. k .eq. 15) then
134     c write(6,*)'i,j,k,KS,CO3,pHCa,T,S,hfacc,omega',
135     c & i,j,k,
136     c & Ksp_TP_Calc(i,j,bi,bj),
137     c & carbonate,calcium,pHlocal,
138     c & theta(i,j,k,bi,bj),salt(i,j,k,bi,bj),
139     c & hfacc(i,j,k,bi,bj),omegaC(i,j,k,bi,bj)
140     c write(6,*)'Ksp_TP_Calc',
141     c & Ksp_TP_Calc(i,j,bi,bj)
142     c write(6,*)'dic, alk, po4 ',
143     c & diclocal, alklocal,po4local
144     c write(6,*)'k1, k2, k1p, k2p, k3p ',
145     c & ak1(i,j,bi,bj),ak2(i,j,bi,bj),
146     c & ak1p(i,j,bi,bj),ak2p(i,j,bi,bj),ak3p(i,j,bi,bj)
147     c write(6,*)'ks, kb, kw, ksi ',
148     c & aks(i,j,bi,bj),akb(i,j,bi,bj),akw(i,j,bi,bj),
149     c & aksi(i,j,bi,bj)
150     c write(6,*)'akf, ff, bt, st, ft ',
151     c & akf(i,j,bi,bj),ff(i,j,bi,bj),
152     c & bt(i,j,bi,bj),st(i,j,bi,bj),ft(i,j,bi,bj)
153     c end if
154     cmick....................................................
155     else
156 dfer 1.5 omegaC(i,j,k,bi,bj) = 0. _d 0
157 stephd 1.1 endif
158    
159     ENDDO
160     ENDDO
161    
162     ENDDO
163     c
164     #endif
165     #endif
166     RETURN
167     END

  ViewVC Help
Powered by ViewVC 1.1.22