Giter Club home page Giter Club logo

ionmd's People

Contributors

mivade avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ionmd's Issues

params.py problem on 64 bit CPUs

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.

Truly optional MPL/Maya/PIL

Need to make it so that matplotlib/maya/PIL are truly optional (exception handling, abort functions if they aren't around, etc.).

Enable -fopenmp with CMake

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
 ^

Directory reorganization and cleanup

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:

  • Probably could either get rid of preseed.txt or move it to some utilities directory or something similar.
  • Future: where should GUI stuff (like ui file) go?
  • 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.

Multiple lasers

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.

Get to work on Windows

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!

Installation help

Hi,

I'm trying to run IonMD however, I was unable to get pass. I'm on Python2.7.6+GCC4.8.2+Ubuntu and installed packages required. I'm now facing 2 questions

  1. By running make, it says h2xml: Command not found
  2. By running python runsim.py, I got ImportError: cannot import name Params on line33.

params has been installed and updated to the latest version via pip, I'm not sure what the problem was. Could you please help me with this?

Thanks.
Fan

Better handling of simulation parameters

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:

  1. One that describes all the simulation parameters that gets passed to the C++ part (i.e., everything in the Params struct.
  2. Another which controls miscellaneous simulation run stuff, such as whether to loop and change parameters, what to display at the end, etc.

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.

Python 3 support

There are currently a lot of problems when doing python -3 runsim.py. This should be fixed.

PEP 8 naming

Python (and for that matter C++) naming convention does not follow PEP 8. This should be changed where practical.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.