First of all, thank you for releasing this great package!
I have a question about the geometry optimizer convergence criterion in the 'minimizer' mode. In the appendix your paper Sella, an Open-Source Automation-Friendly Molecular Saddle Point Optimizer, 2022, JCTC, you mentioned that When using constraints, it is necessary to first project out the components of the gradient in the constraint subspace. This is certainly true for equality constraints. However, for inequality constraints, usually there should be an extra condition that the components of the gradient is projected out only when the inequality constraint is active, where active means the current geometry at this constrained IC violates the imposed constraint.
For example, when we limit the bond length of a H2 molecule (at its natural bond length = 74pm) to be larger than 60pm, this inequality constraint is not active so the gradient along the bond direction should not be projected out. If we want to limit the bond length to be 80pm, then the H2 molecule geometry is stretched to 80pm and now the constraint is active, and the force along the bond direction now should be projected out.
First of all, thank you for releasing this great package!
I have a question about the geometry optimizer convergence criterion in the 'minimizer' mode. In the appendix your paper
Sella, an Open-Source Automation-Friendly Molecular Saddle Point Optimizer, 2022, JCTC
, you mentioned thatWhen using constraints, it is necessary to first project out the components of the gradient in the constraint subspace.
This is certainly true for equality constraints. However, for inequality constraints, usually there should be an extra condition that the components of the gradient is projected out only when the inequality constraint is active, whereactive
means the current geometry at this constrained IC violates the imposed constraint.For example, when we limit the bond length of a H2 molecule (at its natural bond length = 74pm) to be larger than 60pm, this inequality constraint is not active so the gradient along the bond direction should not be projected out. If we want to limit the bond length to be 80pm, then the H2 molecule geometry is stretched to 80pm and now the constraint is active, and the force along the bond direction now should be projected out.
I found this function: https://github.com/zadorlab/sella/blob/723756ffa263e7dccf154d01e5e3201e5ab9cc8e/sella/internal.py#L877C1-L888C47
Is this where Sella implements this for inequality constraints?