Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generalize atoms clamping #2

Open
CedricTravelletti opened this issue Jan 9, 2024 · 4 comments
Open

Generalize atoms clamping #2

CedricTravelletti opened this issue Jan 9, 2024 · 4 comments

Comments

@CedricTravelletti
Copy link
Contributor

CedricTravelletti commented Jan 9, 2024

As described in #1 (comment) , one should be able to restrict atoms movement along a submanifold, e.g. certain atoms are allowed to slide on a surface.
Currently atoms are either completely clamped or not.

Possible implementation directions include:

  • Using constraints in OptimizationFunction (see docs).
  • Using optimization on manifolds: Manopt.jl.
@cortner
Copy link
Member

cortner commented May 17, 2024

there is a question whether this should be part of Geometry optimization or part of AtomsBase. Is the constraint part of the system or part of the simulation? E.g. I can see that one might want to do other kinds of simulation tasks with the same constraints....

@rkurchin
Copy link

I vaguely recall a conversation to this effect on one of the Zoom calls (or maybe it was at JuliaCon hackathon last summer?). If I had to pick one, I think I'd say it's part of the simulation, but it's probably really a separate thing and if we could make it "portable" in the sense you describe, that would be ideal.

@cortner
Copy link
Member

cortner commented May 20, 2024

Maybe the AtomsBase interface should be extended for managing constraints but not necessarily provide implementations of constraints or just very simple examples.

I am also very unsure about this tbh.

@mfherbst
Copy link
Member

Often when people setup structures they provide "additional atoms" not because they care about them, but only because that is needed for the modelling. From the philosophical point of view it's thus a numerical trick, but from the practitioner point of view I think it will be very confusing to have this separated from the structure. I think the practical expectation is more that you set up your system (including the constraints) and then just apply certain computational methods to it, that all do their best to respect the constraints.

But I agree with the general uncertainty how to handle this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants