Skip to content

Commit 0f8d26b

Browse files
authored
Merge pull request #7 from ViennaTools/refactor-vector-type
Refactor vector type
2 parents 955bb5b + 4bdf61e commit 0f8d26b

17 files changed

+225
-234
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
build/
22
.vscode/
3+
.idea/
4+
cmake-build-*
35

46
# Prerequisites
57
*.d

CMakeLists.txt

Lines changed: 60 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
22
project(
3-
ViennaCS
4-
LANGUAGES CXX
5-
VERSION 1.0.0)
3+
ViennaCS
4+
LANGUAGES CXX
5+
VERSION 1.1.0)
66

77
# --------------------------------------------------------------------------------------------------------
88
# Library options
99
# --------------------------------------------------------------------------------------------------------
1010

11-
option(VIENNACS_BUILD_PYTHON "Build python bindings" ON)
11+
option(VIENNACS_BUILD_PYTHON "Build python bindings" OFF)
1212

13-
option(VIENNACS_BUILD_EXAMPLES "Build examples" ON)
14-
option(VIENNACS_BUILD_TESTS "Build tests" ON)
13+
option(VIENNACS_BUILD_EXAMPLES "Build examples" OFF)
14+
option(VIENNACS_BUILD_TESTS "Build tests" OFF)
1515

1616
set(VIENNACS_LOOKUP_DIRS
17-
""
18-
CACHE STRING "Directories to account for when searching installed dependencies")
17+
""
18+
CACHE STRING "Directories to account for when searching installed dependencies")
1919

2020
list(APPEND CMAKE_PREFIX_PATH ${VIENNACS_LOOKUP_DIRS})
2121

@@ -28,24 +28,24 @@ add_library(ViennaTools::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
2828

2929
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17)
3030
set_target_properties(
31-
${PROJECT_NAME}
32-
PROPERTIES CXX_STANDARD 17
33-
CXX_EXTENSIONS OFF
34-
CXX_STANDARD_REQUIRED ON)
31+
${PROJECT_NAME}
32+
PROPERTIES CXX_STANDARD 17
33+
CXX_EXTENSIONS OFF
34+
CXX_STANDARD_REQUIRED ON)
3535

36-
if (MSVC)
37-
# https://learn.microsoft.com/cpp/c-runtime-library/math-constants
38-
# TODO: In case C++20 is adpoted any time soon: https://cppreference.com/w/cpp/numeric/constants
39-
target_compile_definitions(${PROJECT_NAME} INTERFACE _USE_MATH_DEFINES=1)
40-
endif ()
36+
if(MSVC)
37+
# https://learn.microsoft.com/cpp/c-runtime-library/math-constants
38+
# TODO: In case C++20 is adpoted any time soon: https://cppreference.com/w/cpp/numeric/constants
39+
target_compile_definitions(${PROJECT_NAME} INTERFACE _USE_MATH_DEFINES=1)
40+
endif()
4141

4242
# --------------------------------------------------------------------------------------------------------
4343
# Include directories
4444
# --------------------------------------------------------------------------------------------------------
4545

4646
target_include_directories(
47-
${PROJECT_NAME} INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/viennacs>
48-
$<INSTALL_INTERFACE:include/viennacs-${PROJECT_VERSION}>)
47+
${PROJECT_NAME} INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/viennacs>
48+
$<INSTALL_INTERFACE:include/viennacs-${PROJECT_VERSION}>)
4949

5050
# --------------------------------------------------------------------------------------------------------
5151
# Check whether or not dependencies are installed on the system
@@ -58,12 +58,12 @@ find_package(ViennaRay QUIET)
5858
find_package(ViennaLS QUIET)
5959

6060
set(VIENNACS_SYSTEM_VIENNARAY
61-
${ViennaRay_FOUND}
62-
CACHE INTERNAL "")
61+
${ViennaRay_FOUND}
62+
CACHE INTERNAL "")
6363

6464
set(VIENNACS_SYSTEM_VIENNALS
65-
${ViennaLS_FOUND}
66-
CACHE INTERNAL "")
65+
${ViennaLS_FOUND}
66+
CACHE INTERNAL "")
6767

