/[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.10 - (show annotations) (download)
Mon Apr 12 20:07:57 2010 UTC (14 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint63a, checkpoint63b, checkpoint63c, checkpoint63, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x
Changes since 1.9: +2 -2 lines
add position indices & iter to argument list of 3 S/R CALC_PCO2*
 (normally not used but useful for debugging)

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

  ViewVC Help
Powered by ViewVC 1.1.22