60 inline static void add_blockage_c
83 inline static void add_blockage_f
93 a = 1.0 - (1.0 - a) * (1.0 -
b);
122 <<
"No PDRblock set" <<
nl
135 int cxmin, cxmax, cymin, cymax, czmin, czmax;
136 int cfxmin, cfxmax, cfymin, cfymax, cfzmin, cfzmax;
143 rad_a = rad_b = 0.5*obs.
dia();
158 obs.
x() - rad_a, obs.
x() + rad_a,
160 xoverlap, &cxmin, &cxmax, &cfxmin, &cfxmax
161 ); assert(cxmax >=0);
165 obs.
y() - rad_b, obs.
y() + rad_b,
167 yoverlap, &cymin, &cymax, &cfymin, &cfymax
168 ); assert(cymax >=0);
172 obs.
z(), obs.
z() + obs.
len(),
174 zoverlap, &czmin, &czmax, &cfzmin, &cfzmax
175 ); assert(czmax >=0);
181 obs.
x(), obs.
y(), obs.
dia(),
183 pdrBlock.
grid().x(), cxmin, cfxmax,
184 pdrBlock.
grid().y(), cymin, cfymax,
185 aboverlap, abperim, a_lblock, ac_lblock, c_count, c_drag,
190 for (label ix = cxmin; ix <= cfxmax; ix++)
192 for (label iy = cymin; iy <= cfymax; iy++)
194 for (label iz = czmin; iz <= cfzmax; iz++)
196 const scalar vol_block = aboverlap(ix,iy) * zoverlap[iz];
197 v_block(ix,iy,iz) += vol_block;
198 surf(ix,iy,iz) += abperim(ix,iy) * zoverlap[iz] * zgrid.
width(iz);
204 if (!
pars.
two_d && (iz == czmin || iz == czmax))
207 const scalar both_ends_fac = (czmin == czmax ? 2.0 : 1.0);
209 surf(ix,iy,iz) += aboverlap(ix,iy)
210 * xgrid.
width(ix) * ygrid.
width(iy) * both_ends_fac;
213 const scalar temp = c_count(ix,iy) * zoverlap[iz];
215 obs_count(ix,iy,iz) += temp;
216 sub_count(ix,iy,iz).z() += temp;
218 if (!
pars.
two_d && (iz == czmin || iz == czmax))
221 const scalar both_ends_fac = (czmin == czmax ? 2.0 : 1.0);
223 sub_count(ix,iy,iz).z() -= temp * both_ends_fac / 2.0;
233 area_block.x() = ac_lblock(ix,iy) * zoverlap[iz];
234 area_block.y() = bc_lblock(ix,iy) * zoverlap[iz];
242 drag_r(ix,iy,iz).x() += c_drag(ix,iy).xx() * zoverlap[iz] / xgrid.
width(ix) / ygrid.
width(iy);
243 drag_r(ix,iy,iz).y() += c_drag(ix,iy).yy() * zoverlap[iz] / xgrid.
width(ix) / ygrid.
width(iy);
245 add_blockage_c(area_block_r(ix,iy,iz).
x(), dirn_block(ix,iy,iz).
x(), area_block.x(), 1.0);
246 add_blockage_c(area_block_r(ix,iy,iz).
y(), dirn_block(ix,iy,iz).
y(), area_block.y(), 1.0);
250 drag_s(ix,iy,iz).xx() += c_drag(ix,iy).xx() * zoverlap[iz] / xgrid.
width(ix) / ygrid.
width(iy);
251 drag_s(ix,iy,iz).yy() += c_drag(ix,iy).yy() * zoverlap[iz] / xgrid.
width(ix) / ygrid.
width(iy);
253 add_blockage_c(area_block_s(ix,iy,iz).
x(), dirn_block(ix,iy,iz).
x(), area_block.x(), 1.0);
254 add_blockage_c(area_block_s(ix,iy,iz).
y(), dirn_block(ix,iy,iz).
y(), area_block.y(), 1.0);
258 betai_inv1(ix,iy,iz).x() += vol_block / (1.0 - area_block.x() +
floatSMALL);
259 betai_inv1(ix,iy,iz).y() += vol_block / (1.0 - area_block.y() +
floatSMALL);
260 betai_inv1(ix,iy,iz).z() += vol_block / (1.0 - aboverlap(ix,iy) +
floatSMALL);
263 drag_s(ix,iy,iz).xy() += c_drag(ix,iy).xy() * zoverlap[iz] / xgrid.
width(ix) / ygrid.
width(iy);
265 add_blockage_f(face_block(ix,iy,iz).
x(), a_lblock(ix,iy) * zoverlap[iz], hole_in_face(ix,iy,iz).
x());
266 add_blockage_f(face_block(ix,iy,iz).
y(), b_lblock(ix,iy) * zoverlap[iz], hole_in_face(ix,iy,iz).
y());
273 add_blockage_f(face_block(ix,iy,cfzmax).z(), aboverlap(ix,iy), hole_in_face(ix,iy,cfzmax).z());
279 add_blockage_f(face_block(ix,iy,czmin+1).z(), aboverlap(ix,iy), hole_in_face(ix,iy,czmin+1).z());
282 add_blockage_f(face_block(ix,iy,czmax).z(), aboverlap(ix,iy), hole_in_face(ix,iy,czmax).z());
293 for (label iz = czmin+1; iz < czmax; ++iz)
296 along_block(ix,iy,iz).z() += aboverlap(ix,iy);
303 drag_s(ix,iy,czmin).zz() += aboverlap(ix,iy) * xgrid.
width(ix) * ygrid.
width(iy) / 2.0;
304 drag_s(ix,iy,czmax).zz() += aboverlap(ix,iy) * xgrid.
width(ix) * ygrid.
width(iy) / 2.0;
306 add_blockage_c(area_block_s(ix,iy,czmin).z(), dirn_block(ix,iy,czmin).z(), aboverlap(ix,iy), 0.5);
307 add_blockage_c(area_block_s(ix,iy,czmax).z(), dirn_block(ix,iy,czmax).z(), aboverlap(ix,iy), 0.5);
319 obs.
x(), obs.
x() + obs.
len(),
321 xoverlap, &cxmin, &cxmax, &cfxmin, &cfxmax
322 ); assert(cxmax >=0);
326 obs.
y() - rad_a, obs.
y() + rad_a,
328 yoverlap, &cymin, &cymax, &cfymin, &cfymax
329 ); assert(cymax >=0);
333 obs.
z() - rad_b, obs.
z() + rad_b,
335 zoverlap, &czmin, &czmax, &cfzmin, &cfzmax
336 ); assert(czmax >=0);
340 obs.
y(), obs.
z(), obs.
dia(),
342 pdrBlock.
grid().y(), cymin, cfymax,
343 pdrBlock.
grid().z(), czmin, cfzmax,
344 aboverlap, abperim, a_lblock, ac_lblock, c_count, c_drag,
349 for (label iy = cymin; iy <= cfymax; iy++)
351 for (label iz = czmin; iz <= cfzmax; iz++)
353 for (label ix = cxmin; ix <= cxmax; ix++)
355 const scalar vol_block = aboverlap(iy,iz) * xoverlap[ix];
356 v_block(ix,iy,iz) += vol_block;
357 surf(ix,iy,iz) += abperim(iy,iz) * xoverlap[ix] * xgrid.
width(ix);
359 if (ix == cxmin || ix == cxmax)
362 const scalar both_ends_fac = (cxmin == cxmax ? 2.0 : 1.0);
364 surf(ix,iy,iz) += aboverlap(iy,iz)
365 * ygrid.
width(iy) * zgrid.
width(iz) * both_ends_fac;
368 const scalar temp = c_count(iy,iz) * xoverlap[ix];
369 obs_count(ix,iy,iz) += temp;
370 sub_count(ix,iy,iz).x() += temp;
372 if (ix == cfxmin || ix == cfxmax)
375 const scalar both_ends_fac = (cfxmin == cfxmax ? 2.0 : 1.0);
377 sub_count(ix,iy,iz).x() -= temp * both_ends_fac / 2.0;
380 area_block.y() = ac_lblock(iy,iz) * xoverlap[ix];
381 area_block.z() = bc_lblock(iy,iz) * xoverlap[ix];
389 drag_r(ix,iy,iz).y() += c_drag(iy,iz).xx() * xoverlap[ix] / ygrid.
width(iy) / zgrid.
width(iz);
390 drag_r(ix,iy,iz).z() += c_drag(iy,iz).yy() * xoverlap[ix] / ygrid.
width(iy) / zgrid.
width(iz);
392 add_blockage_c(area_block_r(ix,iy,iz).
y(), dirn_block(ix,iy,iz).
y(), area_block.y(), 1.0);
393 add_blockage_c(area_block_r(ix,iy,iz).z(), dirn_block(ix,iy,iz).z(), area_block.z(), 1.0);
397 drag_s(ix,iy,iz).yy() += c_drag(iy,iz).xx() * xoverlap[ix] / ygrid.
width(iy) / zgrid.
width(iz);
398 drag_s(ix,iy,iz).zz() += c_drag(iy,iz).yy() * xoverlap[ix] / ygrid.
width(iy) / zgrid.
width(iz);
400 add_blockage_c(area_block_s(ix,iy,iz).
y(), dirn_block(ix,iy,iz).
y(), area_block.y(), 1.0);
401 add_blockage_c(area_block_s(ix,iy,iz).z(), dirn_block(ix,iy,iz).z(), area_block.z(), 1.0);
404 betai_inv1(ix,iy,iz).y() += vol_block / (1.0 - area_block.y() +
floatSMALL);
405 betai_inv1(ix,iy,iz).z() += vol_block / (1.0 - area_block.z() +
floatSMALL);
406 betai_inv1(ix,iy,iz).x() += vol_block / (1.0 - aboverlap(iy,iz) +
floatSMALL);
409 drag_s(ix,iy,iz).yz() += c_drag(iy,iz).xy() * xoverlap[ix] / ygrid.
width(iy) / zgrid.
width(iz);
411 add_blockage_f(face_block(ix,iy,iz).
y(), a_lblock(iy,iz) * xoverlap[ix], hole_in_face(ix,iy,iz).
y());
412 add_blockage_f(face_block(ix,iy,iz).z(), b_lblock(iy,iz) * xoverlap[ix], hole_in_face(ix,iy,iz).z());
417 add_blockage_f(face_block(cfxmax,iy,iz).
x(), aboverlap(iy,iz), hole_in_face(cfxmax,iy,iz).
x());
423 add_blockage_f(face_block(cxmin+1,iy,iz).
x(), aboverlap(iy,iz), hole_in_face(cxmin+1,iy,iz).
x());
426 add_blockage_f(face_block(cxmax,iy,iz).
x(), aboverlap(iy,iz), hole_in_face(cxmax,iy,iz).
x());
430 for (label ix = cxmin+1; ix < cxmax; ++ix)
433 along_block(ix,iy,iz).x() += aboverlap(iy,iz);
435 drag_s(cxmin,iy,iz).xx() += aboverlap(iy,iz) * ygrid.
width(iy) * zgrid.
width(iz) / 2.0;
436 drag_s(cxmax,iy,iz).xx() += aboverlap(iy,iz) * ygrid.
width(iy) * zgrid.
width(iz) / 2.0;
438 add_blockage_c(area_block_s(cxmin,iy,iz).
x(), dirn_block(cxmin,iy,iz).
x(), aboverlap(iy,iz), 0.5);
439 add_blockage_c(area_block_s(cxmax,iy,iz).
x(), dirn_block(cxmax,iy,iz).
x(), aboverlap(iy,iz), 0.5);
451 obs.
x() - rad_b, obs.
x() + rad_b,
453 xoverlap, &cxmin, &cxmax, &cfxmin, &cfxmax
454 ); assert(cxmax >=0);
458 obs.
y(), obs.
y() + obs.
len(),
460 yoverlap, &cymin, &cymax, &cfymin, &cfymax
461 ); assert(cymax >=0);
465 obs.
z() - rad_a, obs.
z() + rad_a,
467 zoverlap, &czmin, &czmax, &cfzmin, &cfzmax
468 ); assert(czmax >=0);
472 obs.
z(), obs.
x(), obs.
dia(),
474 pdrBlock.
grid().z(), czmin, cfzmax,
475 pdrBlock.
grid().x(), cxmin, cfxmax,
476 aboverlap, abperim, a_lblock, ac_lblock, c_count, c_drag,
481 for (label iz = czmin; iz <= cfzmax; iz++)
483 for (label ix = cxmin; ix <= cfxmax; ix++)
485 for (label iy = cymin; iy <= cymax; iy++)
487 const scalar vol_block = aboverlap(iz,ix) * yoverlap[iy];
488 v_block(ix,iy,iz) += vol_block;
489 surf(ix,iy,iz) += abperim(iz,ix) * yoverlap[iy] * ygrid.
width(iy);
491 if (iy == cymin || iy == cymax)
494 const scalar both_ends_fac = (cymin == cymax ? 2.0 : 1.0);
496 surf(ix,iy,iz) += aboverlap(iz,ix)
497 * zgrid.
width(iz) * xgrid.
width(ix) * both_ends_fac;
500 const scalar temp = c_count(iz,ix) * yoverlap[iy];
502 obs_count(ix,iy,iz) += temp;
503 sub_count(ix,iy,iz).y() += temp;
505 if (iy == cfymin || iy == cfymax)
508 const scalar both_ends_fac = (cfymin == cfymax ? 2.0 : 1.0);
510 sub_count(ix,iy,iz).y() -= temp * both_ends_fac / 2.0;
513 area_block.z() = ac_lblock(iz,ix) * yoverlap[iy];
514 area_block.x() = bc_lblock(iz,ix) * yoverlap[iy];
522 drag_r(ix,iy,iz).z() += c_drag(iz,ix).xx() * yoverlap[iy] / zgrid.
width(iz) / xgrid.
width(ix);
523 drag_r(ix,iy,iz).x() += c_drag(iz,ix).yy() * yoverlap[iy] / zgrid.
width(iz) / xgrid.
width(ix);
525 add_blockage_c(area_block_r(ix,iy,iz).z(), dirn_block(ix,iy,iz).z(), area_block.z(), 1.0);
526 add_blockage_c(area_block_r(ix,iy,iz).
x(), dirn_block(ix,iy,iz).
x(), area_block.x(), 1.0);
530 drag_s(ix,iy,iz).zz() += c_drag(iz,ix).xx() * yoverlap[iy] / zgrid.
width(iz) / xgrid.
width(ix);
531 drag_s(ix,iy,iz).xx() += c_drag(iz,ix).yy() * yoverlap[iy] / zgrid.
width(iz) / xgrid.
width(ix);
533 add_blockage_c(area_block_s(ix,iy,iz).z(), dirn_block(ix,iy,iz).z(), area_block.z(), 1.0);
534 add_blockage_c(area_block_s(ix,iy,iz).
x(), dirn_block(ix,iy,iz).
x(), area_block.x(), 1.0);
537 betai_inv1(ix,iy,iz).z() += vol_block / (1.0 - area_block.z() +
floatSMALL);
538 betai_inv1(ix,iy,iz).x() += vol_block / (1.0 - area_block.x() +
floatSMALL);
539 betai_inv1(ix,iy,iz).y() += vol_block / (1.0 - aboverlap(iz,ix) +
floatSMALL);
542 drag_s(ix,iy,iz).xz() += c_drag(iz,ix).xy() * yoverlap[iy] / zgrid.
width(iz) / xgrid.
width(ix);
544 add_blockage_f(face_block(ix,iy,iz).z(), a_lblock(iz,ix) * yoverlap[iy], hole_in_face(ix,iy,iz).z());
545 add_blockage_f(face_block(ix,iy,iz).
x(), b_lblock(iz,ix) * yoverlap[iy], hole_in_face(ix,iy,iz).
x());
550 add_blockage_f(face_block(ix,cfymax,iz).
y(), aboverlap(iz,ix), hole_in_face(ix,cfymax,iz).
y());
556 add_blockage_f(face_block(ix,cymin+1,iz).
y(), aboverlap(iz,ix), hole_in_face(ix,cymin+1,iz).
y());
559 add_blockage_f(face_block(ix,cymax,iz).
y(), aboverlap(iz,ix), hole_in_face(ix,cymax,iz).
y());
563 for (label iy = cymin+1; iy < cymax; ++iy)
566 along_block(ix,iy,iz).y() += aboverlap(iz,ix);
569 drag_s(ix,cymin,iz).yy() += aboverlap(iz,ix) * zgrid.
width(iz) * xgrid.
width(ix) / 2.0;
570 drag_s(ix,cymax,iz).yy() += aboverlap(iz,ix) * zgrid.
width(iz) * xgrid.
width(ix) / 2.0;
572 add_blockage_c(area_block_s(ix,cymin,iz).
y(), dirn_block(ix,cymin,iz).
y(), aboverlap(iz,ix), 0.5);
573 add_blockage_c(area_block_s(ix,cymax,iz).
y(), dirn_block(ix,cymax,iz).
y(), aboverlap(iz,ix), 0.5);
582 Info<<
"Unexpected orientation " << int(obs.
orient) <<
nl;
601 || (volumeSign < 0 && obs.vbkge >= 0)
602 || (volumeSign > 0 && obs.
vbkge < 0)
611 <<
"No PDRblock set" <<
nl
646 const auto spc = identifier.find_first_of(
" \t\n\v\f\r");
653 [=](
const PDRpatchDef&
p){
return patchName ==
p.patchName; },
678 if (obs.
span.
x() < 0.01)
682 else if (obs.
span.
y() < 0.01)
686 else if (obs.
span.
z() < 0.01)
693 <<
"Blowoff panel should have zero thickness" <<
nl
699 int cxmin, cxmax, cfxmin, cfxmax;
702 obs.
x(), obs.
x() + obs.
span.
x(),
704 xoverlap, &cxmin, &cxmax, &cfxmin, &cfxmax
705 ); assert(cxmax >=0);
707 int cymin, cymax, cfymin, cfymax;
710 obs.
y(), obs.
y() + obs.
span.
y(),
712 yoverlap, &cymin, &cymax, &cfymin, &cfymax
713 ); assert(cymax >=0);
715 int czmin, czmax, cfzmin, cfzmax;
718 obs.
z(), obs.
z() + obs.
span.
z(),
720 zoverlap, &czmin, &czmax, &cfzmin, &cfzmax
721 ); assert(czmax >=0);
723 two_d_overlap(xoverlap, cxmin, cxmax, yoverlap, cymin, cymax, aboverlap);
726 const scalar vbkge = obs.
vbkge;
727 const scalar xbkge = obs.
xbkge;
728 const scalar ybkge = obs.
ybkge;
729 const scalar zbkge = obs.
zbkge;
734 ((cxmin == cxmax) ? 0.5 : 1.0),
735 ((cymin == cymax) ? 0.5 : 1.0),
736 ((czmin == czmax) ? 0.5 : 1.0)
739 for (label ix = cxmin; ix <= cfxmax; ix++)
741 const scalar xov = xoverlap[ix];
743 scalar
area, cell_area, temp;
745 for (label iy = cymin; iy <= cfymax; iy++)
747 const scalar yov = yoverlap[iy];
749 for (label iz = czmin; iz <= cfzmax; iz++)
751 const scalar zov = zoverlap[iz];
758 (indir == -1 && ix == cfxmin)
759 || (indir == 1 && ix == cfxmax)
760 || (indir == -2 && iy == cfymin)
761 || (indir == 2 && iy == cfymax)
762 || (indir == -3 && iz == cfzmin)
763 || (indir == 3 && iz == cfzmax)
782 face_patch(ix,iy,iz).x() = patchNum;
791 face_patch(ix,iy,iz).y() = patchNum;
800 face_patch(ix,iy,iz).z() = patchNum;
807 const scalar vol_block = aboverlap(ix,iy) * zov * vbkge;
808 v_block(ix,iy,iz) += vol_block;
811 if ((ix > cxmin && ix <= cxmax) || (cxmin == cxmax && ix == cfxmax))
813 temp = yov * zov * xbkge;
819 hole_in_face(ix,iy,iz).x() =
true;
821 add_blockage_f(face_block(ix,iy,iz).
x(), temp, hole_in_face(ix,iy,iz).
x());
828 if ((iy > cymin && iy <= cymax) || (cymin == cymax && iy == cfymax))
830 temp = zov * xov * ybkge;
833 hole_in_face(ix,iy,iz).y() =
true;
835 add_blockage_f(face_block(ix,iy,iz).
y(), temp, hole_in_face(ix,iy,iz).
y());
841 if ((iz > czmin && iz <= czmax) || (czmin == czmax && iz == cfzmax))
843 temp = xov * yov * zbkge;
846 hole_in_face(ix,iy,iz).z() =
true;
848 add_blockage_f(face_block(ix,iy,iz).z(), temp, hole_in_face(ix,iy,iz).z());
858 area = yov * zov * xbkge;
859 if (ix < cxmin || ix > cxmax)
861 else if (ix > cxmin && ix < cxmax && xbkge >= 1.0)
863 along_block(ix,iy,iz).x() +=
area;
864 betai_inv1(ix,iy,iz).x() += vol_block / (1.0 -
area +
floatSMALL);
866 else if (ix == cxmin || ix == cxmax)
870 const scalar double_f = (cxmin == cxmax ? 1.0 : 0.5);
872 add_blockage_c(area_block_s(ix,iy,iz).
x(), dirn_block(ix,iy,iz).
x(),
area, double_f);
873 cell_area = (ygrid.
width(iy) * zgrid.
width(iz));
874 surf(ix,iy,iz) += double_f *
area * cell_area;
875 betai_inv1(ix,iy,iz).x() += vol_block / (1.0 -
area +
floatSMALL);
882 if (temp > 0.0) { grating_count(ix,iy,iz).x() += temp; }
888 area = zov * xov * ybkge;
889 if (iy < cymin || iy > cymax)
891 else if (iy > cymin && iy < cymax && ybkge >= 1.0)
893 along_block(ix,iy,iz).y() +=
area;
894 betai_inv1(ix,iy,iz).y() += vol_block / (1.0 -
area +
floatSMALL);
896 else if (iy == cymin || iy == cymax)
900 const scalar double_f = (cymin == cymax ? 1.0 : 0.5);
902 add_blockage_c(area_block_s(ix,iy,iz).
y(), dirn_block(ix,iy,iz).
y(),
area, double_f);
903 cell_area = (zgrid.
width(iz) * xgrid.
width(ix));
904 surf(ix,iy,iz) += double_f *
area * cell_area;
905 betai_inv1(ix,iy,iz).y() += vol_block / (1.0 -
area +
floatSMALL);
911 if (temp > 0.0) { grating_count(ix,iy,iz).y() += temp; }
915 area = xov * yov * zbkge;
916 if (iz < czmin || iz > czmax)
918 else if (iz > czmin && iz < czmax && zbkge >= 1.0)
920 along_block(ix,iy,iz).z() +=
area;
921 betai_inv1(ix,iy,iz).z() += vol_block / (1.0 -
area +
floatSMALL);
923 else if (iz == czmin || iz == czmax)
927 const scalar double_f = (czmin == czmax ? 1.0 : 0.5);
929 add_blockage_c(area_block_s(ix,iy,iz).z(), dirn_block(ix,iy,iz).z(),
area, double_f);
930 cell_area = (xgrid.
width(ix) * ygrid.
width(iy));
931 surf(ix,iy,iz) += double_f *
area * cell_area;
932 betai_inv1(ix,iy,iz).z() += vol_block / (1.0 -
area +
floatSMALL);
938 if (temp > 0.0) { grating_count(ix,iy,iz).z() += temp; }
965 for (label ix = cxmin; ix <= cxmax; ix++)
968 scalar olap25 = 0.25 * xoverlap[ix];
973 obs_count(ix,cymin,czmin) += temp;
974 obs_count(ix,cymax,czmin) += temp;
975 obs_count(ix,cymin,czmax) += temp;
976 obs_count(ix,cymax,czmax) += temp;
978 sub_count(ix,cymin,czmin).x() += temp;
979 sub_count(ix,cymax,czmin).x() += temp;
980 sub_count(ix,cymin,czmax).x() += temp;
981 sub_count(ix,cymax,czmax).x() += temp;
986 drag_s(ix,cymin,czmin).yy() += zoverlap[czmin] * double_f.z() * olap25 * ybkge / ygrid.
width(cymin);
987 drag_s(ix,cymax,czmin).yy() += zoverlap[czmin] * double_f.z() * olap25 * ybkge / ygrid.
width(cymax);
988 drag_s(ix,cymin,czmax).yy() += zoverlap[czmax] * double_f.z() * olap25 * ybkge / ygrid.
width(cymin);
989 drag_s(ix,cymax,czmax).yy() += zoverlap[czmax] * double_f.z() * olap25 * ybkge / ygrid.
width(cymax);
991 drag_s(ix,cymin,czmin).zz() += yoverlap[cymin] * double_f.y() * olap25 * zbkge / zgrid.
width(czmin);
992 drag_s(ix,cymax,czmin).zz() += yoverlap[cymax] * double_f.y() * olap25 * zbkge / zgrid.
width(czmin);
993 drag_s(ix,cymin,czmax).zz() += yoverlap[cymin] * double_f.y() * olap25 * zbkge / zgrid.
width(czmax);
994 drag_s(ix,cymax,czmax).zz() += yoverlap[cymax] * double_f.y() * olap25 * zbkge / zgrid.
width(czmax);
999 for (label iy = cymin+1; iy < cymax; iy++)
1001 for (label iz = czmin+1; iz < czmax; iz++)
1004 drag_s(ix,iy,iz).xx() = xbkge / xgrid.
width(ix);
1010 for (label iy = cymin; iy <= cymax; iy++)
1012 scalar olap25 = 0.25 * yoverlap[iy];
1016 obs_count(cxmin,iy,czmin) += temp;
1017 obs_count(cxmax,iy,czmin) += temp;
1018 obs_count(cxmin,iy,czmax) += temp;
1019 obs_count(cxmax,iy,czmax) += temp;
1021 sub_count(cxmin,iy,czmin).y() += temp;
1022 sub_count(cxmax,iy,czmin).y() += temp;
1023 sub_count(cxmin,iy,czmax).y() += temp;
1024 sub_count(cxmax,iy,czmax).y() += temp;
1028 if (iy > cymin && iy < cymax)
1030 drag_s(cxmin,iy,czmin).zz() += xoverlap[cxmin] * double_f.x() * olap25 * zbkge / zgrid.
width(czmin);
1031 drag_s(cxmax,iy,czmin).zz() += xoverlap[cxmin] * double_f.x() * olap25 * zbkge / zgrid.
width(czmin);
1032 drag_s(cxmin,iy,czmax).zz() += xoverlap[cxmax] * double_f.x() * olap25 * zbkge / zgrid.
width(czmax);
1033 drag_s(cxmax,iy,czmax).zz() += xoverlap[cxmax] * double_f.x() * olap25 * zbkge / zgrid.
width(czmax);
1035 drag_s(cxmin,iy,czmin).xx() += zoverlap[czmin] * double_f.z() * olap25 * xbkge / xgrid.
width(cxmin);
1036 drag_s(cxmax,iy,czmin).xx() += zoverlap[czmax] * double_f.z() * olap25 * xbkge / xgrid.
width(cxmax);
1037 drag_s(cxmin,iy,czmax).xx() += zoverlap[czmin] * double_f.z() * olap25 * xbkge / xgrid.
width(cxmin);
1038 drag_s(cxmax,iy,czmax).xx() += zoverlap[czmax] * double_f.z() * olap25 * xbkge / xgrid.
width(cxmax);
1043 for (label iz = czmin+1; iz < czmax; iz++)
1045 for (label ix = cxmin+1; ix < cxmax; ix++)
1048 drag_s(ix,iy,iz).yy() = ybkge / ygrid.
width(iy);
1054 for (label iz = czmin; iz <= czmax; iz++)
1056 scalar olap25 = 0.25 * zoverlap[iz];
1060 obs_count(cxmin,cymin,iz) += temp;
1061 obs_count(cxmin,cymax,iz) += temp;
1062 obs_count(cxmax,cymin,iz) += temp;
1063 obs_count(cxmax,cymax,iz) += temp;
1065 sub_count(cxmin,cymin,iz).z() += temp;
1066 sub_count(cxmin,cymax,iz).z() += temp;
1067 sub_count(cxmax,cymin,iz).z() += temp;
1068 sub_count(cxmax,cymax,iz).z() += temp;
1072 if (iz > czmin && iz < czmax)
1074 drag_s(cxmin,cymin,iz).xx() += yoverlap[cymin] * double_f.y() * olap25 * xbkge / xgrid.
width(cxmin);
1075 drag_s(cxmax,cymin,iz).xx() += yoverlap[cymin] * double_f.y() * olap25 * xbkge / xgrid.
width(cxmax);
1076 drag_s(cxmin,cymax,iz).xx() += yoverlap[cymax] * double_f.y() * olap25 * xbkge / xgrid.
width(cxmin);
1077 drag_s(cxmax,cymax,iz).xx() += yoverlap[cymax] * double_f.y() * olap25 * xbkge / xgrid.
width(cxmax);
1079 drag_s(cxmin,cymin,iz).yy() += xoverlap[cxmin] * double_f.x() * olap25 * ybkge / ygrid.
width(cymin);
1080 drag_s(cxmax,cymin,iz).yy() += xoverlap[cxmax] * double_f.x() * olap25 * ybkge / ygrid.
width(cymin);
1081 drag_s(cxmin,cymax,iz).yy() += xoverlap[cxmin] * double_f.x() * olap25 * ybkge / ygrid.
width(cymax);
1082 drag_s(cxmax,cymax,iz).yy() += xoverlap[cxmax] * double_f.x() * olap25 * ybkge / ygrid.
width(cymax);
1088 for (label ix = cxmin+1; ix < cxmax; ix++)
1090 for (label iy = cymin+1; iy < cymax; iy++)
1093 drag_s(ix,iy,iz).zz() = zbkge / zgrid.
width(iz);