49subroutine sum_field_2d_ (name, field_data2d, is, js)
51character(len=*),
intent(in) :: name
52real(FMS_DI_KIND_),
intent(in) :: field_data2d(:,:)
53integer,
optional,
intent(in) :: is
54integer,
optional,
intent(in) :: js
73 if (.not. module_is_initialized )
then
74 call error_mesg (
'diag_integral_mod', &
75 'module has not been initialized', fatal )
81 field = get_field_index(name)
83 call error_mesg (
'diag_integral_mod', &
84 'field does not exist', fatal)
91 i1 = 1;
if (
present(is)) i1 = is
92 j1 = 1;
if (
present(js)) j1 = js
93 i2 = i1 +
size(field_data2d,1) - 1
94 j2 = j1 +
size(field_data2d,2) - 1
101 field_count(field) = field_count(field) + &
102 size(field_data2d,1)*
size(field_data2d,2)
103 field_sum(field) = field_sum(field) + &
104 sum(real(field_data2d,r8_kind) * area(i1:i2,j1:j2))
108end subroutine sum_field_2d_
135subroutine sum_field_3d_ (name, field_data3d, is, js)
137character(len=*),
intent(in) :: name
138real(FMS_DI_KIND_),
intent(in) :: field_data3d(:,:,:)
139integer,
optional,
intent(in) :: is
140integer,
optional,
intent(in) :: js
149 real(r8_kind),
dimension (size(field_data3d,1), &
size(field_data3d,2)) :: data2
165 if (.not. module_is_initialized )
then
166 call error_mesg (
'diag_integral_mod', &
167 'module has not been initialized', fatal )
173 field = get_field_index(name)
175 call error_mesg (
'diag_integral_mod', &
176 'field does not exist', fatal)
183 i1 = 1;
if (
present(is)) i1 = is
184 j1 = 1;
if (
present(js)) j1 = js
185 i2 = i1 +
size(field_data3d,1) - 1
186 j2 = j1 +
size(field_data3d,2) - 1
194 field_count(field) = field_count(field) + &
195 size(field_data3d,1)*
size(field_data3d,2)
196 data2 = sum(real(field_data3d,r8_kind),3)
197 field_sum(field) = field_sum(field) + &
198 sum(data2 * area(i1:i2,j1:j2))
202end subroutine sum_field_3d_
230subroutine sum_field_wght_3d_ (name, field_data3d, wt, is, js)
232character(len=*),
intent(in) :: name
233real(FMS_DI_KIND_),
intent(in) :: field_data3d(:,:,:)
234real(FMS_DI_KIND_),
intent(in) :: wt(:,:,:)
235integer,
optional,
intent(in) :: is
236integer,
optional,
intent(in) :: js
245 real(r8_kind),
dimension (size(field_data3d,1),size(field_data3d,2)) :: data2
259 if (.not. module_is_initialized )
then
260 call error_mesg (
'diag_integral_mod', &
261 'module has not been initialized', fatal )
267 field = get_field_index(name)
269 call error_mesg (
'diag_integral_mod', &
270 'field does not exist', fatal)
277 i1 = 1;
if (
present(is)) i1 = is
278 j1 = 1;
if (
present(js)) j1 = js
279 i2 = i1 +
size(field_data3d,1) - 1
280 j2 = j1 +
size(field_data3d,2) - 1
289 field_count(field) = field_count(field) + &
290 size(field_data3d,1)*
size(field_data3d,2)
291 data2 = vert_diag_integral(real(field_data3d,r8_kind), real(wt,r8_kind))
292 field_sum(field) = field_sum(field) + &
293 sum(data2 * area(i1:i2,j1:j2))
297end subroutine sum_field_wght_3d_
325subroutine sum_field_2d_hemi_ (name, field_data2d, is, ie, js, je)
327character(len=*),
intent(in) :: name
328real(FMS_DI_KIND_),
intent(in) :: field_data2d(:,:)
329integer,
intent(in) :: is
331integer,
intent(in) :: js
333integer,
intent(in) :: ie
335integer,
intent(in) :: je
357 if (.not. module_is_initialized )
then
358 call error_mesg (
'diag_integral_mod', &
359 'module has not been initialized', fatal )
365 field = get_field_index(name)
367 call error_mesg (
'diag_integral_mod', &
368 'field does not exist', fatal)
376 i1 = mod( (is-1),
size(field_data2d,1) ) + 1
377 i2 = i1 +
size(field_data2d,1) - 1
383 j1 = mod( (js-1) ,
size(field_data2d,2) ) + 1
392 field_count(field) = field_count(field) + 2* (i2-i1+1)*(j2-j1+1)
393 field_sum(field) = field_sum(field) + &
394 sum( real(field_data2d(i1:i2,j1:j2),r8_kind) * area(is:ie,js:je))
398end subroutine sum_field_2d_hemi_