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

external calculator interface #13

Open
stenczelt opened this issue Jan 10, 2021 · 4 comments
Open

external calculator interface #13

stenczelt opened this issue Jan 10, 2021 · 4 comments

Comments

@stenczelt
Copy link
Contributor

Dear PyGSM developers,

I was wondering if you can guide me in how to implement an external calculator interface for this package. I am normally using ASE and calculators there or derived from their code.

So far I understood that for a calculator, I need to derive a class from base_lot.Lot and calculate the energy and gradients (forces) from the positions given. Though I am not entirely sure form the code how multiplicity and state should be handled, particularly if I am not worried about the multiplicity at all.

With a bit of guidance I would be happy to try this and use an ASE calculator here, then merge the interface code in here if you want to keep it.

@craldaz
Copy link
Member

craldaz commented Jan 11, 2021

For the ASE calculator I think it should be very easy because it is python.

A good example to look at and model the ASE "lot" is xtb_lot.py

For example, in the recent commits the only function that needs to be programmed is the def run(self,geom,multiplicity,state,verbose=False)

I'm not familiar with how ASE works but it should be straightforward to write this function.

Let me know how it goes.

@mkrompiec
Copy link

A general ASE Lot (taking an ASE calculator as argument) would be very useful. @stenczelt can you share your solution?

@stenczelt
Copy link
Contributor Author

I have written a minimal initial version, now I need to test it. Ideally, I would like to test with some dummy interatomic potential that is in ASE and see how it works, then with ORCA for example that is implemented in both this package and that one.

@stenczelt
Copy link
Contributor Author

Particularly I would like to write a wrapper that takes molecules as ASE atoms objects and performs double-ended or single-ended GSM with them, then returns an ASE-readable result object. Ie. if I or my colleagues are using this package, then we really only import that and pass it the objects we have from other parts of the workflow, or run a bash script with xyz files that pops out the results in xyz /+ txt info.

Where should I place this in the package tree?

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

3 participants