Skip to content

Commit 729059f

Browse files
authored
Refactor: Organize code structure to improve maintainability in pyabacus (#5346)
* fix some typos in `_hsolver.py` * fix some bugs caused by #5134 * Refactor hsolver module and remove unused code * refactor the structure of pythonization source code * fix some bug * Refactor __getattr__ function in __init__.py to handle attribute errors * fix some bugs * Add CONTRIBUTING.md to facilitate contributing to pyabacus project * fix typos * Update CONTRIBUTING.md * Update CONTRIBUTING.md * update README.md and CONTRIBUTING.md * update README.md * update CONTRIBUTING.md * update CONTRIBUTING.md * fix a bug caused by tuple in python3.8 * update
1 parent e4044a4 commit 729059f

File tree

20 files changed

+1034
-188
lines changed

20 files changed

+1034
-188
lines changed

python/pyabacus/CMakeLists.txt

Lines changed: 14 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
cmake_minimum_required(VERSION 3.15...3.26)
22

3+
# project settings
34
project(
45
${SKBUILD_PROJECT_NAME}
56
VERSION ${SKBUILD_PROJECT_VERSION}
67
LANGUAGES CXX)
78

9+
# find python and pybind11
810
find_package(Python REQUIRED COMPONENTS Interpreter Development.Module)
911
find_package(pybind11 CONFIG REQUIRED)
1012

13+
# set source path
1114
set(ABACUS_SOURCE_DIR "${PROJECT_SOURCE_DIR}/../../source")
1215
set(BASE_PATH "${ABACUS_SOURCE_DIR}/module_base")
1316
set(NAO_PATH "${ABACUS_SOURCE_DIR}/module_basis/module_nao")
1417
set(HSOLVER_PATH "${ABACUS_SOURCE_DIR}/module_hsolver")
15-
set(HAMILT_PATH "${ABACUS_SOURCE_DIR}/module_hamilt_general")
1618
set(PSI_PATH "${ABACUS_SOURCE_DIR}/module_psi")
1719
set(ENABLE_LCAO ON)
1820
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/../../cmake")
@@ -63,11 +65,14 @@ else()
6365
endif()
6466
endif()
6567

66-
include_directories(${BASE_PATH}
68+
# add include directories
69+
include_directories(
70+
${BASE_PATH}
6771
${ABACUS_SOURCE_DIR}
68-
${ABACUS_SOURCE_DIR}/module_base/module_container)
72+
${ABACUS_SOURCE_DIR}/module_base/module_container
73+
)
6974

70-
# add library
75+
# add basic libraries
7176
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
7277
# add base
7378
set(BASE_BINARY_DIR "${PROJECT_SOURCE_DIR}/build/base")
@@ -80,83 +85,6 @@ set(ORB_BINARY_DIR "${PROJECT_SOURCE_DIR}/build/orb")
8085
add_subdirectory(${ABACUS_SOURCE_DIR}/module_basis/module_ao ${ORB_BINARY_DIR})
8186
# set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
8287

83-
# add nao shared library
84-
list(APPEND _naos
85-
${NAO_PATH}/atomic_radials.cpp
86-
${NAO_PATH}/beta_radials.cpp
87-
${NAO_PATH}/hydrogen_radials.cpp
88-
${NAO_PATH}/numerical_radial.cpp
89-
${NAO_PATH}/pswfc_radials.cpp
90-
${NAO_PATH}/radial_collection.cpp
91-
${NAO_PATH}/radial_set.cpp
92-
${NAO_PATH}/real_gaunt_table.cpp
93-
${NAO_PATH}/sphbes_radials.cpp
94-
${NAO_PATH}/two_center_bundle.cpp
95-
${NAO_PATH}/two_center_integrator.cpp
96-
${NAO_PATH}/two_center_table.cpp
97-
${NAO_PATH}/projgen.cpp
98-
# dependency
99-
${ABACUS_SOURCE_DIR}/module_base/kernels/math_op.cpp
100-
# ${ABACUS_SOURCE_DIR}/module_psi/kernels/psi_memory_op.cpp
101-
${ABACUS_SOURCE_DIR}/module_base/module_device/memory_op.cpp
102-
)
103-
add_library(naopack SHARED
104-
${_naos}
105-
)
106-
# add diago shared library
107-
list(APPEND _diago
108-
${HSOLVER_PATH}/diago_dav_subspace.cpp
109-
${HSOLVER_PATH}/diago_david.cpp
110-
${HSOLVER_PATH}/diag_const_nums.cpp
111-
${HSOLVER_PATH}/diago_iter_assist.cpp
112-
113-
${HSOLVER_PATH}/kernels/dngvd_op.cpp
114-
${HSOLVER_PATH}/kernels/math_kernel_op.cpp
115-
# dependency
116-
${BASE_PATH}/module_device/device.cpp
117-
${BASE_PATH}/module_device/memory_op.cpp
118-
119-
${HAMILT_PATH}/operator.cpp
120-
${PSI_PATH}/psi.cpp
121-
)
122-
add_library(diagopack SHARED
123-
${_diago}
124-
)
125-
target_link_libraries(diagopack
126-
PRIVATE
127-
${OpenBLAS_LIBRARIES}
128-
${LAPACK_LIBRARIES}
129-
)
130-
# link math_libs
131-
if(MKLROOT)
132-
target_link_libraries(naopack
133-
base
134-
parameter
135-
container
136-
orb
137-
${math_libs}
138-
MPI::MPI_CXX
139-
OpenMP::OpenMP_CXX
140-
)
141-
else()
142-
target_link_libraries(naopack
143-
base
144-
parameter
145-
container
146-
orb
147-
${math_libs}
148-
)
149-
endif()
150-
# list(APPEND _sources ${_naos} ${_bases})
151-
list(APPEND _sources
152-
${PROJECT_SOURCE_DIR}/src/py_abacus.cpp
153-
${PROJECT_SOURCE_DIR}/src/py_base_math.cpp
154-
${PROJECT_SOURCE_DIR}/src/py_m_nao.cpp
155-
${PROJECT_SOURCE_DIR}/src/py_hsolver.cpp
156-
)
157-
pybind11_add_module(_core MODULE ${_sources})
158-
target_link_libraries(_core PRIVATE pybind11::headers naopack diagopack)
159-
target_compile_definitions(_core PRIVATE VERSION_INFO=${PROJECT_VERSION})
16088
# set RPATH
16189
execute_process(
16290
COMMAND "${PYTHON_EXECUTABLE}" -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
@@ -167,9 +95,9 @@ execute_process(
16795
# set package name to pyabacus
16896
set(TARGET_PACK pyabacus)
16997
set(CMAKE_INSTALL_RPATH "${PYTHON_SITE_PACKAGES}/${TARGET_PACK}")
170-
set_target_properties(_core PROPERTIES INSTALL_RPATH "$ORIGIN")
171-
set_target_properties(naopack PROPERTIES INSTALL_RPATH "$ORIGIN")
172-
set_target_properties(diagopack PROPERTIES INSTALL_RPATH "$ORIGIN")
173-
install(TARGETS _core naopack DESTINATION ${TARGET_PACK})
174-
install(TARGETS _core diagopack DESTINATION ${TARGET_PACK})
98+
99+
# add subdirectories for submodules
100+
add_subdirectory(${PROJECT_SOURCE_DIR}/src/hsolver)
101+
add_subdirectory(${PROJECT_SOURCE_DIR}/src/ModuleBase)
102+
add_subdirectory(${PROJECT_SOURCE_DIR}/src/ModuleNAO)
175103

0 commit comments

Comments
 (0)