{ "info": { "author": "Georgina L. Wellock", "author_email": "g.l.wellock@bath.ac.uk", "bugtrack_url": null, "classifiers": [], "description": "# `pyscses` - PYthon Space-Charge Site-Explicit Solver\n\n\n\n[![status](http://joss.theoj.org/papers/803ed6dd19f453819bdd3ed9ceadf3b3/status.svg)](http://joss.theoj.org/papers/803ed6dd19f453819bdd3ed9ceadf3b3)\n[![PyPI version](https://badge.fury.io/py/pyscses.svg)](https://badge.fury.io/py/pyscses)\n[![DOI](https://zenodo.org/badge/90385184.svg)](https://zenodo.org/badge/latestdoi/90385184)\n[![Documentation Status](https://readthedocs.org/projects/pyscses/badge/?version=latest)](https://pyscses.readthedocs.io/en/latest/?badge=latest)\n\n`pyscses` is a Python package for modelling ionic space-charges in solid electrolytes. Its primary use is to calculate equilibrium distributions of point-charge atomic defects within one-dimensional “Poisson-Boltzmann”-like mean-field models. These calculations take as inputs a set of defect site positions, within a specific crystal structure, and the associated defect segregation energies. `pyscses` can also be used to calculate ionic transport properties (space-charge resistivities and activation energies) for these equilibrium defect distributions.\n\nOne approach to modelling space-charge formation in solid electrolytes is to consider defects as ideal point-charges embedded in a continuum dielectric, and to calculate equilibrium defect distributions by solving mean-field “Poisson-Boltzmann”-like equations. While numerical solutions to the 1D Poisson-Boltzmann equation are relatively simple to implement, published results are typically obtined using private closed-source codes, making it difficult to reproduce results or to test the effect of different approximations included in specific models. ``pyscses`` provides an open-source Python package for modelling space-charge formation in solid electrolytes, within a 1D Poisson-Boltzmann-like formalism.We are currently using ``pyscses`` in our own research into space-charge formation in solid electrolytes for fuel cells and lithium-ion batteries, and hope that this open-source resource will support reproducible research practices in future studies in this area \\[[1](#SandveEtAl_PLoSComputBiol2013)\\].\n\n``pyscses`` implements a range of numerical models within the general scheme of solving a modified Poisson-Boltzmann equation on a 1D grid:\n- Continuum (regular grid) and site-explicit (irregular grid) models.\n- Periodic and Dirichlet boundary conditions.\n- “Mott-Schottky” and “Gouy-Champman” condtions. These are implemented by setting the mobilities of different defect species. In the case of Mott-Schottky conditions, all but one defect species have a mobility of zero.\n- Inclusion of “lattice”site charges to account for non-defective species in the crystal structure.\n\nProperties that can be calculated include:\n- Defect mole fractions.\n- Charge density.\n- Electrostatic potential.\n- Parallel and perpendicular grain boundary resistivities \\[[2](#HwangEtAl_JElectroceram1999)\\].\n- Grain boundary activation energies \\[[3](#Kim_PhysChemChemPhys2016)\\].\n\nFull mathematical derivations, definitions and example code can be found in the [userguide](https://github.com/bjmorgan/pyscses/blob/master/userguides/notebooks/userguide.ipynb). \n\nA more detailed overview of the code and its capabilities, and of the scientific context of modelling space-charge regions in solids, are given in the [JOSS paper](http://joss.theoj.org/papers/803ed6dd19f453819bdd3ed9ceadf3b3).\n\n## Documentation\n### Userguides\nIntroductory userguides are contained in the [userguide](https://github.com/bjmorgan/pyscses/blob/master/userguides/README.md). Each guide is presented as a [Jupyter notebook](http://jupyter-notebook.readthedocs.io/en/latest/#). The userguides cover the theory behind the Poisson-Boltzmann solver, how to set up a Jupyter notebook to run a calculation and examples of running the calculation under different approximations. These examples include site-explicit versus continuum models, Mott-Schottky (single mobile defect species) and Gouy-Chapman (all defect species mobile) conditions, and running the solver on real data.\n\nThese userguides can also be found in the directory:\n```\npyscses/userguides/userguide.ipynb\n```\nFor online viewing of these userguides, we recommend using [nbviewer](https://nbviewer.jupyter.org). The links below open nbviewer versions of each userguide notebook.\n- [Theory](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Theory.ipynb)\n- [Setting up the notebook](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Setting_up.ipynb)\n- [Running the calculation](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Running.ipynb)\n- [Example 1 - continuum vs. site explicit and boundary conditions](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Ex_1_BC.ipynb)\n- [Example 2 - Mott-Schottky vs. Gouy-Chapman conditions](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Ex_2_MSGC.ipynb)\n- [Example 3 - Calculating the grain boundary resistivity and activation energy](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Ex_3_Res.ipynb)\n- [Example 4 - Comparison with “experimental” values](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Ex_4_MSapp.ipynb)\n- [Example 5 - Using the pyscses with real data](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Ex_5_real_data.ipynb)\n- [Example 6 - Storing the output data](https://nbviewer.jupyter.org/github/bjmorgan/pyscses/blob/master/userguides/notebooks/Ex_6_store_data.ipynb)\n\n### API Documentation\nAPI documentation can be found [here](https://pyscses.readthedocs.io/en/latest/)\n\n## Installation\nSource code is available as a git repository at [https://github.com/bjmorgan/pyscses/tree/master/pyscses](https://github.com/bjmorgan/pyscses/tree/master/pyscses)\n\nThe simplest way to install `pyscses` is to use `pip` to install from [PyPI](https://pypi.org/project/pyscses/)\n```\npip install pyscses\n```\n\nAlternatively, you can download the latest release from [GitHub](https://github.com/bjmorgan/pyscses/releases), and install directly:\n```\ncd pyscses\npip install -e .\n```\nwhich installs an editable (-e) version of pyscses in your userspace.\n\nOr clone the latest version from [GitHub](https://github.com/bjmorgan/pyscses/releases) with\n```\ngit clone git@github.com:bjmorgan/pyscses.git\n```\nand install the same way.\n```\ncd pyscses\npip install -e .\n```\n## Tests\n\nThe directory `tests/test_notebooks` contains a set of Jupyter notebooks with specified outputs, that can be run to test code functionality. The test notebooks can be found on GitHub [here](https://github.com/bjmorgan/pyscses/tree/master/tests/test_notebooks).\n\nThere are four directories with varying conditions. In each there is a Jupyter notebook which can be run. The input for the calculations is stored in the `input_data` directory and the output for the calculations will be stored in the `generated_data` directory and can be compared to the verified data in the `expected_outputs` directory. A list of the input parameters used in the notebooks is reiterated in each of the four test folders in the `input_parameters` file. \n\n### Unit tests\n\nLimited unit tests are contained in the top `tests` directory. These can be run using\n```\ncd tests\npython -m unittest discover\n```\nAutomated unit testing of the latest commit happens [here](https://travis-ci.org/bjmorgan/pyscses/).\n\n## Contributing\n\n### Bugs reports and feature requests\n\nIf you think you have found a bug, please report it on the [Issue Tracker](https://github.com/bjmorgan/pyscses/issues). This is also the place to propose ideas for new features or ask questions about the design of pyscses. Poor documentation is considered a bug, but please be as specific as possible when asking for improvements.\n\n### Code contributions\n\nWe welcome your help in improving and extending the package with your own contributions. This is managed through GitHub pull requests; for external contributions we prefer the \"fork and pull\" workflow, while core developers use branches in the main repository:\n\n- First open an [Issue](https://github.com/bjmorgan/pyscses/issues) to discuss the proposed contribution. This discussion might include how the changes fit pyscses' scope and a general technical approach.\n- Make your own project fork and implement the changes there. Please keep your code style compliant with PEP8.\n- Open a [pull request](https://github.com/bjmorgan/pyscses/pulls) to merge the changes into the main project. A more detailed discussion can take place there before the changes are accepted.\n\n## Citing `pyscses`\n\nThis code can be cited as:\n\nWellock, Georgina L., & Morgan, Benjamin J. (2019). *pyscses - a PYthon Space-Charge Site-Explicit Solver* Zenodo. http://doi.org/10.5281/zenodo.2536867\n\n### BibTeX\n\n```\n@misc{wellock_georgina_l_2019_2536901,\n author = {Wellock, Georgina L. and\n Morgan, Benjamin J.},\n title = {{pyscses - a PYthon Space-Charge Site-Explicit \n Solver}},\n month = jan,\n year = 2019,\n doi = {10.5281/zenodo.2536901},\n url = {https://doi.org/10.5281/zenodo.2536867}\n}\n```\n\n# References\n1. [Sandve, G. K., Nekrutenko, A., Taylor, J., & Hovig, E. (2013). Ten simple rules for reproducible computational research. PLoS Comput. Biol., 9(10), e1003285\u20134.](https://dx.doi.org/10.1371/journal.pcbi.1003285)\n1. [Hwang, J.-H., McLachlan, D. S., & Mason, T. O. (1999). Brick layer model analysis of nanoscale-to-microscale cerium dioxide. *J. Electroceram.*, **3** (1), 7\u201316.](https://dx.doi.org/10.1023/A:1009998114205)\n1. [Kim, S., & Maier, J. (2002). On the conductivity mechanism of nanocrystalline ceria. *J. Electrochem. Soc.*, **149**(10), J73\u2013J83.](https://dx.doi.org/10.1149/1.1507597)\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/bjmorgan/pyscses/archive/1.0.0.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bjmorgan/pyscses", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyscses", "package_url": "https://pypi.org/project/pyscses/", "platform": "", "project_url": "https://pypi.org/project/pyscses/", "project_urls": { "Download": "https://github.com/bjmorgan/pyscses/archive/1.0.0.tar.gz", "Homepage": "https://github.com/bjmorgan/pyscses" }, "release_url": "https://pypi.org/project/pyscses/1.0.0/", "requires_dist": [ "numpy", "mpmath", "scipy" ], "requires_python": "", "summary": "PYthon Space-Charge Site Explicit Solver", "version": "1.0.0" }, "last_serial": 4963378, "releases": { "0.9": [ { "comment_text": "", "digests": { "md5": "d4a28b8490ae4a5ddd6f499f23d5bb6e", "sha256": "5d01b025c81b46f547581a288b65a4fece700edf0beedba9e53b5e8b701fe93f" }, "downloads": -1, "filename": "pyscses-0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "d4a28b8490ae4a5ddd6f499f23d5bb6e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22833, "upload_time": "2019-01-10T11:40:56", "url": "https://files.pythonhosted.org/packages/f4/d6/0115fca5e73b2672d3c905318f2a0d83b0b4e5384dc16e9e066d8adb08cf/pyscses-0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa3fa1531fec6ce5bb321b6df359f679", "sha256": "1fde329dc666ee9977807a52f00b35a3b9c04062dc1573ccefeb5ef9beadb291" }, "downloads": -1, "filename": "pyscses-0.9.tar.gz", "has_sig": false, "md5_digest": "fa3fa1531fec6ce5bb321b6df359f679", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19049, "upload_time": "2019-01-10T11:40:58", "url": "https://files.pythonhosted.org/packages/58/9c/a4836938604242eed435b84a5f56e3c6580b1c8726e62e87fbfe50656807/pyscses-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "49552b39144b710fe0971b49c633685c", "sha256": "7feaf550598671ea421139768a48a39990a0feb186dca537c90b2c8d99fb3a51" }, "downloads": -1, "filename": "pyscses-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "49552b39144b710fe0971b49c633685c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22884, "upload_time": "2019-01-10T11:45:38", "url": "https://files.pythonhosted.org/packages/31/ff/a9786f70dbd47b08d28112a85234ea0dfffe960e8e840dba8bd080c27acc/pyscses-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f18e15edfdbd7fc150ae025e8ad3f2e", "sha256": "0aa98a259b62b685f7b1e6864250a1524be88328d65ddba8b431b81711a73ee4" }, "downloads": -1, "filename": "pyscses-0.9.1.tar.gz", "has_sig": false, "md5_digest": "7f18e15edfdbd7fc150ae025e8ad3f2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19112, "upload_time": "2019-01-10T11:45:40", "url": "https://files.pythonhosted.org/packages/cd/c0/56838fb08321286414b9b58cf5347ff67e3b78c8ad209375b7317e41daa7/pyscses-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "ea3cb4886d3e9575baae9e6191cddacc", "sha256": "9074c2862d39b332da02ef7eb82c35c0d06697249c06c4803b14f3f9921cd9a5" }, "downloads": -1, "filename": "pyscses-0.9.2.tar.gz", "has_sig": false, "md5_digest": "ea3cb4886d3e9575baae9e6191cddacc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19111, "upload_time": "2019-01-10T11:56:53", "url": "https://files.pythonhosted.org/packages/e7/83/5edf6b04fb698191ccf2b60f40614b6e07177526e7750cea36b2fa693973/pyscses-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "fc45e193b8bdef23640ee30963685cd6", "sha256": "2853cc2a67dd25d717ab22704f6d12e1c1c8a3e591a80a0457033cd4b0596eac" }, "downloads": -1, "filename": "pyscses-0.9.3-py3-none-any.whl", "has_sig": false, "md5_digest": "fc45e193b8bdef23640ee30963685cd6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22849, "upload_time": "2019-01-10T12:02:29", "url": "https://files.pythonhosted.org/packages/6c/4b/e1cbed02177845f60747edcee90cd89bc38aa6e0deac234b04d82044af13/pyscses-0.9.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "80d9e70dd57a35cbe7ff9d23a04f6523", "sha256": "1e17008be17b337bc233f7b5069c90c96aaba0b9a031293d1ed6922f3fa6c51e" }, "downloads": -1, "filename": "pyscses-0.9.3.tar.gz", "has_sig": false, "md5_digest": "80d9e70dd57a35cbe7ff9d23a04f6523", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19174, "upload_time": "2019-01-10T12:02:32", "url": "https://files.pythonhosted.org/packages/9e/11/4d4f2ebebc2b9987455507a6e37ee57ecec71713aaf18f500089ad632ecc/pyscses-0.9.3.tar.gz" } ], "0.9.3.2": [ { "comment_text": "", "digests": { "md5": "1ce2a0df1904b2796fc86e3697b08d4b", "sha256": "bd5d058be9f564fc4c7a6170be6dbbd76d5931587d7d5c8f0961b2409f39f9dd" }, "downloads": -1, "filename": "pyscses-0.9.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1ce2a0df1904b2796fc86e3697b08d4b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23154, "upload_time": "2019-01-10T13:15:13", "url": "https://files.pythonhosted.org/packages/2e/eb/750173a47bb2576dbc662e47d50cfdbc3430a84dc84077a42884f2872b74/pyscses-0.9.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9f6f58323663daf63c0c7ce797eda2b", "sha256": "621cb79e6a5ae73af88582e39238dcaf15c70fc7d472830363fce30b2af4e31f" }, "downloads": -1, "filename": "pyscses-0.9.3.2.tar.gz", "has_sig": false, "md5_digest": "d9f6f58323663daf63c0c7ce797eda2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19780, "upload_time": "2019-01-10T13:15:17", "url": "https://files.pythonhosted.org/packages/2a/67/710fc0451e78f151625c333bb0265fda77c4871a09c0db3ed82ee93b8c19/pyscses-0.9.3.2.tar.gz" } ], "0.9.3.3": [ { "comment_text": "", "digests": { "md5": "9745bb32379f63b7ddaf1dfd4b034b33", "sha256": "12b731138950d27b25277f5c439a72f1d435bed1851b61e1cdf24d3ac02faa9e" }, "downloads": -1, "filename": "pyscses-0.9.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9745bb32379f63b7ddaf1dfd4b034b33", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23325, "upload_time": "2019-02-06T09:36:42", "url": "https://files.pythonhosted.org/packages/54/d4/ce8aa46d62cf5f395c6965f0cfabcdec050c573296490513182329b9a017/pyscses-0.9.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ab446b266d1edda41fcb441ea382499", "sha256": "e6a476d4ac9c32599bac4be7fd4c08a06436a1a724527147096fcbcc0fe4cdfe" }, "downloads": -1, "filename": "pyscses-0.9.3.3.tar.gz", "has_sig": false, "md5_digest": "8ab446b266d1edda41fcb441ea382499", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20219, "upload_time": "2019-02-06T09:36:46", "url": "https://files.pythonhosted.org/packages/86/5f/b990a05040611dc285dfdca40ee6e78e3021f92c3152434bf1c57d807106/pyscses-0.9.3.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "1fe78aa7905ddb24d366c5faefb50119", "sha256": "bf55bf43ca7e03bb79ef08e95aa63643b46d34743394d15d82234a15ac42f8ac" }, "downloads": -1, "filename": "pyscses-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1fe78aa7905ddb24d366c5faefb50119", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25507, "upload_time": "2019-03-20T12:29:20", "url": "https://files.pythonhosted.org/packages/20/1b/dda686eb2a5d4c21d8a8993b74d0fad4e036f41fc51413f8e465c3dc759f/pyscses-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b2f5f5de9ea449fe97643f4af2e1cae", "sha256": "fe43031fa444565fd7e7823cc827b3edb7923b5288d6acce5f078e4358ef0aaf" }, "downloads": -1, "filename": "pyscses-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2b2f5f5de9ea449fe97643f4af2e1cae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24053, "upload_time": "2019-03-20T12:29:24", "url": "https://files.pythonhosted.org/packages/d7/13/72910cd01390b6a5e54000611efa777283d64f5cf1073ff03ed6e709bca2/pyscses-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1fe78aa7905ddb24d366c5faefb50119", "sha256": "bf55bf43ca7e03bb79ef08e95aa63643b46d34743394d15d82234a15ac42f8ac" }, "downloads": -1, "filename": "pyscses-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1fe78aa7905ddb24d366c5faefb50119", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25507, "upload_time": "2019-03-20T12:29:20", "url": "https://files.pythonhosted.org/packages/20/1b/dda686eb2a5d4c21d8a8993b74d0fad4e036f41fc51413f8e465c3dc759f/pyscses-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b2f5f5de9ea449fe97643f4af2e1cae", "sha256": "fe43031fa444565fd7e7823cc827b3edb7923b5288d6acce5f078e4358ef0aaf" }, "downloads": -1, "filename": "pyscses-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2b2f5f5de9ea449fe97643f4af2e1cae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24053, "upload_time": "2019-03-20T12:29:24", "url": "https://files.pythonhosted.org/packages/d7/13/72910cd01390b6a5e54000611efa777283d64f5cf1073ff03ed6e709bca2/pyscses-1.0.0.tar.gz" } ] }