Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
fc5c950
fix(ocineb): restore climbing image when MMF does not help
HaoZeke Aug 21, 2026
83d58f0
fix(lbfgs): match OPTIM RMS stop and drop the FD first step
HaoZeke Aug 21, 2026
b15596d
docs(optimizer): keep ||F||_2 as default; document rms as opt-in
HaoZeke Aug 21, 2026
4225908
feat(lbfgs): Powell damping and optional rigid-body projection
HaoZeke Aug 21, 2026
15e2709
feat(lbfgs): Zhang-Xu secant, Packwood precon, Li-Fukushima, Al-Baali
HaoZeke Aug 21, 2026
1515635
docs(lbfgs): Zhang-Xu and Packwood Exp are opt-in for a reason
HaoZeke Aug 21, 2026
04ae618
feat(lbfgs): Lindh model Hessian and Mones pair Hessian
HaoZeke Aug 21, 2026
362aeee
feat(lbfgs): pair_abs uses |V''| so attractive LJ pairs remain
HaoZeke Aug 21, 2026
7455515
docs(lbfgs): pair vs pair_abs and which precon belongs where
HaoZeke Aug 21, 2026
5d59480
feat(lbfgs): Banerjee RFO and shifted Newton on the pair Hessian
HaoZeke Aug 21, 2026
2662d4f
docs(lbfgs): document Newton and RFO pair-Hessian steps
HaoZeke Aug 21, 2026
d0e94e8
feat(optimizer): call xtsci Newton/RFO instead of an L-BFGS step
HaoZeke Aug 21, 2026
28296fe
feat(schema): wire xtsci optimizer through Cap'n Proto SSoT
HaoZeke Aug 21, 2026
e5b0be3
feat(schema): model xtsci as an engine with its method catalog
HaoZeke Aug 21, 2026
4a371fe
fix(ocineb): do not default unhelpful-MMF restore
HaoZeke Aug 21, 2026
cd50a7e
docs(ocineb): extra restore is optional; Frontiers used it off
HaoZeke Aug 21, 2026
ef994f1
style(client): clang-format LBFGS, OCINEB, xtsci, and INI
HaoZeke Aug 21, 2026
d7c4720
fix(lbfgs): default accept is none; restore FD H0
HaoZeke Aug 21, 2026
dfc2dd7
fix(ocineb): score MMF help on the walked image
HaoZeke Aug 21, 2026
2d54ddf
fix(xtsci): run one full xts_minimize on the first eOn step
HaoZeke Aug 21, 2026
3bc0dc0
fix(xtsci): hold an xts_solver_t and take one step per host iteration
HaoZeke Aug 21, 2026
1c12d51
feat(xtsci): map lbfgs_step and lbfgs_precon onto the session
HaoZeke Aug 22, 2026
2b13037
feat(params): first-class [Xtsci] qn_step and precon
HaoZeke Aug 22, 2026
93007ea
feat(xtsci): prefer [Xtsci] qn_step and precon
HaoZeke Aug 22, 2026
86de53e
feat(params): first-class [Xtsci] accept
HaoZeke Aug 22, 2026
4502537
fix(xtsci): one potential call per geometry
HaoZeke Aug 22, 2026
5306ba2
fix(xtsci): rematch clip, rigid projection, and cautious pairs
HaoZeke Aug 22, 2026
c5fff84
fix(xtsci): keep the PES cache across host steps
HaoZeke Aug 22, 2026
428ae5f
fix(xtsci): do not setPositions after the accepted oracle
HaoZeke Aug 22, 2026
2c16d10
fix(xtsci): keep solver x, do not reread Matter positions
HaoZeke Aug 22, 2026
9b63106
fix(xtsci): do not dirty a geometry isConverged already evaluated
HaoZeke Aug 22, 2026
deb2df5
feat(xtsci): expose fire, fire2, bb, and dogleg method tokens
HaoZeke Aug 22, 2026
424680e
feat(opt): add Lindh-full, Swart, Fischer, and Schlegel model Hessians
HaoZeke Aug 22, 2026
33240ab
feat(xtsci): wire [Xtsci] highs through SSoT and the adapter
HaoZeke Aug 22, 2026
ff5996d
feat(xtsci): wire [Xtsci] manifold through SSoT and the adapter
HaoZeke Aug 22, 2026
2767fc7
feat(xtsci): wire Sella rigid_quotient and mw_rigid manifolds
HaoZeke Aug 22, 2026
c8c8902
feat(xtsci): pass Matter PBC into Sella proj_rot
HaoZeke Aug 22, 2026
f56f1ce
fix(wheels): pin nanobind 2.x on manylinux
HaoZeke Aug 23, 2026
692e99c
fix(wheels): pin isolated-build nanobind to 2.x
HaoZeke Aug 23, 2026
866912a
fix(bind): call nanobind 3 keep_alive_py
HaoZeke Aug 23, 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
26 changes: 26 additions & 0 deletions client/HelperFunctions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,9 @@ eonc::helpers::convergenceMetricLabel(std::string_view metric) {
if (metric == "norm") {
return "||Force||";
}
if (metric == "rms") {
return "RMS force";
}
return std::nullopt;
}

Expand Down Expand Up @@ -293,6 +296,10 @@ class MatterObjectiveFunction : public ObjectiveFunction {
double getConvergence() {
if (params.optimizer_options.convergence_metric == "norm") {
return m_matter.getForcesFreeV().norm();
} else if (params.optimizer_options.convergence_metric == "rms") {
const VectorXd f = m_matter.getForcesFreeV();
const auto n = f.size();
return n > 0 ? f.norm() / std::sqrt(static_cast<double>(n)) : 0.0;
} else if (params.optimizer_options.convergence_metric == "max_atom") {
return m_matter.maxForce();
} else if (params.optimizer_options.convergence_metric == "max_component") {
Expand All @@ -308,6 +315,25 @@ class MatterObjectiveFunction : public ObjectiveFunction {
VectorXd difference(const VectorXd &a, const VectorXd &b) {
return m_matter.pbcV(a - b);
}
VectorXd getMasses() const override {
const auto all = m_matter.getMasses();
const auto mask = m_matter.getFree();
VectorXd out(m_matter.numberOfFreeAtoms());
long k = 0;
for (long i = 0; i < m_matter.numberOfAtoms(); ++i) {
if (mask.row(i).sum() > 0.5) {
out[k++] = all[i];
}
}
return out;
}
bool getPeriodic() const override { return m_matter.getPeriodic(); }
void minimumImage(Eigen::Ref<Eigen::Vector3d> dr) const override {
AtomMatrix m(1, 3);
m.row(0) = dr.transpose();
m = m_matter.pbc(m);
dr = m.row(0).transpose();
}
};
} // namespace

Expand Down
Loading
Loading