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

Enable CabanaMC functionality #33

Open
1 of 4 tasks
streeve opened this issue Feb 10, 2020 · 5 comments
Open
1 of 4 tasks

Enable CabanaMC functionality #33

streeve opened this issue Feb 10, 2020 · 5 comments
Assignees
Labels
enhancement New feature or request

Comments

@streeve
Copy link
Member

streeve commented Feb 10, 2020

  • Break up cmake file into library and executable (to simplify work of adding multiple executables).
  • Create a test for energy calculations.
  • Build class/template-based input method for molecular topologies.
  • Create simplified route to calculation of Delta E-values.

(add frobnitzem)

@streeve streeve added the enhancement New feature or request label Feb 10, 2020
@streeve streeve self-assigned this Feb 10, 2020
@streeve
Copy link
Member Author

streeve commented Feb 20, 2020

To continue on this, @frobnitzem, can you tell me a bit more about what you would ultimately need?

I'm close to adding unit tests, but will the lammps style data input be sufficient, or do you use other tools? And what type of force fields are you envisioning?

@frobnitzem
Copy link
Contributor

frobnitzem commented Feb 21, 2020

I'm working on one of these tests now. I want to re-do the system setup into a datastructure that sets up box shape and other globals (read with yaml?) and a C++ code responsible for creating atom positions and running the actual MD steps. NAMD uses TCL scripts to write MD protocols, and LAMMPS uses its own DSL, but I say why not define a DSL-like API and just use C++ code?
Eventually, I'd like to have distinct Hamiltonian and Molecule datastructures.

@frobnitzem
Copy link
Contributor

The new branch is under development at https://github.com/frobnitzem/CabanaMD/tree/tests. Right now, the test itself isn't working, but it simplifies lattice gen. code while adding LATTICE_BCC, changes shutdown/finalize to use C++ destructors, and fixes two memory management bugs (no delete on shutdown, comm used uninitialized at one point).

@streeve
Copy link
Member Author

streeve commented Feb 29, 2020

Overall this sounds good to me. A few things - it's important to keep the LAMMPS compatible inputs in so far as this is a proxy app meant (in part) to represent LAMMPS and integrate improvements back and forth.

Of course I'm not opposed to added capabilities, but at some point the cutoff between a proxy app and a full-feature app has to be determined. This would probably be the point at which some specific LAMMPS style and capabilities could be safely removed.

One other note on the system setup - we're planning on merging the Cabana sister library, Cajita (particle-grid operations), into the Cabana repository to simplify things even further for CabanaMD: ECP-copa/Cabana#197

@frobnitzem
Copy link
Contributor

IMHO, the input file was LAMMPS's worst design decision. It forces the user to write a series of updates to a bunch of undefined data structures they can't see, and proliferates command-names instead of creating a programming model. Using a LAMMPS-type input file will force this project to be monolothic and non-extensible.

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

No branches or pull requests

2 participants