/[MITgcm]/MITgcm/pkg/gchem/gchem_forcing_sep.F
ViewVC logotype

Contents of /MITgcm/pkg/gchem/gchem_forcing_sep.F

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


Revision 1.27 - (show annotations) (download)
Wed Oct 14 14:18:58 2009 UTC (14 years, 7 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint62, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62e, checkpoint62d, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.26: +5 -1 lines
Add call to dic_cost

1 C $Header: /u/gcmpack/MITgcm/pkg/gchem/gchem_forcing_sep.F,v 1.26 2009/06/30 16:43:00 jahn Exp $
2 C $Name: $
3
4 #include "GCHEM_OPTIONS.h"
5 #ifdef ALLOW_DIC
6 #include "DIC_OPTIONS.h"
7 #endif
8 #ifdef ALLOW_DARWIN
9 #include "DARWIN_OPTIONS.h"
10 #endif
11
12
13 CBOP
14 C !ROUTINE: GCHEM_FORCING_SEP
15 C !INTERFACE: ==========================================================
16 SUBROUTINE GCHEM_FORCING_SEP(myTime,myIter, myThid )
17
18 C !DESCRIPTION:
19 C calls subroutine that will update passive tracers values
20 C with a separate timestep. Since GCHEM_FORCING_SEP is now
21 C called before DO_FIELDS_BLOCKING_EXCHANGES, the passive
22 C tracer values in the halo regions are not up to date and
23 C must not be used.
24
25 C !USES: ===============================================================
26 IMPLICIT NONE
27 #include "SIZE.h"
28 #include "GRID.h"
29 #include "DYNVARS.h"
30 #include "EEPARAMS.h"
31 #include "PARAMS.h"
32 #include "PTRACERS_SIZE.h"
33 #include "PTRACERS_FIELDS.h"
34 #include "GCHEM.h"
35 #ifdef ALLOW_DIC
36 #include "DIC_VARS.h"
37 #endif /* ALLOW_DIC */
38
39 C !INPUT PARAMETERS: ===================================================
40 C myThid :: thread number
41 INTEGER myThid, myIter
42 _RL myTime
43
44 c!LOCAL VARIABLES: ====================================================
45 C i,j :: loop indices
46 C bi,bj :: tile indices
47 C k :: vertical level
48 INTEGER bi,bj,imin,imax,jmin,jmax
49 INTEGER i,j
50 INTEGER niter
51 CEOP
52
53 #ifdef ALLOW_GCHEM
54 #ifdef GCHEM_SEPARATE_FORCING
55
56 ccccccccccccccccccccccccc
57 c global calculations c
58 ccccccccccccccccccccccccc
59 #ifdef ALLOW_DIC
60 #ifdef ALLOW_OLD_VIRTUALFLUX
61 c find global surface averages
62 gsm_s = 0. _d 0
63 gsm_dic = 0. _d 0
64 gsm_alk = 0. _d 0
65 call tracer_meanarea(salt, 1,gsm_s,myThid)
66 call tracer_meanarea(
67 & ptracer(1-Olx,1-Oly,1,1,1,1), 1, gsm_dic, myThid )
68 print*,'mean surface dic', gsm_dic,gsm_s
69 call tracer_meanarea(
70 & ptracer(1-Olx,1-Oly,1,1,1,2), 1, gsm_alk, myThid )
71 #endif /* ALLOW_OLD_VIRTUALFLUX */
72 #endif
73 ccccccccccccccccccccccccccccccccccccccccccc
74
75
76 ccccccccccccccccccccccccc
77 c chemical forcing c
78 ccccccccccccccccccccccccc
79 C$taf loop = parallel
80 DO bj=myByLo(myThid),myByHi(myThid)
81 C$taf loop = parallel
82 DO bi=myBxLo(myThid),myBxHi(myThid)
83
84 jMin=1
85 jMax=sNy
86 iMin=1
87 iMax=sNx
88 c
89 ccccccccccccccccccccccccccc DIC cccccccccccccccccccccccccccccccc
90
91 #ifdef ALLOW_DIC
92 #ifdef ALLOW_FE
93 call DIC_BIOTIC_Forcing( Ptracer(1-Olx,1-Oly,1,bi,bj,1),
94 & Ptracer(1-Olx,1-Oly,1,bi,bj,2),
95 & Ptracer(1-Olx,1-Oly,1,bi,bj,3),
96 & Ptracer(1-Olx,1-Oly,1,bi,bj,4),
97 & Ptracer(1-Olx,1-Oly,1,bi,bj,5),
98 & Ptracer(1-Olx,1-Oly,1,bi,bj,6),
99 & bi,bj,imin,imax,jmin,jmax,
100 & myIter,myTime,myThid)
101 #else
102 #ifdef ALLOW_O2
103 call DIC_BIOTIC_Forcing( Ptracer(1-Olx,1-Oly,1,bi,bj,1),
104 & Ptracer(1-Olx,1-Oly,1,bi,bj,2),
105 & Ptracer(1-Olx,1-Oly,1,bi,bj,3),
106 & Ptracer(1-Olx,1-Oly,1,bi,bj,4),
107 & Ptracer(1-Olx,1-Oly,1,bi,bj,5),
108 & bi,bj,imin,imax,jmin,jmax,
109 & myIter,myTime,myThid)
110 #else
111 call DIC_BIOTIC_Forcing( Ptracer(1-Olx,1-Oly,1,bi,bj,1),
112 & Ptracer(1-Olx,1-Oly,1,bi,bj,2),
113 & Ptracer(1-Olx,1-Oly,1,bi,bj,3),
114 & Ptracer(1-Olx,1-Oly,1,bi,bj,4),
115 & bi,bj,imin,imax,jmin,jmax,
116 & myIter,myTime,myThid)
117 #endif
118 #endif
119
120 #endif
121 cccccccccccccccccccccccccc END DIC cccccccccccccccccccccccccccccccccc
122 #ifdef ALLOW_DARWIN
123 IF ( useDARWIN ) THEN
124 #ifdef NUT_SUPPLY
125 c articficial supply of nutrients
126 call DARWIN_Nut_Supply( Ptracer(1-Olx,1-Oly,1,bi,bj,1),
127 & bi,bj,imin,imax,jmin,jmax,
128 & myIter,myTime,myThid)
129 call DARWIN_Nut_Supply( Ptracer(1-Olx,1-Oly,1,bi,bj,2),
130 & bi,bj,imin,imax,jmin,jmax,
131 & myIter,myTime,myThid)
132 call DARWIN_Nut_Supply( Ptracer(1-Olx,1-Oly,1,bi,bj,3),
133 & bi,bj,imin,imax,jmin,jmax,
134 & myIter,myTime,myThid)
135 call DARWIN_Nut_Supply( Ptracer(1-Olx,1-Oly,1,bi,bj,4),
136 & bi,bj,imin,imax,jmin,jmax,
137 & myIter,myTime,myThid)
138 #endif
139 ccccccccccccccc
140 call DARWIN_cons(myIter,myTime,myThid)
141 C darwin_forcing operates on bi,bj part only, but needs to get full
142 C array because of last (iPtr) index
143 call DARWIN_Forcing( Ptracer(1-Olx,1-Oly,1,1,1,1),
144 & bi,bj,imin,imax,jmin,jmax,
145 & myIter,myTime,myThid)
146 call DARWIN_cons(myIter,myTime,myThid)
147 #ifdef ALLOW_CARBON
148 CALL DIC_ATMOS( 1, myTime, myIter, myThid )
149 #endif
150 ENDIF
151 #endif
152
153 ENDDO
154 ENDDO
155
156 #ifdef ALLOW_DIC
157 CALL DIC_ATMOS( 1, myTime, myIter, myThid )
158 CALL DIC_STORE_FLUXCO2( myTime, myIter, myThid )
159 #endif
160
161 #ifdef ALLOW_COST
162 CALL DIC_COST( myTime, myIter, myThid )
163 #endif
164
165 #endif /* GCHEM_SEPARATE_FORCING */
166 #endif /* ALLOW_GCHEM */
167
168 RETURN
169 END

  ViewVC Help
Powered by ViewVC 1.1.22