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

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

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


Revision 1.1 - (hide annotations) (download)
Fri May 23 17:33:42 2014 UTC (11 years, 2 months ago) by mmazloff
Branch: MAIN
Adding package BLING

1 mmazloff 1.1 C $Header: $
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)/ 16. _d 0
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