mivade / ionmd Goto Github PK
View Code? Open in Web Editor NEWIon trap molecular dynamics simulations
License: Other
Ion trap molecular dynamics simulations
License: Other
There are currently a lot of problems when doing python -3 runsim.py
. This should be fixed.
Python (and for that matter C++) naming convention does not follow PEP 8. This should be changed where practical.
Using Boost.Python instead of using ctypes could help clean up the code overall (on both the Python and C++ ends) and simplify things in general.
accidental duplicate
As more is being added, the main directory is getting rather messy. I propose changing the structure to something like this:
IonMD
|-- src
| `-- *.cpp
| `-- *.hpp
|-- doc
| `-- <documentation files other than README>
|-- data
|-- images
`-- <python files>
`-- README.rst
`-- COPYING
`-- Makefile
`-- <other stuff, including default.json>
This is just a basic idea; it's likely I'll change this around a lot. It is also not a bad idea to move the generated data files into the data
directory to avoid adding a lot of junk to the root directory.
Other things:
preseed.txt
or move it to some utilities
directory or something similar.runsim.py
should be renamed to something more like ionmd.py
since it will serve to be imported for the run_simulation
function for the future GUI.Currently, simulation parameters are all hard coded into runsim.py
. This is obviously not the best way to handle things, since it decreases code readability and increases the chance of breaking something. One possible alternative would be to use something like JSON to store simulation parameters. This way, runsim.py
would conceivably never need to be touched. This would essentially require two objects:
Params
struct.The JSON file would then look something like this:
{
"control": {
"loop": false,
"plot_trajectory": false,
"plot_fourier": false,
"ionvis.display": true
},
"params": {
"N": 10,
"V": 120,
"U": 0,
"ccd_bins": 768,
"ccd_extent": 1024
}
}
Some rework will still be required since the original plan had been to pickle parameters for easy storage and loading, but this doesn't work since the Params
contains pointers. There either need to be changes there or load/save functions to convert between what C++ wants and what Python wants.
Add ability to have multiple cooling lasers. At the moment this is sort of possible by cleverly choosing a good value for khat
, but one cannot have conterpropagating lasers this way.
CMake output indicates that it works:
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Try OpenMP CXX flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Found OpenMP: -fopenmp
-- Configuring done
... but then building results in the warning
ionmd/ionmd.cpp:48:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel for
^
Params._pack_ = 4
should read Params._pack_ = 8
on 64 bit CPUs. This is either a bug in h2xml
or xml2py
, though there may be an option passable to one or both to fix this. As far as I know, this is only a problem when CCD simulation is enabled.
Running in a virtual machine is not really a good solution. It would be nice to be able to run simulations on more computers throughout the lab which all run Windows!
Need to make it so that matplotlib/maya/PIL are truly optional (exception handling, abort functions if they aren't around, etc.).
Currently, this simply doesn't work. This needs to be investigated and fixed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.