Coder Social home page Coder Social logo

d-meiser / cold-atoms Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 5.0 3.18 MB

A tool box for cold-atom simulations.

License: GNU General Public License v3.0

Python 45.30% C 45.48% Shell 0.85% Batchfile 3.07% PowerShell 5.30%
cold-atom-simulations quantum-optics numerical-simulations

cold-atoms's Introduction

Build Status AppVeyor Coverage Status Stories in Ready

What is it?

The cold-atoms library is a tool box for the simulation of ensembles of neutral atoms or ions for atomic, molecular, and optical physics (AMO) experiments. Its design goals and principles are:

  • Enable rapid and interactive experimentation and exploration. In our opinion, the best way of using the cold-atoms library is in a jupyter notebook. High performance computing workflows including massive compute jobs at large scale are not a primary focus.
  • cold-atoms aims to be a loose collection of tools rather than an opinionated framework.
  • Coherence and unity of the library is ensured by the consistent use numpy arrays as a simple representation for most kinds of data. "It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures." —Alan Perlis
  • When the choice is between "easy" and "simple" we choose simple. Cold atoms experiments and their simulation needs are much too varied for us to come up with easy solutions that work well for many users.

Computationally, we represent atomic ensembles as collections of point particles with data describing their internal state. In this way, cold-atoms' approach is similar to that of a molecular dynamics simulation or a tracking code for the simulation of particle accelerators. Simulations requiring a fluid representation of the particles, wave mechanics (e.g. Bose-Einstein condensates), or a correct account of quantum statistics are beyond the scope of the cold-atoms library.

Getting started

Currently, the best way to obtain and use the cold-atoms library is by downloading and building its source. We recommend installing cold-atoms and its dependencies into a python sandbox. Installing into a sandbox is possible without super-user privileges and there is no risk of breaking the system python distribution.

Linux

# Download the package source from github.
git clone https://github.com/d-meiser/cold-atoms

cd cold-atoms

# Download external dependencies.
pip install -r requirements.txt

# Build package.
python setup.py develop

# Run the tests of the package.
nosetests

# Install the package.
pip install .

# Have a look at the examples.
cd examples
jupyter notebook &

Mac

The instructions given for Linux above should work for Mac as well.

Windows

Windows users may wish to check out cold-atoms' appveyor project. Binary installers and package files can be downloaded from the artifacts of a recent build of the master branch. The 32bit builds are currently broken and they 64bit builds have not been tested nearly as thoroughly as the linux or windows builds. Any help in improving the state of the windows package is greatly appreciated.

Contributing

If you wish to contribute to this project, please do the following:

  • Fork and clone source from GitHub.
  • Make sure all tests run on your system.
  • Make your changes on a new branch without breaking any tests.
  • Open a pull request on GitHub.

All python code should adhere to PEP8 and we use the linux kernel style guide for C code.

To file a ticket pleas use the github issue tracker.

License

cold-atoms is distributed under the GPLv3 license. See the license file for details.

Acknowledgements

The cold-atoms library relies on a number of open source libraries including

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.