6868
# --------------------------------------------------------------------------------------------------------
6969
# Setup Dependencies
@@ -72,71 +72,70 @@ set(VIENNACS_SYSTEM_VIENNALS
7272
include("cmake/cpm.cmake")
7373

7474
CPMAddPackage(
75-
NAME ViennaCore
76-
VERSION 1.3.0
77-
GIT_REPOSITORY "https://github.com/ViennaTools/ViennaCore"
78-
OPTIONS "VIENNACORE_FORMAT_EXCLUDE docs/")
75+
NAME ViennaCore
76+
VERSION 1.4.0
77+
GIT_REPOSITORY "https://github.com/ViennaTools/ViennaCore")
7978

8079
CPMAddPackage(
81-
NAME PackageProject
82-
VERSION 1.13.0
83-
GIT_REPOSITORY "https://github.com/TheLartians/PackageProject.cmake"
84-
EXCLUDE_FROM_ALL ${VIENNACS_BUILD_PYTHON})
80+
NAME PackageProject
81+
VERSION 1.13.0
82+
GIT_REPOSITORY "https://github.com/TheLartians/PackageProject.cmake"
83+
EXCLUDE_FROM_ALL ${VIENNACS_BUILD_PYTHON})
8584

8685
CPMFindPackage(
87-
NAME ViennaRay
88-
VERSION 3.3.0
89-
GIT_REPOSITORY "https://github.com/ViennaTools/ViennaRay"
90-
EXCLUDE_FROM_ALL ${VIENNACS_BUILD_PYTHON})
86+
NAME ViennaRay
87+
VERSION 3.4.0
88+
GIT_REPOSITORY "https://github.com/ViennaTools/ViennaRay"
89+
EXCLUDE_FROM_ALL ${VIENNACS_BUILD_PYTHON})
9190

9291
CPMFindPackage(
93-
NAME ViennaLS
94-
VERSION 4.2.2
95-
GIT_REPOSITORY "https://github.com/ViennaTools/ViennaLS"
96-
EXCLUDE_FROM_ALL ${VIENNACS_BUILD_PYTHON})
92+
NAME ViennaLS
93+
VERSION 4.3.0
94+
GIT_REPOSITORY "https://github.com/ViennaTools/ViennaLS"
95+
EXCLUDE_FROM_ALL ${VIENNACS_BUILD_PYTHON})
9796

9897
target_link_libraries(${PROJECT_NAME} INTERFACE ViennaTools::ViennaCore ViennaTools::ViennaLS
99-
ViennaTools::ViennaRay)
98+
ViennaTools::ViennaRay)
10099

101100
# --------------------------------------------------------------------------------------------------------
102101
# Setup Examples
103102
# --------------------------------------------------------------------------------------------------------
104103

105-
if (VIENNACS_BUILD_EXAMPLES)
106-
message(STATUS "[ViennaCS] Building Examples")
107-
add_subdirectory(examples)
108-
endif ()
104+
if(VIENNACS_BUILD_EXAMPLES)
105+
message(STATUS "[ViennaCS] Building Examples")
106+
add_subdirectory(examples)
107+
endif()
109108

110109
# --------------------------------------------------------------------------------------------------------
111110
# Setup Tests
112111
# --------------------------------------------------------------------------------------------------------
113112

114-
if (VIENNACS_BUILD_TESTS)
115-
message(STATUS "[ViennaCS] Building Tests")
113+
if(VIENNACS_BUILD_TESTS)
114+
message(STATUS "[ViennaCS] Building Tests")
116115

117-
enable_testing()
118-
add_subdirectory(tests)
119-
endif ()
116+
enable_testing()
117+
add_subdirectory(tests)
118+
endif()
120119

121120
# --------------------------------------------------------------------------------------------------------
122121
# Setup Python Bindings
123122
# --------------------------------------------------------------------------------------------------------
124123

125-
if (VIENNACS_BUILD_PYTHON)
126-
message(STATUS "[ViennaPS] Building Python Bindings")
127-
add_subdirectory(python)
128-
return()
129-
endif ()
124+
if(VIENNACS_BUILD_PYTHON)
125+
message(STATUS "[ViennaCS] Building Python Bindings")
126+
add_subdirectory(python)
127+
return()
128+
endif()
130129

131130
# --------------------------------------------------------------------------------------------------------
132131
# Install Target
133132
# --------------------------------------------------------------------------------------------------------
134133

