Skip to content

Commit c64d6cd

Browse files
authored
Merge pull request CFD-GO#507 from bhill23/fix/sweep-geometry-improvement
Improve the Sweep geometry
2 parents 662f81b + 43567db commit c64d6cd

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

src/Geometry.cpp.Rt

+24-12
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,7 @@ inline int Geometry::loadSweep(lbRegion reg, pugi::xml_node node)
693693
int order=1;
694694
attr = node.attribute("order");
695695
if (attr) order = attr.as_int();
696-
double dl=1e-3;
696+
double dl=1e-4;
697697
attr = node.attribute("step");
698698
if (attr) dl = attr.as_double();
699699
attr = node.attribute("steps");
@@ -724,19 +724,31 @@ inline int Geometry::loadSweep(lbRegion reg, pugi::xml_node node)
724724
order = n-1;
725725
}
726726
output("Making a Sweep over region (%ld) with %lf step\n",reg.size(), dl);
727-
for (int x = reg.dx; x < reg.dx + reg.nx; x++)
728-
for (int y = reg.dy; y < reg.dy + reg.ny; y++)
729-
for (int z = reg.dz; z < reg.dz + reg.nz; z++) {
730-
for (double l=0;l<1; l+= dl) {
731-
double x0 = bspline(l, nx, order);
732-
double y0 = bspline(l, ny, order);
733-
double z0 = bspline(l, nz, order);
734-
double r = bspline(l, nr, order);
735-
if ((x-x0)*(x-x0)+(y-y0)*(y-y0)+(z-z0)*(z-z0) < r*r) {
736-
Dot(x, y, z);
727+
728+
double x0_=-999.0, y0_=-999.0, z0_=-999.0, r0_=-999.0;
729+
for (double l=0;l<1; l+= dl) {
730+
double x0 = bspline(l, nx, order);
731+
double y0 = bspline(l, ny, order);
732+
double z0 = bspline(l, nz, order);
733+
double r = bspline(l, nr, order);
734+
735+
if (abs(x0-x0_) < 0.25 &&
736+
abs(y0-y0_) < 0.25 &&
737+
abs(z0-z0_) < 0.25 &&
738+
abs(r-r0_) < 0.25) {
739+
continue;
740+
}
741+
x0_ = x0; y0_ = y0; z0_ = z0; r0_ = r;
742+
743+
lbRegion tmpReg=reg.intersect(lbRegion(x0-r-1,y0-r-1,z0-r-1,2*r+2,2*r+2,2*r+2));
744+
for (int x = tmpReg.dx; x < tmpReg.dx + tmpReg.nx; x++)
745+
for (int y = tmpReg.dy; y < tmpReg.dy + tmpReg.ny; y++)
746+
for (int z = tmpReg.dz; z < tmpReg.dz + tmpReg.nz; z++) {
747+
if ((.5+x-x0)*(.5+x-x0)+(.5+y-y0)*(.5+y-y0)+(.5+z-z0)*(.5+z-z0) < r*r) {
748+
Dot(x, y, z);
737749
}
738750
}
739-
}
751+
}
740752

741753
return 0;
742754
}

0 commit comments

Comments
 (0)