Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
cc40ba4
testing commit
PanagiotisAthanasiadis Nov 7, 2025
fd813f1
Test commit
KonstantinosVard Nov 7, 2025
f74b4c3
test
PanagiotisAthanasiadis Nov 7, 2025
61a05e0
Merge branch 'main' of https://github.com/KonstantinosVard/occ_lambda_8
PanagiotisAthanasiadis Nov 7, 2025
1710bee
test on branch
PanagiotisAthanasiadis Nov 7, 2025
05d1afb
added ccache and lld checks
PanagiotisAthanasiadis Nov 22, 2025
357a0a4
moved PES::solve_linear_system to .cpp to compile once
PanagiotisAthanasiadis Nov 22, 2025
7c6e569
Removed unnecessary includes
PanagiotisAthanasiadis Nov 22, 2025
48b8525
Removed unnecessary libraries from integral_engine_df
PanagiotisAthanasiadis Dec 9, 2025
fed5cc0
small changes to cint_interface.h
PanagiotisAthanasiadis Dec 9, 2025
0bfdecb
Removed unnecessary includes from smd_salvation.cpp,occ_cube.cpp,mo.cpp
PanagiotisAthanasiadis Dec 9, 2025
a6bfd19
Removed unnecessary libraries
PanagiotisAthanasiadis Dec 10, 2025
6b9fb28
Removed unnecessary libraries mostly linear_algebra double includes
PanagiotisAthanasiadis Dec 10, 2025
bba5b2b
Removed unnecessary libraries
PanagiotisAthanasiadis Dec 11, 2025
84338ea
Removed unnecessary libraries from source files
PanagiotisAthanasiadis Dec 12, 2025
e6c1810
Removed unnecessary libraries from source files (final)
PanagiotisAthanasiadis Dec 12, 2025
4db8349
fix to removed includes
PanagiotisAthanasiadis Dec 12, 2025
d63aa58
Implemented Unity builds
PanagiotisAthanasiadis Dec 13, 2025
a24e08f
removed temp
PanagiotisAthanasiadis Dec 15, 2025
e6c026b
Merge branch 'main' of https://github.com/KonstantinosVard/occ_lambda_8
PanagiotisAthanasiadis Dec 15, 2025
6ca1d06
Fix gradient bug, clean up build acceleration options
peterspackman Jan 13, 2026
4ec8c86
Remove accidental test file
peterspackman Jan 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ occjs.js
occjs.wasm
wasm/
examples/*
CMakeFiles/

# Node.js
node_modules/
Expand Down
2 changes: 2 additions & 0 deletions 3rdparty/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
set(CMAKE_UNITY_BUILD OFF)

CPMAddPackage(
NAME fmt
GITHUB_REPOSITORY "fmtlib/fmt"
Expand Down
35 changes: 34 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,42 @@ endif()
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

if(SKBUILD)
set(WITH_PYTHON_BINDINGS ON)
set(WITH_PYTHON_BINDINGS ON)
endif()

# Build acceleration options
option(WITH_CCACHE "Use ccache for faster clean rebuilds (if available)" ON)
option(WITH_UNITY_BUILD "Enable unity builds (faster clean builds, slower incremental)" OFF)

# lld is faster on Linux but incompatible with Apple clang on macOS
if(NOT APPLE)
option(WITH_LLD "Use lld linker for faster linking (if available)" ON)
else()
option(WITH_LLD "Use lld linker for faster linking (if available)" OFF)
endif()

if(WITH_CCACHE)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
message(STATUS "Using ccache: ${CCACHE_PROGRAM}")
set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
endif()
endif()

if(WITH_LLD)
find_program(LLD_PROGRAM lld)
if(LLD_PROGRAM)
message(STATUS "Using lld linker: ${LLD_PROGRAM}")
add_link_options("-fuse-ld=lld")
endif()
endif()

if(WITH_UNITY_BUILD)
message(STATUS "Unity builds enabled")
set(CMAKE_UNITY_BUILD ON)
set(CMAKE_UNITY_BUILD_BATCH_SIZE 8)
endif()

if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
include(CTest)
Expand Down
1 change: 0 additions & 1 deletion include/occ/cg/neighbor_atoms.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#pragma once
#include <occ/core/linear_algebra.h>
#include <occ/crystal/crystal.h>
namespace occ::cg {

Expand Down
1 change: 0 additions & 1 deletion include/occ/cg/solvation_contribution.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#pragma once
#include <utility>

namespace occ::cg {

Expand Down
4 changes: 1 addition & 3 deletions include/occ/cg/solvation_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@
#include <occ/cg/neighbor_atoms.h>
#include <occ/cg/solvation_contribution.h>
#include <occ/cg/solvent_surface.h>
#include <occ/core/linear_algebra.h>
#include <string>
#include <vector>


namespace occ::cg {

Expand Down
1 change: 1 addition & 0 deletions include/occ/core/eeq.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#pragma once

#include <occ/core/linear_algebra.h>

Expand Down
1 change: 0 additions & 1 deletion include/occ/core/molecular_axis.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#pragma once
#include <occ/core/linear_algebra.h>
#include <occ/qm/wavefunction.h>
#include <string>
#include <vector>
Expand Down
1 change: 0 additions & 1 deletion include/occ/core/molecule.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
#include <array>
#include <occ/core/atom.h>
#include <occ/core/element.h>
#include <occ/core/linear_algebra.h>
#include <tuple>

namespace occ::core {
Expand Down
1 change: 0 additions & 1 deletion include/occ/core/optimize.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#pragma once
#include <functional>
#include <occ/core/log.h>

namespace occ::core::opt {
Expand Down
1 change: 0 additions & 1 deletion include/occ/core/point_charge.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#pragma once
#include <array>
#include <occ/core/atom.h>
#include <occ/core/linear_algebra.h>

namespace occ::core {

Expand Down
1 change: 0 additions & 1 deletion include/occ/core/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include <chrono>
#include <fmt/core.h>
#include <fmt/ostream.h>
#include <locale>
#include <numeric>
#include <occ/core/linear_algebra.h>
#include <string>
Expand Down
1 change: 0 additions & 1 deletion include/occ/core/vibration.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#pragma once
#include <occ/core/linear_algebra.h>
#include <occ/core/molecule.h>
#include <vector>
#include <string>
Expand Down
1 change: 0 additions & 1 deletion include/occ/crystal/crystal.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#pragma once
#include <occ/core/bondgraph.h>
#include <occ/core/dimer.h>
#include <occ/core/linear_algebra.h>
#include <occ/core/molecule.h>
#include <occ/crystal/asymmetric_unit.h>
#include <occ/crystal/hkl.h>
Expand Down
4 changes: 1 addition & 3 deletions include/occ/dft/seminumerical_exchange.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
#pragma once
#include <occ/core/atom.h>
#include <occ/core/linear_algebra.h>
#include <occ/dft/molecular_grid.h>
#include <occ/qm/integral_engine.h>
#include <occ/qm/mo.h>
#include <vector>


namespace occ::dft::cosx {

Expand Down
2 changes: 0 additions & 2 deletions include/occ/driver/crystal_growth.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#include <occ/cg/solvation_contribution.h>
#include <occ/cg/solvent_surface.h>
#include <occ/core/dimer.h>
#include <occ/core/log.h>
#include <occ/core/molecule.h>
#include <occ/core/point_group.h>
#include <occ/core/timings.h>
Expand All @@ -14,7 +13,6 @@
#include <occ/interaction/pair_energy.h>
#include <occ/interaction/pairinteraction.h>
#include <occ/io/wavefunction_json.h>
#include <occ/qm/wavefunction.h>

namespace occ::driver {

Expand Down
1 change: 0 additions & 1 deletion include/occ/driver/dma_driver.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#pragma once
#include <occ/core/log.h>
#include <occ/dma/dma.h>
#include <occ/qm/wavefunction.h>
#include <ankerl/unordered_dense.h>
Expand Down
3 changes: 1 addition & 2 deletions include/occ/elastic_fit/elastic_fitting.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
#include <occ/core/dimer.h>
#include <occ/elastic_fit/pes.h>
#include <occ/interaction/interaction_json.h>
#include <string>
#include <vector>


namespace occ::elastic_fit {

Expand Down
1 change: 1 addition & 0 deletions include/occ/elastic_fit/monkhorst_pack.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#pragma once
#include <occ/core/linear_algebra.h>

namespace occ::elastic_fit {
Expand Down
23 changes: 3 additions & 20 deletions include/occ/elastic_fit/pes.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,26 +120,9 @@ class PES {
}
}

static inline occ::Mat solve_linear_system(const occ::Mat &A,
const occ::Mat &B,
LinearSolverType solver_type,
double svd_threshold = 1e-12) {
switch (solver_type) {
case LinearSolverType::LU:
return A.lu().solve(B);
case LinearSolverType::SVD: {
Eigen::JacobiSVD<occ::Mat> svd(A,
Eigen::ComputeThinU | Eigen::ComputeThinV);
return svd.solve(B);
}
case LinearSolverType::QR:
return A.householderQr().solve(B);
case LinearSolverType::LDLT:
return A.ldlt().solve(B);
default:
throw std::runtime_error("Unknown linear solver type");
}
}
static occ::Mat solve_linear_system(const occ::Mat &A, const occ::Mat &B,
LinearSolverType solver_type,
double svd_threshold = 1e-12);
};

} // namespace occ::elastic_fit
4 changes: 1 addition & 3 deletions include/occ/elastic_fit/potentials.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
#pragma once
#include <cmath>
#include <occ/core/linear_algebra.h>
#include <occ/core/log.h>
#include <occ/crystal/crystal.h>
#include <stdexcept>
#include <string>
#include <vector>


namespace occ::elastic_fit {

Expand Down
2 changes: 1 addition & 1 deletion include/occ/geometry/index_cache.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#pragma once
#include <Eigen/Core>
#include <array>
#include <cstddef>
#include <cstdint>
#include <vector>

namespace occ::geometry {

Expand Down
1 change: 0 additions & 1 deletion include/occ/interaction/energy_model_base.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#pragma once
#include <occ/core/dimer.h>
#include <occ/interaction/pair_energy.h>

namespace occ::interaction {
Expand Down
3 changes: 0 additions & 3 deletions include/occ/io/cifparser.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
#pragma once
#include <ankerl/unordered_dense.h>
#include <gemmi/cif.hpp>
#include <iostream>
#include <map>
#include <occ/crystal/crystal.h>
#include <occ/io/occ_input.h>
#include <regex>
#include <string>

namespace occ::io {
Expand Down
3 changes: 0 additions & 3 deletions include/occ/io/fchkwriter.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
#pragma once
#include <ankerl/unordered_dense.h>
#include <array>
#include <fstream>
#include <istream>
#include <occ/core/linear_algebra.h>
#include <occ/qm/shell.h>
#include <occ/qm/spinorbital.h>
#include <variant>
#include <vector>

namespace occ::io {

Expand Down
1 change: 0 additions & 1 deletion include/occ/io/moldenreader.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#include <occ/qm/spinorbital.h>
#include <optional>
#include <string>
#include <vector>

namespace occ::io {

Expand Down
1 change: 0 additions & 1 deletion include/occ/io/occ_input.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <occ/crystal/crystal.h>
#include <occ/io/grid_settings.h>
#include <occ/qm/spinorbital.h>
#include <vector>

namespace occ::io {
using occ::core::Element;
Expand Down
1 change: 0 additions & 1 deletion include/occ/io/orca_json.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
#include <fstream>
#include <istream>
#include <occ/core/atom.h>
#include <occ/core/linear_algebra.h>
#include <occ/qm/shell.h>
#include <occ/qm/spinorbital.h>
#include <string>
Expand Down
10 changes: 5 additions & 5 deletions include/occ/isosurface/point_functors.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ struct PromolDensityFunctor {
std::vector<pfimpl::AtomInterpolator> atom_interpolators;
};

struct ElectronDensityFunctor {
ElectronDensityFunctor(const Wavefunction &wfn,
struct Point_ElectronDensityFunctor {
Point_ElectronDensityFunctor(const Wavefunction &wfn,
SpinConstraint spin = SpinConstraint::Total);
void operator()(Eigen::Ref<const Mat3N> points, Eigen::Ref<Vec> dest);

Expand All @@ -72,13 +72,13 @@ struct ElectronDensityFunctor {
int mo_index{-1};
};

struct DeformationDensityFunctor {
DeformationDensityFunctor(const Wavefunction &wfn,
struct Point_DeformationDensityFunctor {
Point_DeformationDensityFunctor(const Wavefunction &wfn,
SpinConstraint = SpinConstraint::Total);
void operator()(Eigen::Ref<const Mat3N> points, Eigen::Ref<Vec> dest);

PromolDensityFunctor pro_func;
ElectronDensityFunctor rho_func;
Point_ElectronDensityFunctor rho_func;
};

struct XCDensityFunctor {
Expand Down
1 change: 0 additions & 1 deletion include/occ/main/occ_elastic_fit.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#pragma once
#include <CLI/App.hpp>
#include <occ/crystal/crystal.h>
#include <occ/elastic_fit/monkhorst_pack.h>
#include <occ/elastic_fit/pes.h>
#include <occ/elastic_fit/potentials.h>
Expand Down
33 changes: 4 additions & 29 deletions include/occ/qm/cint_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,17 +146,9 @@ class IntegralEnvironment {
}
}

void set_common_origin(const std::array<double, 3> &origin) {
m_env_data[libcint::common_origin_offset] = origin[0];
m_env_data[libcint::common_origin_offset + 1] = origin[1];
m_env_data[libcint::common_origin_offset + 2] = origin[2];
}
void set_common_origin(const std::array<double, 3> &origin);

void set_rinv_origin(const std::array<double, 3> &origin) {
m_env_data[libcint::rinv_origin_offset] = origin[0];
m_env_data[libcint::rinv_origin_offset + 1] = origin[1];
m_env_data[libcint::rinv_origin_offset + 2] = origin[2];
}
void set_rinv_origin(const std::array<double, 3> &origin);

void set_rinv_zeta(double zeta) {
m_env_data[libcint::rinv_zeta_offset] = zeta;
Expand Down Expand Up @@ -556,25 +548,8 @@ class IntegralEnvironment {
m_env_data[libcint::range_omega_offset] = omega;
}

inline void print() const {
fmt::print("Atom Info {}\n", m_atom_info.size());
for (const auto &atom : m_atom_info) {
fmt::print("{} {} {} {} {} {}\n", atom.data[0], atom.data[1],
atom.data[2], atom.data[3], atom.data[4], atom.data[5]);
}
fmt::print("Basis Info {}\n", m_basis_info.size());
for (const auto &sh : m_basis_info) {
fmt::print("{} {} {} {} {} {}\n", sh.data[0], sh.data[1], sh.data[2],
sh.data[3], sh.data[4], sh.data[5], sh.data[6], sh.data[7]);
}
fmt::print("Env Data {}\n", m_env_data.size());
for (size_t i = 0; i < m_env_data.size(); i++) {
fmt::print("{:12.6f} ", m_env_data[i]);
if (i > 0 && (i % 6 == 0))
fmt::print("\n");
}
fmt::print("\n");
}
void print() const ;


inline size_t buffer_size_1e(const Operator op = Operator::overlap,
int grad = 0) const {
Expand Down
7 changes: 1 addition & 6 deletions include/occ/qm/integral_engine.h
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
#pragma once
#include <array>
#include <occ/core/atom.h>
#include <occ/core/log.h>
#include <occ/core/multipole.h>
#include <occ/core/parallel.h>
#include <occ/core/timings.h>
#include <occ/qm/cint_interface.h>
#include <occ/qm/expectation.h>
#include <occ/qm/mo.h>
#include <occ/qm/shell.h>
#include <occ/qm/shellblock_norm.h>
#include <optional>
#include <unsupported/Eigen/CXX11/Tensor>
#include <vector>


#if HAVE_ECPINT
#include <libecpint.hpp>
Expand Down
Loading