103 {
104 auto objf = std::make_shared<BGSDObjectiveFunction>(
108 int iteration = 0;
109 QUILL_LOG_DEBUG(
111 "starting optimization of H with params alpha and beta: {:.2f} {:.2f}",
113 while (!objf->isConvergedH() || iteration == 0) {
114 optim->step(
params.optimizer_options.max_move);
116 "iteration {} Henergy, gradientHnorm, and Venergy: "
117 "{:.8f} {:.8f} {:.8f}",
118 iteration, objf->getEnergy(), objf->getGradientnorm(),
119 saddle->getPotentialEnergy());
120 iteration++;
121 }
126 while (!objf2->isConvergedV() || iteration == 0) {
127 if (objf2->isConvergedIP()) {
128 break;
129 };
130 optim2->step(
params.optimizer_options.max_move);
132 "gradient squared iteration {} Henergy, gradientHnorm, "
133 "and Venergy: {:.8f} {:.8f} {:.8f}",
134 iteration, objf2->getEnergy(), objf2->getGradientnorm(),
135 saddle->getPotentialEnergy());
136 iteration++;
137 }
138
140
142 for (
int i = 0; i <
saddle->numberOfAtoms(); i++) {
143 for (int j = 0; j < 3; j++) {
144 if (
saddle->getFixed(i)) {
146 };
147 }
148 }
153 QUILL_LOG_DEBUG(
log,
"lowest eigenvalue {:.8f}",
eigenvalue);
154 if (objf2->isConvergedV()) {
155 return 0;
156 } else if (objf2->isConvergedIP()) {
157 return 1;
158 } else {
159 return 1;
160 };
161}
std::shared_ptr< Potential > pot
const Parameters & params
std::unique_ptr< Optimizer > mkOptim(std::shared_ptr< ObjectiveFunction > a_objf, OptType a_otype, const Parameters &a_params)
AtomMatrix eigenmodeGetEigenvector(EigenmodeStrategy &s)
Dispatch getEigenvector() to the active variant.
std::shared_ptr< EigenmodeStrategy > buildEigenmodeStrategy(std::shared_ptr< Matter > matter, const Parameters ¶ms, std::shared_ptr< Potential > pot)
Build the eigenmode solver from parameters.
void eigenmodeCompute(EigenmodeStrategy &s, std::shared_ptr< Matter > matter, AtomMatrix direction)
Dispatch compute() to the active variant.
double eigenmodeGetEigenvalue(EigenmodeStrategy &s)
Dispatch getEigenvalue() to the active variant.