Hi,
Here are my comments on the "QEq" part:
* First things first. It bothers me (and many others that work on density functional theory) that the term QEq is so often used for models with variable charges. The pioneering work was in fact done by Mortier et al (in 1985-1986), long before the QEq paper came out (1991). QEq is mostly a reinvention of Mortier's work, with some minor improvements and without all the nice insights from Density Functional Theory. For that reason, I prefer to use Mortier's terminology: the Electronegativity Equalization Method (EEM) instead of Charge Equilibration (QEq). Any model with variable charges is essentially a variant of EEM. It would be nice to reflect this in the KIM API, especially because this community cares so much about provenance. (I'll do this consistently below.)
* It is not so useful to combine plain EEM with long-range electrostatics. One major deficiency/feature of plain EEM is that the entire system exhibits a metallic polarizability scaling. This means that the polarizability scales cubically with the system size. As a consequence, the charges always evolve such that all long-range electrostatics are completely screened away. The current implementation of ReaxFF is therefore fine without long-range electrostatics. This special behavior disappears when restraints or constraints are imposed on the variable charges (except for the usual constraint on the total charge.) As I explain it here, it may seem that metallic polarizability scaling is a good thing but for most simulations, e.g. on dielectric systems, it results in completely erratic electrostatic interactions. Hence, there are several attempts to fix this problem. Alas, if a model fixes it, costly long-range electrostatics become relevant again. For example, at the SES meeting, it was mentioned that COMB uses some restraints in the charge-solver (not in the model). New EEM variants like Nistor's SQE and our ACKS2 fix this polarizability scaling issue in the model.
* The API for EEM-ish models can be simplified. The Model only needs to provide the charge-gradient of the energy as function of the carges, for the part of the energy that is computed in the model. In the case of short-range electrostatics, that gradient can entirely be computed by the model. In case of long-range electrostatics, the long-range part of the gradient must be computed by the Simulator. I think any existing atomistic simulator converges the charges with some sort of self-consistent, conjugate-gradient or minres algorithm. All these algorithms can be implemented in the Simulator, given an API to get (part of) the gradient from the model. The details of the sort-range contributions to that gradient (electronegativity, hardness, off-diagonal terms, ... ) are irrelevant for the API. They completely live in the model space. The constraint on the total charge is better taken care of in the Simulator because (i) it requires some communication in parallel codes and (ii) it is usually not included in the charge-gradient.
* For split-charge equilibration, the situation is more complicated. In that model, the variables are not the charges, but split charges (i.e. charge-transfers) between some (not all!) pairs of atoms. To find the optimal split charges, the model must be able to compute the derivative of the energy toward the split charges. The simulator can then iteratively update the split charges to zero this gradient. This is all very similar to the EEM API, except for two points:
1) The model and the simulator need to agree on a list of atom pairs between which the split-charges are present. This list may not be constant throughout an MD simulation, e.g. when bonds break. This complexity is comparable to the topology in a typical covalent force field.
2) It is computationally easy to transform the charge-gradient to a split-charge gradient, but not the other way around. Hence, in the case of long-range electrostatics, the Simulator needs to carry out a transformation in that way to obtain the long-range contribution to the split-charge gradient.
* One of the reasons we derived the ACKS2 model, is to avoid all the bookkeeping of the split charges in SQE. In ACKS2, every atom has two variables (in the minimal case): an atomic charge and an effective potential. (The effective potential is different from the electrostatic potential. It acts as a genuine variable.) The set of possible ACKS2 models is mathematically speaking a superset of the possible SQE models, so ACKS2 can be used as an "alternative implementation" of SQE with only atomic fluctuating degrees of freedom. This may be more bearable for the KIM API. There are other advantages of ACKS2 as well, but I won't bother you with these. You can read all about it in our recent JCP paper (http://dx.doi.org/10.1063/1.4901513, just published, so free download) and in our first paper on the ACKS2 model (http://dx.doi.org/10.1063/1.4791569, harder to digest than the newest paper, contains proof of equivalence with SQE).
Best Regards,
Toon