135134
packageProject(
136-
NAME ${PROJECT_NAME} NAMESPACE ViennaTools
137-
VERSION ${PROJECT_VERSION}
138-
BINARY_DIR ${PROJECT_BINARY_DIR}
139-
INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include/viennacs
140-
INCLUDE_DESTINATION include/viennacs-${PROJECT_VERSION}
141-
COMPATIBILITY SameMajorVersion
142-
DEPENDENCIES "ViennaCore;ViennaLS;ViennaRay")
135+
NAME ${PROJECT_NAME} NAMESPACE ViennaTools
136+
VERSION ${PROJECT_VERSION}
137+
BINARY_DIR ${PROJECT_BINARY_DIR}
138+
INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include/viennacs
139+
INCLUDE_DESTINATION include/viennacs-${PROJECT_VERSION}
140+
COMPATIBILITY SameMajorVersion
141+
DEPENDENCIES "ViennaCore;ViennaLS;ViennaRay")

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ licenses. The individual licenses apply for this specific part. Please consult
33
the respective LICENSE files.
44

55

6-
Copyright (c) 2015 Institute for Microelectronics, TU Wien.
6+
Copyright (c) 2025 Institute for Microelectronics, TU Wien.
77

88
Permission is hereby granted, free of charge, to any person obtaining a copy
99
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ We recommend using [CPM.cmake](https://github.com/cpm-cmake/CPM.cmake) to consum
9090

9191
* Installation with CPM
9292
```cmake
93-
CPMAddPackage("gh:viennatools/viennacs@1.0.0")
93+
CPMAddPackage("gh:viennatools/viennacs@1.1.0")
9494
```
9595

9696
* With a local installation
@@ -144,8 +144,6 @@ cmake --build build --target format
144144

145145
## Authors
146146

147-
Current contributors: Tobias Reiter, Felix Strasser
148-
149147
Contact us via: [email protected]
150148

151149
ViennaCS was developed under the aegis of the 'Institute for Microelectronics' at the 'TU Wien'.

cmake/cpm.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ endif()
1717
get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)
1818

1919
file(DOWNLOAD
20-
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
21-
${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM})
20+
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
21+
${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM})
2222

2323
include(${CPM_DOWNLOAD_LOCATION})

include/viennacs/csAtomicLayerProcess.hpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,14 +204,21 @@ template <class NumericType, int D> class AtomicLayerProcess {
204204
const NumericType dtdx2 = dt / (gridDelta * gridDelta);
205205

206206
// shared
207-
const unsigned numThreads = omp_get_max_threads();
207+
unsigned numThreads = 1;
208+
#ifdef _OPENMP
209+
numThreads = omp_get_max_threads();
210+
#endif
208211
std::vector<NumericType> newFlux(cellType->size(), 0.);
209212
std::vector<std::vector<NumericType>> reduceFluxes(numThreads);
210213

211214
#pragma omp parallel
212215
{
213216
// local
214-
auto &reduceFlux = reduceFluxes[omp_get_thread_num()];
217+
int p = 0;
218+
#ifdef _OPENMP
219+
p = omp_get_thread_num();
220+
#endif
221+
auto &reduceFlux = reduceFluxes[p];
215222
reduceFlux.resize(cellType->size(), 0.);
216223

217224
#pragma omp for

include/viennacs/csBVH.hpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ using namespace viennacore;
1111
template <class T, int D> class BVH {
1212
private:
1313
using BVPtrType = SmartPointer<BoundingVolume<T, D>>;
14-
using BoundsType = Vec2D<std::array<T, D>>;
14+
using BoundsType = std::array<VectorType<T, D>, 2>;
1515
using CellIdsPtr = std::set<unsigned> *;
1616

1717
unsigned numLayers = 1;
@@ -24,13 +24,11 @@ template <class T, int D> class BVH {
2424

2525
BVPtrType getTopBV() { return BV; }
2626

27-
void getLowestBVBounds(const std::array<T, 3> &point) {
27+
void getLowestBVBounds(const Vec3D<T> &point) {
2828
BV->getBoundingVolumeBounds(point);
2929
}
3030

31-
CellIdsPtr getCellIds(const std::array<T, 3> &point) {
32-
return BV->getCellIds(point);
33-
}
31+
CellIdsPtr getCellIds(const Vec3D<T> &point) { return BV->getCellIds(point); }
3432

3533
void clearCellIds() { BV->clear(); }
3634

0 commit comments

Comments
 (0)