Skip to content

Commit

Permalink
Remove dimension template parameter from BoundaryEnum (#112)
Browse files Browse the repository at this point in the history
* Use non dim templated boundary enum

* Bump HRLE version
  • Loading branch information
tobre1 authored Feb 13, 2025
1 parent 1d76be8 commit a4e0682
Show file tree
Hide file tree
Showing 11 changed files with 31 additions and 32 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ CPMAddPackage(

CPMFindPackage(
NAME ViennaHRLE
VERSION 0.4.0
VERSION 0.5.0
GIT_REPOSITORY "https://github.com/ViennaTools/ViennaHRLE"
EXCLUDE_FROM_ALL ${VIENNALS_BUILD_PYTHON})

Expand Down Expand Up @@ -250,4 +250,4 @@ packageProject(
INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include/viennals
INCLUDE_DESTINATION include/viennals-${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
DEPENDENCIES "VTK 9.0.0;ViennaHRLE 0.4.0")
DEPENDENCIES "VTK 9.0.0;ViennaHRLE 0.5.0")
6 changes: 3 additions & 3 deletions examples/VolumeToLevelSets/VolumeToLevelSets.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ int main(int argc, char *argv[]) {
ls::VTKWriter(mesh, ls::FileFormatEnum::VTU, "ReadVolumeMesh.vtu").apply();

double bounds[2 * D] = {-6, 6, 1e-10, 0.078, -0.034, 0.034};
ls::BoundaryConditionEnum<D> boundaryCons[D];
ls::BoundaryConditionEnum boundaryCons[D];
for (unsigned i = 0; i < D; ++i) {
boundaryCons[i] = ls::BoundaryConditionEnum<D>::REFLECTIVE_BOUNDARY;
boundaryCons[i] = ls::BoundaryConditionEnum::REFLECTIVE_BOUNDARY;
}
boundaryCons[0] = ls::BoundaryConditionEnum<D>::INFINITE_BOUNDARY;
boundaryCons[0] = ls::BoundaryConditionEnum::INFINITE_BOUNDARY;

auto domain = ls::SmartPointer<ls::Domain<NumericType, D>>::New(
bounds, boundaryCons, gridDelta);
Expand Down
5 changes: 2 additions & 3 deletions include/viennals/lsDomain.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ namespace viennals {
using namespace viennacore;

// Boundary condition alias for easier access
template <int D>
using BoundaryConditionEnum = typename hrleGrid<D>::boundaryType;
using BoundaryConditionEnum = hrleBoundaryType;

/// Class containing all information about the level set, including
/// the dimensions of the domain, boundary conditions and all data.
Expand All @@ -31,7 +30,7 @@ template <class T, int D> class Domain {
typedef T ValueType;
typedef hrleGrid<D> GridType;
typedef hrleDomain<T, D> DomainType;
typedef BoundaryConditionEnum<D> BoundaryType;
typedef BoundaryConditionEnum BoundaryType;
typedef typename std::vector<std::pair<hrleVectorType<hrleIndexType, D>, T>>
PointValueVectorType;
typedef typename std::vector<std::array<T, D>> NormalVectorType;
Expand Down
8 changes: 4 additions & 4 deletions include/viennals/lsExtrude.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ template <class T> class Extrude {
SmartPointer<Domain<T, 3>> outputLevelSet = nullptr;
Vec2D<T> extent = {0., 0.};
int extrudeDim = 0;
std::array<BoundaryConditionEnum<3>, 3> boundaryConds;
std::array<BoundaryConditionEnum, 3> boundaryConds;

public:
Extrude() {}
Extrude(SmartPointer<Domain<T, 2>> passedInputLS,
SmartPointer<Domain<T, 3>> passedOutputLS, Vec2D<T> passedExtent,
const int passedExtrudeDim,
std::array<BoundaryConditionEnum<3>, 3> passedBoundaryConds)
std::array<BoundaryConditionEnum, 3> passedBoundaryConds)
: inputLevelSet(passedInputLS), outputLevelSet(passedOutputLS),
extent(passedExtent), extrudeDim(passedExtrudeDim),
boundaryConds(passedBoundaryConds) {}
Expand All @@ -46,11 +46,11 @@ template <class T> class Extrude {
}

void setBoundaryConditions(
std::array<BoundaryConditionEnum<3>, 3> passedBoundaryConds) {
std::array<BoundaryConditionEnum, 3> passedBoundaryConds) {
boundaryConds = passedBoundaryConds;
}

void setBoundaryConditions(BoundaryConditionEnum<3> passedBoundaryConds[3]) {
void setBoundaryConditions(BoundaryConditionEnum passedBoundaryConds[3]) {
for (int i = 0; i < 3; i++)
boundaryConds[i] = passedBoundaryConds[i];
}
Expand Down
3 changes: 2 additions & 1 deletion include/viennals/lsFromMesh.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ template <class T, int D> class FromMesh {
// if boundary conditions are infinite always set the point
// if not, check, whether it is inside of domain
for (unsigned i = 0; i < D; ++i) {
if (grid.getBoundaryConditions(i) != hrleGrid<D>::INFINITE_BOUNDARY) {
if (grid.getBoundaryConditions(i) !=
hrleBoundaryType::INFINITE_BOUNDARY) {
if (currentIndex[i] > grid.getMaxBounds(i) ||
currentIndex[i] < grid.getMinBounds(i)) {
setPoint = false;
Expand Down
2 changes: 1 addition & 1 deletion include/viennals/lsMakeGeometry.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ template <class T, int D> class MakeGeometry {
bool infDimSet = false;
for (unsigned n = 0; n < D; ++n) {
if (grid.getBoundaryConditions(n) ==
hrleGrid<D>::boundaryType::INFINITE_BOUNDARY) {
hrleBoundaryType::INFINITE_BOUNDARY) {
if (!infDimSet) {
i = n;
infDimSet = true;
Expand Down
13 changes: 6 additions & 7 deletions python/pyWrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -436,15 +436,14 @@ PYBIND11_MODULE(VIENNALS_MODULE_NAME, module) {
}, pybind11::arg("stream") = pybind11::module::import("sys").attr("stdout"));

// enums
pybind11::enum_<BoundaryConditionEnum<D>>(module, "BoundaryConditionEnum")
.value("REFLECTIVE_BOUNDARY",
BoundaryConditionEnum<D>::REFLECTIVE_BOUNDARY)
.value("INFINITE_BOUNDARY", BoundaryConditionEnum<D>::INFINITE_BOUNDARY)
.value("PERIODIC_BOUNDARY", BoundaryConditionEnum<D>::PERIODIC_BOUNDARY)
pybind11::enum_<BoundaryConditionEnum>(module, "BoundaryConditionEnum")
.value("REFLECTIVE_BOUNDARY", BoundaryConditionEnum::REFLECTIVE_BOUNDARY)
.value("INFINITE_BOUNDARY", BoundaryConditionEnum::INFINITE_BOUNDARY)
.value("PERIODIC_BOUNDARY", BoundaryConditionEnum::PERIODIC_BOUNDARY)
.value("POS_INFINITE_BOUNDARY",
BoundaryConditionEnum<D>::POS_INFINITE_BOUNDARY)
BoundaryConditionEnum::POS_INFINITE_BOUNDARY)
.value("NEG_INFINITE_BOUNDARY",
BoundaryConditionEnum<D>::NEG_INFINITE_BOUNDARY);
BoundaryConditionEnum::NEG_INFINITE_BOUNDARY);

// GeometricAdvect
pybind11::class_<GeometricAdvect<T, D>, SmartPointer<GeometricAdvect<T, D>>>(
Expand Down
6 changes: 3 additions & 3 deletions tests/AdvectionPlane/AdvectionPlane.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ int main() {
double gridDelta = 1;

double bounds[2 * D] = {-extent, extent, -extent, extent};
ls::BoundaryConditionEnum<D> boundaryCons[D];
boundaryCons[0] = ls::BoundaryConditionEnum<D>::REFLECTIVE_BOUNDARY;
boundaryCons[1] = ls::BoundaryConditionEnum<D>::INFINITE_BOUNDARY;
ls::BoundaryConditionEnum boundaryCons[D];
boundaryCons[0] = ls::BoundaryConditionEnum::REFLECTIVE_BOUNDARY;
boundaryCons[1] = ls::BoundaryConditionEnum::INFINITE_BOUNDARY;

auto plane = ls::SmartPointer<ls::Domain<double, D>>::New(
bounds, boundaryCons, gridDelta);
Expand Down
8 changes: 4 additions & 4 deletions tests/Extrude/Extrude.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,10 @@ int main() {
}

std::array<double, 2> extrudeExtent = {-5., 5.};
std::array<ls::BoundaryConditionEnum<3>, 3> boundaryConds{
ls::BoundaryConditionEnum<3>::REFLECTIVE_BOUNDARY,
ls::BoundaryConditionEnum<3>::INFINITE_BOUNDARY,
ls::BoundaryConditionEnum<3>::REFLECTIVE_BOUNDARY};
std::array<ls::BoundaryConditionEnum, 3> boundaryConds{
ls::BoundaryConditionEnum::REFLECTIVE_BOUNDARY,
ls::BoundaryConditionEnum::INFINITE_BOUNDARY,
ls::BoundaryConditionEnum::REFLECTIVE_BOUNDARY};
auto trench_3D = ls::SmartPointer<ls::Domain<double, 3>>::New();
ls::Extrude<double>(trench, trench_3D, extrudeExtent, 2, boundaryConds)
.apply();
Expand Down
2 changes: 1 addition & 1 deletion tests/FileWriter/FileWriter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ int main() {
for (unsigned i = 0; i < D; ++i) {
boundaryCons[i] = ls::Domain<double, D>::BoundaryType::REFLECTIVE_BOUNDARY;
}
boundaryCons[D - 1] = ls::BoundaryConditionEnum<D>::INFINITE_BOUNDARY;
boundaryCons[D - 1] = ls::BoundaryConditionEnum::INFINITE_BOUNDARY;

auto levelSet = ls::SmartPointer<ls::Domain<double, D>>::New(
bounds, boundaryCons, gridDelta);
Expand Down
6 changes: 3 additions & 3 deletions tests/MarkVoidPoints/MarkVoidPoints.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ int main() {
NumericType gridDelta = 1;

double bounds[2 * D] = {-extent, extent, -extent, extent};
ls::BoundaryConditionEnum<D> boundaryCons[D];
boundaryCons[0] = ls::BoundaryConditionEnum<D>::REFLECTIVE_BOUNDARY;
boundaryCons[1] = ls::BoundaryConditionEnum<D>::INFINITE_BOUNDARY;
ls::BoundaryConditionEnum boundaryCons[D];
boundaryCons[0] = ls::BoundaryConditionEnum::REFLECTIVE_BOUNDARY;
boundaryCons[1] = ls::BoundaryConditionEnum::INFINITE_BOUNDARY;

auto domain = ls::SmartPointer<ls::Domain<NumericType, D>>::New(
bounds, boundaryCons, gridDelta);
Expand Down

0 comments on commit a4e0682

Please sign in to comment.