/[MITgcm]/MITgcm_contrib/bling/pkg/bling_carbonate_sys.F
ViewVC logotype

Contents of /MITgcm_contrib/bling/pkg/bling_carbonate_sys.F

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


Revision 1.2 - (show annotations) (download)
Thu Jun 5 21:26:26 2014 UTC (11 years, 1 month ago) by mmazloff
Branch: MAIN
Changes since 1.1: +2 -2 lines
cleaning and updating

1 C $Header: /u/gcmpack/MITgcm_contrib/bling/pkg/bling_carbonate_sys.F,v 1.1 2014/05/23 17:33:42 mmazloff Exp $
2 C $Name: $
3
4 #include "BLING_OPTIONS.h"
5
6 CBOP
7 subroutine BLING_CARBONATE_SYS(
8 I PTR_DIC, PTR_ALK, PTR_NUT,
9 I bi, bj, imin, imax, jmin, jmax,
10 I myIter, myTime, myThid)
11
12 C =================================================================
13 C | subroutine bling_carbonate_sys
14 C | o Calculate carbonate fluxes
15 C | Also update pH (3d field)
16 C =================================================================
17
18 implicit none
19
20 C == GLobal variables ==
21 #include "SIZE.h"
22 #include "DYNVARS.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "GRID.h"
26 #include "BLING_VARS.h"
27
28 C == Routine arguments ==
29 C PTR_DIC :: dissolved inorganic carbon
30 C PTR_ALK :: alkalinity
31 C PTR_NUT :: macro-nutrient
32 C myThid :: thread Id. number
33 C myIter :: current timestep
34 C myTime :: current time
35 INTEGER myThid
36 INTEGER myIter
37 _RL myTime
38 _RL PTR_DIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
39 _RL PTR_ALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
40 _RL PTR_NUT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
41 INTEGER imin, imax, jmin, jmax, bi, bj
42
43
44 #ifdef ALLOW_PTRACERS
45
46 C == Local variables ==
47 C i,j,k :: loop indices
48 C carbonate :: local value of calcium carbonate
49 C calcium :: local value of Ca
50 C diclocal :: local value of DIC
51 C alklocal :: local value of ALK
52 C pCO2local :: local value of pCO2
53 C pHlocal :: local value of pH
54 C CO3ITER :: iterations counter for CO3 ion calculation
55 C CO3ITERmax :: total number of iterations
56 C silicaDEEP :: subsurface silica concentration
57 INTEGER i,j,k
58 _RL carbonate
59 _RL calcium
60 _RL po4local
61 _RL diclocal
62 _RL alklocal
63 _RL pCO2local
64 _RL pHlocal
65 _RL silicaDEEP
66 INTEGER CO3ITER
67 INTEGER CO3ITERmax
68 CEOP
69
70
71 C Assume constant deep silica value
72 C 30 micromol = 0.03 mol m-3
73 C This is temporary until SiBLING is included
74
75 C Since pH is now a 3D field and is solved for at every time step
76 C few iterations are needed
77 CO3itermax = 1
78
79 C determine carbonate ion concentration through full domain
80 C determine calcite saturation state
81
82 C$TAF LOOP = parallel
83 DO k=1,Nr
84
85 C Get coefficients for carbonate calculations
86 CALL CARBON_COEFFS_PRESSURE_DEP(
87 I theta, salt,
88 I bi, bj, imin, imax, jmin, jmax,
89 I k, myThid)
90
91 C--------------------------------------------------
92
93 C$TAF LOOP = parallel
94 DO j=jMin,jMax
95 C$TAF LOOP = parallel
96 DO i=iMin,iMax
97 IF ( hFacC(i,j,k,bi,bj) .gt. 0. _d 0) THEN
98 C$TAF init dic_caco3 = static, 2
99
100
101 C Estimate calcium concentration from salinity
102 calcium = 1.028 _d -2*salt(i,j,k,bi,bj)/35. _d 0
103
104 po4local = PTR_NUT(i,j,k)/NUTfac
105 diclocal = PTR_DIC(i,j,k)
106 alklocal = PTR_ALK(i,j,k)
107 pHlocal = pH(i,j,k,bi,bj)
108 silicaDEEP = 0.03 _d 0
109
110 C Evaluate carbonate (CO3) ions concentration
111 C iteratively
112
113 c DO CO3iter = 1, CO3itermax
114
115 C$TAF STORE pHlocal, diclocal = dic_caco3
116 C$TAF STORE alklocal, po4local, silicaDEEP = dic_caco3
117 C--------------------------------------------------
118
119 CALL CALC_PCO2_APPROX(
120 I theta(i,j,k,bi,bj),salt(i,j,k,bi,bj),
121 I diclocal, po4local,
122 I silicaDEEP,alklocal,
123 I ak1(i,j,bi,bj),ak2(i,j,bi,bj),
124 I ak1p(i,j,bi,bj),ak2p(i,j,bi,bj),ak3p(i,j,bi,bj),
125 I aks(i,j,bi,bj),akb(i,j,bi,bj),akw(i,j,bi,bj),
126 I aksi(i,j,bi,bj),akf(i,j,bi,bj),
127 I ak0(i,j,bi,bj), fugf(i,j,bi,bj), ff(i,j,bi,bj),
128 I bt(i,j,bi,bj),st(i,j,bi,bj),ft(i,j,bi,bj),
129 U pHlocal,pCO2local,carbonate,
130 I i,j,k,bi,bj,myIter,myThid )
131 c ENDDO
132
133 pH(i,j,k,bi,bj) = pHlocal
134
135 C Calculate calcium carbonate (calcite and aragonite)
136 C saturation state
137 omegaC(i,j,k,bi,bj) = calcium * carbonate /
138 & Ksp_TP_Calc(i,j,bi,bj)
139 omegaAr(i,j,k,bi,bj) = calcium * carbonate /
140 & Ksp_TP_Arag(i,j,bi,bj)
141
142 else
143
144 omegaC(i,j,k,bi,bj) = 0. _d 0
145 omegaAr(i,j,k,bi,bj) = 0. _d 0
146
147 endif
148
149 ENDDO
150 ENDDO
151 ENDDO
152
153 #endif /* ALLOW_PTRACERS */
154 RETURN
155 END

  ViewVC Help
Powered by ViewVC 1.1.22