# Imperial Materials Simulation
Molecular simulation tool made for the theory and simulation module taken by materials science and engineering undergraduates at Imperial College London.

It models the forces acting on a molecule in different situations and displays the results live using an interactive Jupyter notebook dashboard.
## Method
Each polymer is a linear string of beads (CH2 units) with no side chains. Bonds are modelled as springs and long range interactions are modelled using a 12-6 Lennard-Jones potential.
Four methods of atomistic simulation are implemented:
1. Steepest descent structural relaxation / energy minimization.
2. Constant temperature ('NVT') dynamics with a Langevin thermostat.
3. Constant energy Hamiltonian ('NVE') molecular dynamics.
4. Metropolis Monte Carlo ('MMC') stochastic model.
For each time step, the forces and potentials of each atom are calculated. This allows for their positions and velocities to be updated following the given atomistic simluation method.
## Installation
This library can be installed from pypi:
pip install imperial-materials-simulation
For developement use, the codebase can be cloned from GitHub:
git clone https://github.com/AyhamSaffar/imperial-materials-simulation.git
Dependancies for developement use can optionally be installed using the dedicated conda enviroment:
conda config --add channels conda-forge
conda create --name sim_env --file conda_env.txt
## Usage
All examples shown can be found in the examples notebook.
All functionality and details are well documented in the doc-strings of the main Simulation class and its methods.
*Minimal use*

*Data collection*

*Detailed Analysis*

## Support
Any issues with the library should be raised directly with Paul Tangney.
There is a known bug that sometimes makes the .display() method show a column of plots at once. This is being worked on, but for the moment can be fixed with a quick computer restart.
## Roadmap
The following features could be implemented down the road following popular demand:
- Replace MatPlotLib graphs in display with Plotly for a faster & more responsive dashboard (especially when its live updating during longer runs).
- Add run .xyz trajectory exporter for better integration with external software.
- Added support for charged functional groups on the simulated molecule and a VRORV integrator to better account for the added electrostatic forces.
- Add artist to run dataframe on dashboard so numbers are displayed in scientific format and the row for the current run gets highlighted.
## Authors and Acknowledgment
This program was written by me, Ayham Al-Saffar, based on Paul Tangney's initial codebase and was funded by an Imperial College London Student Shapers grant.
Raw data
{
"_id": null,
"home_page": "https://github.com/AyhamSaffar/imperial-materials-simulation",
"name": "imperial-materials-simulation",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Ayham Al-Saffar",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/81/35/549e76af3acf16eaa41c77b963d722d57b7bb2273fea654476c0765872b4/imperial_materials_simulation-1.0.2.tar.gz",
"platform": null,
"description": "# Imperial Materials Simulation\r\n\r\nMolecular simulation tool made for the theory and simulation module taken by materials science and engineering undergraduates at Imperial College London.\r\n\r\n\r\n\r\nIt models the forces acting on a molecule in different situations and displays the results live using an interactive Jupyter notebook dashboard.\r\n\r\n## Method\r\n\r\nEach polymer is a linear string of beads (CH2 units) with no side chains. Bonds are modelled as springs and long range interactions are modelled using a 12-6 Lennard-Jones potential.\r\n\r\nFour methods of atomistic simulation are implemented: \r\n\r\n1. Steepest descent structural relaxation / energy minimization.\r\n\r\n2. Constant temperature ('NVT') dynamics with a Langevin thermostat. \r\n\r\n3. Constant energy Hamiltonian ('NVE') molecular dynamics.\r\n\r\n4. Metropolis Monte Carlo ('MMC') stochastic model.\r\n\r\nFor each time step, the forces and potentials of each atom are calculated. This allows for their positions and velocities to be updated following the given atomistic simluation method.\r\n\r\n## Installation\r\n\r\nThis library can be installed from pypi:\r\n\r\n pip install imperial-materials-simulation\r\n\r\nFor developement use, the codebase can be cloned from GitHub:\r\n\r\n git clone https://github.com/AyhamSaffar/imperial-materials-simulation.git\r\n\r\nDependancies for developement use can optionally be installed using the dedicated conda enviroment:\r\n\r\n conda config --add channels conda-forge\r\n\r\n conda create --name sim_env --file conda_env.txt\r\n\r\n## Usage\r\n\r\nAll examples shown can be found in the examples notebook.\r\n\r\nAll functionality and details are well documented in the doc-strings of the main Simulation class and its methods. \r\n\r\n*Minimal use*\r\n\r\n\r\n\r\n*Data collection*\r\n\r\n\r\n\r\n*Detailed Analysis*\r\n\r\n\r\n\r\n## Support\r\n\r\nAny issues with the library should be raised directly with Paul Tangney.\r\n\r\nThere is a known bug that sometimes makes the .display() method show a column of plots at once. This is being worked on, but for the moment can be fixed with a quick computer restart.\r\n\r\n## Roadmap\r\n\r\nThe following features could be implemented down the road following popular demand:\r\n\r\n- Replace MatPlotLib graphs in display with Plotly for a faster & more responsive dashboard (especially when its live updating during longer runs).\r\n\r\n- Add run .xyz trajectory exporter for better integration with external software.\r\n\r\n- Added support for charged functional groups on the simulated molecule and a VRORV integrator to better account for the added electrostatic forces.\r\n\r\n- Add artist to run dataframe on dashboard so numbers are displayed in scientific format and the row for the current run gets highlighted.\r\n\r\n## Authors and Acknowledgment\r\n\r\nThis program was written by me, Ayham Al-Saffar, based on Paul Tangney's initial codebase and was funded by an Imperial College London Student Shapers grant.\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Molecular simulation tool made for the theory and simulation module taken by materials science and engineering undergraduates at Imperial College London",
"version": "1.0.2",
"project_urls": {
"Homepage": "https://github.com/AyhamSaffar/imperial-materials-simulation"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "435d87f6112e3e85676cb061c29f899783d2d05658657a0ed586b6208cea60d2",
"md5": "b54f6c1eb74b2f8960a9290b399017e8",
"sha256": "fefba6ae8bdb69e750d876274e499a91fac7d1f63aaf72230273fcf8be3b9dba"
},
"downloads": -1,
"filename": "imperial_materials_simulation-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b54f6c1eb74b2f8960a9290b399017e8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.9",
"size": 14830,
"upload_time": "2024-08-18T22:24:47",
"upload_time_iso_8601": "2024-08-18T22:24:47.650464Z",
"url": "https://files.pythonhosted.org/packages/43/5d/87f6112e3e85676cb061c29f899783d2d05658657a0ed586b6208cea60d2/imperial_materials_simulation-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8135549e76af3acf16eaa41c77b963d722d57b7bb2273fea654476c0765872b4",
"md5": "d3d96a738ef21a59fda11a9ee51c1945",
"sha256": "7675437b7cfe305a8cdbf48597f361ba566b411d7fb0a900b00bb6caeb101602"
},
"downloads": -1,
"filename": "imperial_materials_simulation-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "d3d96a738ef21a59fda11a9ee51c1945",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.9",
"size": 14606,
"upload_time": "2024-08-18T22:24:49",
"upload_time_iso_8601": "2024-08-18T22:24:49.152608Z",
"url": "https://files.pythonhosted.org/packages/81/35/549e76af3acf16eaa41c77b963d722d57b7bb2273fea654476c0765872b4/imperial_materials_simulation-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-18 22:24:49",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "AyhamSaffar",
"github_project": "imperial-materials-simulation",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "imperial-materials-simulation"
}