How to combine two potentials using a user-defined weighting ratio

I’m wondering whether GPUMD can combine two potentials using a user-defined weighting ratio (e.g., V=aV1+(1−a)V2). I noticed that the manual mentions dump_observer, which seems to offer a similar feature, but it appears to only support averaging over multiple potentials.

Is there any other recommended way to implement a custom weighted combination of two potentials in GPUMD?

As far as I’m aware there currently is no easy way to achieve this. dump_observer is the closest keyword as you say, and in principle the change is as simple as introducing a weighting factor in the sum instead of averaging the potentials. One would need to take a little bit of care to handle more potentials than two, and to ensure that the total forces are still properly normalized. But it shouldn’t be a lot of work to implement this. Contributions are highly appreciated! :slight_smile:

If you only need to run the simulation with a particular mixing, i.e. a single value of a, then one could train a new NEP model that learns the potential V=aV1+(1−a)V2). The benefit with this approach is that it would be twice as fast as using dump_observer.

Thanks for your reply. I will consider your suggestion.

1 Like