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

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

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


Revision 1.7 - (show 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 C $Header: /u/gcmpack/MITgcm/pkg/dic/calcite_saturation.F,v 1.6 2008/04/03 22:49:53 dfer Exp $
2 C $Name: $
3
4 #include "DIC_OPTIONS.h"
5 #include "GCHEM_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: CAR_FLUX
9
10 C !INTERFACE: ==========================================================
11 SUBROUTINE CALCITE_SATURATION(PTR_DIC, PTR_ALK, PTR_PO4,
12 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 #include "DIC_VARS.h"
26
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 _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 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 DO k=1,Nr
75
76 CALL CARBON_COEFFS_PRESSURE_DEP(
77 I theta,salt,
78 I bi,bj,iMin,iMax,jMin,jMax,
79 I k)
80
81
82 DO j=jmin,jmax
83 DO i=imin,imax
84
85 if ( hFacC(i,j,k,bi,bj) .gt. 0. _d 0 ) then
86
87 calcium = 1.028 _d -2*salt(i,j,k,bi,bj)/35. _d 0
88
89 c 30 micromol = 0.03 mol m-3
90 silicaTEST = 0.03 _d 0
91 po4local = PTR_PO4(i,j,k)
92 diclocal = PTR_DIC(i,j,k)
93 alklocal = PTR_ALK(i,j,k)
94 pHlocal = 7.9 _d 0
95
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 omegaC(i,j,k,bi,bj) = 0. _d 0
157 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