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!
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.