/[MITgcm]/MITgcm/pkg/bling/bling_carbonate_init.F
ViewVC logotype

Annotation of /MITgcm/pkg/bling/bling_carbonate_init.F

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


Revision 1.2 - (hide annotations) (download)
Mon Sep 12 20:00:28 2016 UTC (7 years, 8 months ago) by mmazloff
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.1: +3 -3 lines
Cleaned version of the code.

1 mmazloff 1.2 C $Header: /u/gcmpack/MITgcm/pkg/bling/bling_carbonate_init.F,v 1.1 2016/05/19 20:29:26 mmazloff Exp $
2 mmazloff 1.1 C $Name: $
3    
4     #include "BLING_OPTIONS.h"
5     #include "PTRACERS_OPTIONS.h"
6    
7     CBOP
8     subroutine BLING_CARBONATE_INIT( myThid )
9    
10     C ==========================================================
11 mmazloff 1.2 C | subroutine bling_carbonate_init
12 mmazloff 1.1 C | o Calculate first guess of pH
13 mmazloff 1.2 C | Adapted from pkg/dic/dic_surfforcing_init.F
14 mmazloff 1.1 C ==========================================================
15    
16     implicit none
17    
18     C === Global variables ===
19     #include "SIZE.h"
20     #include "DYNVARS.h"
21     #include "EEPARAMS.h"
22     #include "PARAMS.h"
23     #include "GRID.h"
24     #include "FFIELDS.h"
25     #include "BLING_VARS.h"
26     #include "PTRACERS_SIZE.h"
27     #include "PTRACERS_PARAMS.h"
28     #include "PTRACERS_FIELDS.h"
29     #include "BLING_LOAD.h"
30    
31     C === Routine arguments ===
32     C myThid :: thread Id. number
33     INTEGER myThid
34    
35     #ifdef ALLOW_BLING
36     C === Local variables ===
37     INTEGER i,j, k, it
38     INTEGER intimeP, intime0, intime1
39     _RL aWght, bWght, co3dummy
40     C Number of iterations for pCO2 solvers...
41     C Solubility relation coefficients
42     C local variables for carbon chem
43     INTEGER iMin,iMax,jMin,jMax, bi, bj
44     _RL alktmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
45     _RL phostmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
46     _RL sitmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
47     _RL thetatmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
48     _RL salttmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
49     _RL dictmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
50     INTEGER iprt,jprt
51     LOGICAL pH_isLoaded
52     CEOP
53    
54     IF ( periodicExternalForcing ) THEN
55    
56     c read in silica field
57     CALL LEF_ZERO( silica0,myThid )
58     CALL LEF_ZERO( silica1,myThid )
59    
60     C-- Now calculate whether it is time to update the forcing arrays
61     CALL GET_PERIODIC_INTERVAL(
62     O intimeP, intime0, intime1, bWght, aWght,
63     I externForcingCycle, externForcingPeriod,
64     I deltaTclock, startTime, myThid )
65    
66     _BARRIER
67     _BEGIN_MASTER(myThid)
68     WRITE(standardMessageUnit,'(A,I10,A,2(2I5,A))')
69     & ' BLING_SURFFORCING_INIT, it=', nIter0,
70     & ' : Reading new data, i0,i1=', intime0, intime1
71     _END_MASTER(myThid)
72    
73     IF ( BLING_silicaFile .NE. ' ' ) THEN
74     CALL READ_REC_XY_RS( BLING_silicaFile,silica0,intime0,
75     & nIter0,myThid )
76     CALL READ_REC_XY_RS( BLING_silicaFile,silica1,intime1,
77     & nIter0,myThid )
78     ENDIF
79    
80     #ifdef ALLOW_OFFLINE
81     IF ( useOffLine ) THEN
82     CALL OFFLINE_FIELDS_LOAD( startTime, nIter0, myThid )
83     ENDIF
84     #endif
85    
86     _EXCH_XY_RS(silica0, myThid )
87     _EXCH_XY_RS(silica1, myThid )
88    
89     IF ( BLING_silicaFile .NE. ' ' ) THEN
90     DO bj = myByLo(myThid), myByHi(myThid)
91     DO bi = myBxLo(myThid), myBxHi(myThid)
92     DO j=1-Oly,sNy+Oly
93     DO i=1-Olx,sNx+Olx
94     SILICA(i,j,bi,bj)= bWght*silica0(i,j,bi,bj)
95     & + aWght*silica1(i,j,bi,bj)
96     ENDDO
97     ENDDO
98     ENDDO
99     ENDDO
100     ENDIF
101    
102     c end periodicExternalForcing
103     ENDIF
104    
105     C =================================================================
106    
107     jMin=1
108     jMax=sNy
109     iMin=1
110     iMax=sNx
111    
112     DO k=1,Nr
113     DO bj=myByLo(myThid),myByHi(myThid)
114     DO bi=myBxLo(myThid),myBxHi(myThid)
115     DO j=1-OLy,sNy+OLy
116     DO i=1-Olx,sNx+OLx
117     pH(i,j,k,bi,bj) = 8. _d 0
118     ENDDO
119     ENDDO
120     ENDDO
121     ENDDO
122     ENDDO
123    
124     DO bj=myByLo(myThid),myByHi(myThid)
125     DO bi=myBxLo(myThid),myBxHi(myThid)
126     DO j=1-OLy,sNy+OLy
127     DO i=1-OLx,sNx+OLx
128     ak0(i,j,bi,bj)=0. _d 0
129     ak1(i,j,bi,bj)=0. _d 0
130     ak2(i,j,bi,bj)=0. _d 0
131     akw(i,j,bi,bj)=0. _d 0
132     akb(i,j,bi,bj)=0. _d 0
133     akf(i,j,bi,bj)=0. _d 0
134     ak1p(i,j,bi,bj)=0. _d 0
135     ak2p(i,j,bi,bj)=0. _d 0
136     ak3p(i,j,bi,bj)=0. _d 0
137     aksi(i,j,bi,bj)=0. _d 0
138     fugf(i,j,bi,bj)=0. _d 0
139     ff(i,j,bi,bj)=0. _d 0
140     ft(i,j,bi,bj)=0. _d 0
141     st(i,j,bi,bj)=0. _d 0
142     bt(i,j,bi,bj)=0. _d 0
143     ENDDO
144     ENDDO
145     ENDDO
146     ENDDO
147    
148     pH_isLoaded = .FALSE.
149     IF ( nIter0.GT.PTRACERS_Iter0 .OR.
150     & (nIter0.EQ.PTRACERS_Iter0 .AND. pickupSuff.NE.' ')
151     & ) THEN
152     C Read pH from a pickup file if needed
153     CALL BLING_READ_PICKUP(
154     O pH_isLoaded,
155     I nIter0, myThid )
156     ENDIF
157    
158     DO bj=myByLo(myThid),myByHi(myThid)
159     DO bi=myBxLo(myThid),myBxHi(myThid)
160    
161     C determine inorganic carbon chem coefficients
162    
163     IF ( .NOT.pH_isLoaded ) THEN
164     C set guess of pH for first step here
165    
166     DO k=1,Nr
167     DO j=jMin,jMax
168     DO i=iMin,iMax
169     alktmp(i,j) = PTRACER(i,j,k,bi,bj,2)
170     & * maskC(i,j,k,bi,bj)
171     phostmp(i,j)= PTRACER(i,j,k,bi,bj,5)
172     & * maskC(i,j,k,bi,bj)
173     C FOR NON-INTERACTIVE Si
174     IF ( k.eq.1 ) THEN
175     sitmp(i,j) = Silica(i,j,bi,bj) * maskC(i,j,k,bi,bj)
176     ELSE
177     sitmp(i,j) = 0.03 * maskC(i,j,k,bi,bj)
178     ENDIF
179     dictmp(i,j) = PTRACER(i,j,k,bi,bj,1)
180     & * maskC(i,j,k,bi,bj)
181     thetatmp(i,j) = theta(i,j,k,bi,bj)
182     salttmp(i,j) = salt(i,j,k,bi,bj)
183     ENDDO
184     ENDDO
185    
186     CALL CARBON_COEFFS_PRESSURE_DEP(
187     I thetatmp,salttmp,
188     I bi,bj,iMin,iMax,jMin,jMax,k,myThid)
189    
190     C====================================================================
191    
192     c first approximation
193    
194     DO j=jMin,jMax
195     DO i=iMin,iMax
196     IF ( maskC(i,j,k,bi,bj) .NE. 0. _d 0) THEN
197     DO it=1,10
198     CALL CALC_PCO2_APPROX(
199     I thetatmp(i,j),salttmp(i,j),
200     I dictmp(i,j), phostmp(i,j),
201     I sitmp(i,j),alktmp(i,j),
202     I ak1(i,j,bi,bj),ak2(i,j,bi,bj),
203     I ak1p(i,j,bi,bj),ak2p(i,j,bi,bj),ak3p(i,j,bi,bj),
204     I aks(i,j,bi,bj),akb(i,j,bi,bj),akw(i,j,bi,bj),
205     I aksi(i,j,bi,bj),akf(i,j,bi,bj),
206     I ak0(i,j,bi,bj), fugf(i,j,bi,bj),
207     I ff(i,j,bi,bj),
208     I bt(i,j,bi,bj),st(i,j,bi,bj),ft(i,j,bi,bj),
209     U pH(i,j,k,bi,bj),pCO2(i,j,bi,bj),co3dummy,
210     I i,j,k,bi,bj, it , myThid )
211     ENDDO
212     ENDIF
213     ENDDO
214     ENDDO
215     ENDDO
216     ENDIF
217    
218     C end bi,bj loops
219     ENDDO
220     ENDDO
221    
222     #endif /* ALLOW_BLING */
223    
224     RETURN
225     END

  ViewVC Help
Powered by ViewVC 1.1.22