/[MITgcm]/MITgcm/pkg/ctrl/ctrl_map_forcing.F
ViewVC logotype

Contents of /MITgcm/pkg/ctrl/ctrl_map_forcing.F

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


Revision 1.15 - (show annotations) (download)
Tue Jul 31 16:05:57 2012 UTC (11 years, 10 months ago) by heimbach
Branch: MAIN
Changes since 1.14: +3 -1 lines
Attempt at adding CTRL_SIZE.h

1 C $Header: /u/gcmpack/MITgcm/pkg/ctrl/ctrl_map_forcing.F,v 1.14 2009/08/07 04:16:19 heimbach Exp $
2 C $Name: $
3
4 #include "CTRL_CPPOPTIONS.h"
5
6 CBOP
7 C !ROUTINE: ctrl_map_ini
8 C !INTERFACE:
9 SUBROUTINE CTRL_MAP_FORCING(myThid)
10
11 C !DESCRIPTION: \bv
12 c *=================================================================
13 c | SUBROUTINE CTRL_MAP_FORCING
14 c | Add the surface flux anomalies of the control vector
15 c | to the model flux fields and update the tile halos.
16 c | The control vector is defined in the header file "ctrl.h".
17 c *=================================================================
18 C \ev
19
20 C !USES:
21 IMPLICIT NONE
22
23 C == Global variables ===
24 #include "SIZE.h"
25 #include "EEPARAMS.h"
26 #include "PARAMS.h"
27 #include "FFIELDS.h"
28 #include "DYNVARS.h"
29 #include "GRID.h"
30 #include "CTRL_SIZE.h"
31 #include "ctrl.h"
32 #include "CTRL_GENARR.h"
33 #include "ctrl_dummy.h"
34 #include "optim.h"
35 #ifdef ALLOW_AUTODIFF
36 #include "AUTODIFF_MYFIELDS.h"
37 #endif
38
39 C !INPUT/OUTPUT PARAMETERS:
40 C == Routine arguments ==
41 C myThid - Thread number for this instance of the routine.
42 INTEGER myThid
43
44 C !LOCAL VARIABLES:
45 C == Local variables ==
46 integer bi,bj
47 integer i,j,k
48 integer itlo,ithi
49 integer jtlo,jthi
50 integer jmin,jmax
51 integer imin,imax
52 integer il
53
54 logical equal
55 logical doglobalread
56 logical ladinit
57
58 character*( 80) fnametauu
59 character*( 80) fnametauv
60 character*( 80) fnamesflux
61 character*( 80) fnamehflux
62 character*( 80) fnamesss
63 character*( 80) fnamesst
64 cHFLUXM_CONTROL
65 character*( 80) fnamehfluxm
66 cHFLUXM_CONTROL
67
68 c == external ==
69 integer ilnblnk
70 external ilnblnk
71
72 c == end of interface ==
73 CEOP
74
75 jtlo = mybylo(mythid)
76 jthi = mybyhi(mythid)
77 itlo = mybxlo(mythid)
78 ithi = mybxhi(mythid)
79 jmin = 1
80 jmax = sny
81 imin = 1
82 imax = snx
83
84 doglobalread = .false.
85 ladinit = .false.
86
87 #ifdef ALLOW_TAUU0_CONTROL
88 c-- tauu0.
89 il=ilnblnk( xx_tauu_file )
90 write(fnametauu(1:80),'(2a,i10.10)')
91 & xx_tauu_file(1:il),'.',optimcycle
92 call active_read_xy ( fnametauu, tmpfld2d, 1,
93 & doglobalread, ladinit, optimcycle,
94 & mythid, xx_tauu_dummy )
95 do bj = jtlo,jthi
96 do bi = itlo,ithi
97 do j = jmin,jmax
98 do i = imin,imax
99 # ifdef ALLOW_AUTODIFF_OPENAD
100 fu(i,j,bi,bj) = fu(i,j,bi,bj) +
101 & xx_tauu0(i,j,bi,bj) +
102 & tmpfld2d(i,j,bi,bj)
103 #else
104 fu(i,j,bi,bj) = fu(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
105 #endif
106 enddo
107 enddo
108 enddo
109 enddo
110 #endif
111
112 #ifdef ALLOW_TAUV0_CONTROL
113 c-- tauv0.
114 il=ilnblnk( xx_tauv_file )
115 write(fnametauv(1:80),'(2a,i10.10)')
116 & xx_tauv_file(1:il),'.',optimcycle
117 call active_read_xy ( fnametauv, tmpfld2d, 1,
118 & doglobalread, ladinit, optimcycle,
119 & mythid, xx_tauv_dummy )
120 do bj = jtlo,jthi
121 do bi = itlo,ithi
122 do j = jmin,jmax
123 do i = imin,imax
124 # ifdef ALLOW_AUTODIFF_OPENAD
125 fv(i,j,bi,bj) = fv(i,j,bi,bj) +
126 & xx_tauv0(i,j,bi,bj) +
127 & tmpfld2d(i,j,bi,bj)
128 #else
129 fv(i,j,bi,bj) = fv(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
130 #endif
131 enddo
132 enddo
133 enddo
134 enddo
135 #endif
136
137 #ifdef ALLOW_SFLUX0_CONTROL
138 c-- sflux0.
139 il=ilnblnk( xx_sflux_file )
140 write(fnamesflux(1:80),'(2a,i10.10)')
141 & xx_sflux_file(1:il),'.',optimcycle
142 call active_read_xy ( fnamesflux, tmpfld2d, 1,
143 & doglobalread, ladinit, optimcycle,
144 & mythid, xx_sflux_dummy )
145 do bj = jtlo,jthi
146 do bi = itlo,ithi
147 do j = jmin,jmax
148 do i = imin,imax
149 # ifdef ALLOW_AUTODIFF_OPENAD
150 empmr(i,j,bi,bj) = empmr(i,j,bi,bj) +
151 & xx_sflux0(i,j,bi,bj) +
152 & tmpfld2d(i,j,bi,bj)
153 #else
154 empmr(i,j,bi,bj) = empmr(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
155 #endif
156 enddo
157 enddo
158 enddo
159 enddo
160 #endif
161
162 #ifdef ALLOW_HFLUX0_CONTROL
163 c-- hflux0.
164 il=ilnblnk( xx_hflux_file )
165 write(fnamehflux(1:80),'(2a,i10.10)')
166 & xx_hflux_file(1:il),'.',optimcycle
167 call active_read_xy ( fnamehflux, tmpfld2d, 1,
168 & doglobalread, ladinit, optimcycle,
169 & mythid, xx_hflux_dummy )
170 do bj = jtlo,jthi
171 do bi = itlo,ithi
172 do j = jmin,jmax
173 do i = imin,imax
174 # ifdef ALLOW_AUTODIFF_OPENAD
175 qnet(i,j,bi,bj) = qnet(i,j,bi,bj) +
176 & xx_hflux0(i,j,bi,bj) +
177 & tmpfld2d(i,j,bi,bj)
178 #else
179 qnet(i,j,bi,bj) = qnet(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
180 #endif
181 enddo
182 enddo
183 enddo
184 enddo
185 #endif
186
187 #ifdef ALLOW_SSS_CONTROL
188 c-- sss0.
189 il=ilnblnk( xx_sss_file )
190 write(fnamesss(1:80),'(2a,i10.10)')
191 & xx_sss_file(1:il),'.',optimcycle
192 call active_read_xy ( fnamesss, tmpfld2d, 1,
193 & doglobalread, ladinit, optimcycle,
194 & mythid, xx_sss_dummy )
195 do bj = jtlo,jthi
196 do bi = itlo,ithi
197 do j = jmin,jmax
198 do i = imin,imax
199 sss(i,j,bi,bj) = sss(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
200 enddo
201 enddo
202 enddo
203 enddo
204 #endif
205
206 #ifdef ALLOW_SST_CONTROL
207 c-- sst0.
208 il=ilnblnk( xx_sst_file )
209 write(fnamesst(1:80),'(2a,i10.10)')
210 & xx_sst_file(1:il),'.',optimcycle
211 call active_read_xy ( fnamesst, tmpfld2d, 1,
212 & doglobalread, ladinit, optimcycle,
213 & mythid, xx_sst_dummy )
214 do bj = jtlo,jthi
215 do bi = itlo,ithi
216 do j = jmin,jmax
217 do i = imin,imax
218 sst(i,j,bi,bj) = sst(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
219 enddo
220 enddo
221 enddo
222 enddo
223 #endif
224
225 #ifdef ALLOW_HFLUXM_CONTROL
226 c-- hfluxm.
227 il=ilnblnk( xx_hfluxm_file )
228 write(fnamehfluxm(1:80),'(2a,i10.10)')
229 & xx_hfluxm_file(1:il),'.',optimcycle
230 call active_read_xy ( fnamehfluxm, tmpfld2d, 1,
231 & doglobalread, ladinit, optimcycle,
232 & mythid, xx_hfluxm_dummy )
233 do bj = jtlo,jthi
234 do bi = itlo,ithi
235 do j = jmin,jmax
236 do i = imin,imax
237 Qnetm(i,j,bi,bj) = Qnetm(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
238 enddo
239 enddo
240 enddo
241 enddo
242 #endif
243
244 #if (defined (ALLOW_TAUU0_CONTROL) || defined (ALLOW_TAUV0_CONTROL))
245 CALL EXCH_UV_XY_RS(fu,fv,.TRUE.,myThid)
246 #endif
247 #ifdef ALLOW_SFLUX0_CONTROL
248 _EXCH_XY_RS(EmPmR, myThid )
249 #endif
250 #ifdef ALLOW_HFLUX0_CONTROL
251 _EXCH_XY_RS(Qnet, myThid )
252 #endif
253 #ifdef ALLOW_SST_CONTROL
254 _EXCH_XY_RS(SST, myThid )
255 #endif
256 #ifdef ALLOW_SSS_CONTROL
257 _EXCH_XY_RS(SSS, myThid )
258 #endif
259 #ifdef ALLOW_HFLUXM_CONTROL
260 _EXCH_XY_RS(Qnetm, myThid )
261 #endif
262
263 END

  ViewVC Help
Powered by ViewVC 1.1.22