ACEsuit / ACE.jl

Parameterisation of Equivariant Properties of Particle Systems
65 stars 15 forks source link

Changing maxdeg results in unexpected force behaviour #19

Closed davkovacs closed 3 years ago

davkovacs commented 3 years ago

When the maxdeg parameter is changed from 1.0 even a bit (to 0.95) to decrease the overall size of the basis set, it causes large errors in the forces (but not in the energies).

cortner commented 3 years ago

CF script and data at

https://github.com/cortner/acebug_david_maxdeg

to test this. Running with maxdeg = 0.95 causes extremely strange results.

cortner commented 3 years ago

@davkovacs did we ever sort this out? I have a vague memory we explained what happened and decided what to do about it, but I'm not sure this constitutes closing the issue?

davkovacs commented 3 years ago

I don't remember explaining it. I think we just settled with not changing maxdeg from 1.0

cortner commented 3 years ago

I see - maybe I'll leave it open and we can revisit after the 2.0 rewrite.

casv2 commented 3 years ago

I think this still is a bug, it's giving me issues too

cortner commented 3 years ago

Can you say more please?

casv2 commented 3 years ago

Essentially it seems that when you set up a basis using /examples/new_degree.jl what happens is that your adjusted basis (controlled by maxdeg) ends up having very weird force test errors.

cortner commented 3 years ago

I don’t understand what this could have to do with training / test errors... it just chooses a basis

casv2 commented 3 years ago

Let me try to put together a MWE

casv2 commented 3 years ago

My bad it has weird force errors for both test/train, I've put together a MWE in the-knowledge/ACE/ACE_basis_bug including my .tomls

cortner commented 3 years ago

In ACE2 I've now introduced a new BasisSelector interface, where all these problems should just go away. There is now a single object, e.g., SparseBasis which takes a basis function as input, e.g.,

bb = [ (n = 2, l = 3, m = -1), (n = 3, l = 2, m = 1), ... ]

and determines things like degree, whether it is part of the basis (isadmissible) etc. Even the correlation-order is part of this interface now and no longer a separate property.