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

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

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


Revision 1.3 - (show annotations) (download)
Thu Nov 6 22:05:08 2003 UTC (20 years, 6 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint53f_post, checkpoint54a_pre, checkpoint55c_post, checkpoint53b_pre, checkpoint55e_post, checkpoint52l_pre, checkpoint52e_pre, hrcube4, checkpoint52n_post, checkpoint52j_post, checkpoint52e_post, checkpoint52d_pre, checkpoint53c_post, checkpoint53d_post, checkpoint55d_pre, checkpoint55j_post, checkpoint56b_post, checkpoint52j_pre, checkpoint54a_post, branch-netcdf, checkpoint52l_post, checkpoint55h_post, checkpoint52k_post, checkpoint52b_pre, checkpoint54b_post, checkpoint54d_post, checkpoint54e_post, checkpoint55b_post, checkpoint52m_post, checkpoint55, checkpoint53a_post, checkpoint55a_post, checkpoint54, checkpoint54f_post, checkpoint53b_post, checkpoint55g_post, checkpoint55f_post, checkpoint55i_post, checkpoint56, checkpoint53, checkpoint52, checkpoint52d_post, checkpoint52a_post, checkpoint52b_post, checkpoint53g_post, checkpoint52f_post, checkpoint52c_post, ecco_c52_e35, hrcube5, checkpoint52a_pre, checkpoint52i_post, checkpoint53d_pre, checkpoint54c_post, checkpoint52i_pre, checkpoint51u_post, checkpoint52h_pre, checkpoint52f_pre, hrcube_1, hrcube_2, hrcube_3, checkpoint56a_post, checkpoint55d_post
Branch point for: netcdf-sm0
Changes since 1.2: +0 -5 lines
o merging from ecco-branch
o cleaned some cross-dependencies and updated CPP options

1
2 #include "CTRL_CPPOPTIONS.h"
3 #ifdef ALLOW_OBCS
4 # include "OBCS_OPTIONS.h"
5 #endif
6
7 subroutine ctrl_obcsbal(
8 I mytime,
9 I myiter,
10 I mythid
11 & )
12
13 c ==================================================================
14 c SUBROUTINE ctrl_obcsbal
15 c ==================================================================
16 c
17 c o volumetrically balance the control vector contribution.
18 c o Assume the calendar is identical
19 c for all open boundaries. Need to save the barotropic adjustment
20 c velocity so it can be used in all ctrl_getobcs files.
21 c o WARNING: eastern boundary (not defined) filenames have been a
22 c problem in the past.
23 c
24 c - started G. Gebbie, MIT-WHOI, 15-June-2002
25 c ==================================================================
26 c SUBROUTINE ctrl_obcsvol
27 c ==================================================================
28
29 implicit none
30
31 c == global variables ==
32
33 #include "EEPARAMS.h"
34 #include "SIZE.h"
35 #include "PARAMS.h"
36 #include "GRID.h"
37 #include "DYNVARS.h"
38 #ifdef ALLOW_OBCS
39 # include "OBCS.h"
40 #endif
41
42 #include "ctrl.h"
43 #include "ctrl_dummy.h"
44
45 c == routine arguments ==
46
47 integer myiter
48 _RL mytime
49 integer mythid
50
51 c == local variables ==
52
53 integer bi,bj
54 integer i,j,k
55 integer itlo,ithi
56 integer jtlo,jthi
57 integer jmin,jmax
58 integer imin,imax
59 integer irec
60 integer il
61 integer iobcs
62 integer ip1
63 integer jp1
64 integer nrec
65 integer ilfld
66 integer igg
67
68 _RL volflux
69 _RL area
70 _RL tmpflux
71 _RL tmparea
72 _RL dummy
73 _RL gg
74 _RL tmpx
75 _RL tmpy
76 _RL obcsnfac
77 character*(80) fnamefldn
78 character*(80) fnameflds
79 character*(80) fnamefldw
80 character*(80) fnameflde
81
82 logical doglobalread
83 logical ladinit
84 logical obcsnfirst, obcsnchanged
85 integer obcsncount0, obcsncount1
86
87 #ifdef ECCO_VERBOSE
88 character*(MAX_LEN_MBUF) msgbuf
89 #endif
90
91 c == external functions ==
92
93 integer ilnblnk
94 external ilnblnk
95
96 c == end of interface ==
97
98 jtlo = mybylo(mythid)
99 jthi = mybyhi(mythid)
100 itlo = mybxlo(mythid)
101 ithi = mybxhi(mythid)
102 jmin = 1
103 jmax = sny
104 imin = 1
105 imax = snx
106
107 c-- Read tiled data.
108 doglobalread = .false.
109 ladinit = .false.
110
111 cgg Assume the number of records is the same for
112 cgg all boundaries. Needs to be improved someday.
113
114 #if (defined (ALLOW_OBCS_CONTROL) || \
115 defined (ALLOW_OBCS_COST_CONTRIBUTION))
116
117 tmpflux= 0. d 0
118 tmparea= 0. d 0
119 area= 0. d 0
120 volflux = 0. d 0
121
122 #ifdef ECCO_VERBOSE
123 _BEGIN_MASTER( mythid )
124 write(msgbuf,'(a)') ' '
125 call print_message( msgbuf, standardmessageunit,
126 & SQUEEZE_RIGHT , mythid)
127 write(msgbuf,'(a)') ' '
128 call print_message( msgbuf, standardmessageunit,
129 & SQUEEZE_RIGHT , mythid)
130 write(msgbuf,'(a,i9.8)')
131 & ' ctrl_obcsvol: number of records to process: ',nrec
132 call print_message( msgbuf, standardmessageunit,
133 & SQUEEZE_RIGHT , mythid)
134 write(msgbuf,'(a)') ' '
135 call print_message( msgbuf, standardmessageunit,
136 & SQUEEZE_RIGHT , mythid)
137 _END_MASTER( mythid )
138 #endif
139
140 c-- Get the counters, flags, and the interpolation factor.
141 call ctrl_GetRec( 'xx_obcsn',
142 O obcsnfac, obcsnfirst, obcsnchanged,
143 O obcsncount0,obcsncount1,
144 I mytime, myiter, mythid )
145
146 c-- Loop over records. For north boundary, we only need V velocity.
147
148 if ( obcsnfirst ) then
149
150 shiftvel(1) = 0. d0
151 shiftvel(2) = 0. d0
152
153 call ctrl_volflux( obcsncount0, area, volflux, mythid)
154
155 c-- Do the global summation.
156 _GLOBAL_SUM_R8( volflux, mythid )
157 _GLOBAL_SUM_R8( area,mythid )
158
159 shiftvel(2) = volflux / area
160 print*,'volflux,area',volflux,area
161 endif
162 cgg End of the obcsnfirst loop.
163
164 if ( ( obcsnfirst) .or. (obcsnchanged)) then
165
166 cgg Swap the value.
167 shiftvel(1) = shiftvel(2)
168
169 volflux = 0. d0
170 area= 0. d0
171
172 call ctrl_volflux( obcsncount1, area, volflux, mythid)
173
174 c-- Do the global summation.
175 _GLOBAL_SUM_R8( volflux, mythid )
176 _GLOBAL_SUM_R8( area,mythid )
177
178 shiftvel(2) = volflux /area
179 print*,'volflux,area',volflux,area
180
181 endif
182 cgg End of the obcsnfirst, obcsnchanged loop.
183
184 #endif
185
186 return
187 end
188
189
190
191
192
193
194

  ViewVC Help
Powered by ViewVC 1.1.22