{"id":13416060,"url":"https://github.com/TeamAtomECS/AtomECS","last_synced_at":"2025-03-14T23:31:16.114Z","repository":{"id":40246804,"uuid":"305726605","full_name":"TeamAtomECS/AtomECS","owner":"TeamAtomECS","description":"Cold atom simulation code","archived":false,"fork":false,"pushed_at":"2023-04-20T11:31:02.000Z","size":5700,"stargazers_count":45,"open_issues_count":20,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-10T05:23:17.067Z","etag":null,"topics":["amop","atoms","ecs","laser-cooling","physics"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TeamAtomECS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-20T14:00:39.000Z","updated_at":"2024-05-30T13:52:49.781Z","dependencies_parsed_at":"2024-05-30T14:07:54.376Z","dependency_job_id":null,"html_url":"https://github.com/TeamAtomECS/AtomECS","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamAtomECS%2FAtomECS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamAtomECS%2FAtomECS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamAtomECS%2FAtomECS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamAtomECS%2FAtomECS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TeamAtomECS","download_url":"https://codeload.github.com/TeamAtomECS/AtomECS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243663478,"owners_count":20327299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amop","atoms","ecs","laser-cooling","physics"],"created_at":"2024-07-30T21:00:53.964Z","updated_at":"2025-03-14T23:31:15.684Z","avatar_url":"https://github.com/TeamAtomECS.png","language":"Rust","funding_links":[],"categories":["Software"],"sub_categories":["Theory"],"readme":"# AtomECS\n\u003e Simulate cold atoms with rust.\n\n\n\nPaper out now on [arxiv](https://arxiv.org/abs/2105.06447)\n\n**NOTE: Work is ongoing to change the backend from specs to bevy** - see the `bevy` branch and [this issue](https://github.com/TeamAtomECS/AtomECS/issues/3) for details! You can also run a number of demos from the bevy branch in your browser [here](https://teamatomecs.github.io/AtomECSDemos/).\n\n[![crate_version](https://img.shields.io/crates/v/atomecs.svg?style=flat)](https://crates.io/crates/atomecs)\n[![crate_version](https://img.shields.io/badge/docs-latest-blue.svg?style=flat)](https://docs.rs/atomecs)\n[![build](https://github.com/TeamAtomECS/AtomECS/actions/workflows/build.yml/badge.svg)](https://github.com/TeamAtomECS/AtomECS/actions/workflows/build.yml) [![unit_tests](https://github.com/TeamAtomECS/AtomECS/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/TeamAtomECS/AtomECS/actions/workflows/unit-tests.yml)\n\n`atomecs` is a rust crate for simulating ultracold atom experiments. It supports numerous features:\n* Laser-cooling of atoms by optical scattering forces.\n* Doppler forces on atoms that scatter light, including the random fluctuations that give rise to the Doppler temperature limit.\n* Magnetic fields, implemented on a grid or through simple analytical models.\n* Hot atoms generated by an oven.\n* Hot atoms generated on the surface of a simulation volume (eg, to simulate thermal vapor in a chamber).\n* Cooling light beams, defined by their detuning and gaussian intensity profiles.\n* Volumes that define bounds for the simulation.\n* File output in binary or text format.\n* Thorough unit testing to ensure simulation results are correct.\n* Good parallel performance on modern multi-core CPUs.\n* Simulations can be wrapped using python/matlab, as shown in the [source_optimisation_example](https://github.com/TeamAtomECS/source_optimisation_example) or the [matlab examples](https://github.com/TeamAtomECS/matlab_examples).\n* Optical dipole force traps.\n* Confinement of atoms by magnetic fields, e.g. quadrupole and TOP traps.\n\n# Getting Started\n\nInstructions for installing rust can be found on the [rust website](https://www.rust-lang.org/tools/install), which includes the rust toolchain and `cargo` command line tool.\n\nAfter cloning this repository using git, you can run examples using the `cargo` command line tool, e.g. `cargo run --release --example 1d_mot`.\nThe [matlab examples](https://github.com/TeamAtomECS/matlab_examples) show how to load and plot simulation results.\n\nYou can build the program documentation using `cargo doc`.\n\n## Data-oriented design\n\n`atomecs` follows the data-oriented Entity-Component-System (ECS) pattern, which is implemented using [specs](https://github.com/slide-rs/specs).\nECS is well suited to high-performance simulations, and is sufficiently flexible to accomodate changing design goals.\n\n_If you are unfamiliar with data-oriented design - for instance, if you come from an object-oriented background - it is strongly recommended that you read up before diving into the code._ Some useful ECS resources are:\n* Mike Acton's [GDC talk](https://www.youtube.com/watch?v=p65Yt20pw0g), which discusses the advantages of ECS + DOD (in the context of the Unity game engine).\n* The [specs book](https://specs.amethyst.rs/docs/tutorials/) which describes the ECS used in `atomecs`.\n* Although written for Unity/C#, the concepts in the [Unity Entities Package Documentation](https://docs.unity3d.com/Packages/com.unity.entities@0.14/manual/ecs_core.html) are very useful to understand.\n\n## Current Limitations\n\n* atom-atom interactions are not implemented. Most of our current work deals with atom sources, which have low steady-state number densities, so we haven't implemented this. Results for steady-state 3D MOTs should be interpreted carefully.\n\n# Getting Involved\n\nOur goal is to make AtomECS user-friendly, with friendly developers! Please feel free to use the issue tracker to ask questions, or join the conversations happening within the issues.\n\nIf you would like to submit a contribution:\n* Take a look at the issues page to see if there is something suitable for a new user.\n* Freely develop and change your own fork.\n* When a feature is finished, raise a pull request to merge your changes back into the AtomECS repository. The team will openly review your code and suggest changes/improvements.\n\n## The Team\n\nThe current developers of `atomecs` are:\n* Dr. [Elliot Bentine](https://github.com/ElliotB256), Oxford\n* Dr. [Tiffany Harte](https://github.com/tiffanyharte), Cambridge\n* [Xuhui Chen](https://github.com/Pi-sun), Oxford\n* [Maurice Zeuner](https://github.com/MauriceZeuner), Cambridge\n\nThe long term goal for `atomecs` is to have a complete simulation suite for cold atom experiments.\nIf you'd like to get involved in development, please do!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTeamAtomECS%2FAtomECS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTeamAtomECS%2FAtomECS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTeamAtomECS%2FAtomECS/lists"}