Charge constraints

PsiRESP offers two forms of constraints: a ChargeSumConstraint and a ChargeEquivalenceConstraint.

A ChargeSumConstraint constrains one or a group of atoms to a single charge. For example, this is very helpful if you are parametrizing a residue in a large molecule, and you need the cap atoms to sum to 0.

A ChargeEquivalenceConstraint constrains every atom specified to the same charge. For example, you could manually constrain all hydrogens around a single carbon to the same charge. For this reason, a ChargeEquivalenceConstraint must contain at least two atoms.

All of these are contained in ChargeConstraintOptions. ChargeConstraintOptions are passed to a Job. As ChargeConstraintOptions may contain charge constraints for molecules that are not considered in the Job, the job will create MoleculeChargeConstraints to work on. Users should typically not interact with MoleculeChargeConstraints themselves, but let the Job handle it. MoleculeChargeConstraints contains helper methods such as adding symmetry constraints for sp3 hydrogens.