RidgetopGroupInc / AEM-API

The AEM API provides researchers and developers with a way to interact programmatically with the Advanced Electrolyte Model software developed by Idaho National Laboratory (INL). The API facilitates the integration of AEM’s capabilities into other software solutions, enabling seamless automation and data analysis workflows.
https://www.ridgetopgroup.com/about-us/ridgetop-affiliates/advanced-electrolyte-model-aem-developed-by-idaho-national-laboratory/
GNU General Public License v3.0
1 stars 0 forks source link
analysis battery chemistry clean clean-energy electrolyte modeling optimization simulation

Contributors Forks Stargazers Issues MIT License

Screenshot 2024-11-14 133347

The Advanced Electrolyte Model (AEM) Application Program Interface (API) is a supporting software toolbox to the AEM CLI executable, designed to analyze and predict the properties of electrolyte compositions used in various applications. Developed by Ridgetop Group, Inc. and in collaboration with Adarsh Dave (Carnegie Mellon University), this API allows users to create, manage, and simulate electrolyte compositions with Python scripts, leveraging the extensive databases of solvents and salts with the AEM compound library. Additionally, the API converts generated report files from the .txt to .csv and .json formats, visualizes any quantity from any of those reports, and shows an example of combining results from AEM output Report 1, saving that to a .csv file, and providing detailed insights into example key properties such as density, viscosity, conductivity, and ion association populations through graphical plots.


Link to Repository: https://github.com/RidgetopGroupInc/AEM-API

Table of Contents

About the AEM API

Shown in the figure below is a block diagram of the AEM API architecture. The diagram is divided into several sections, each elaborating on different aspects of the AEM API, from input parameters to outputs, classes, and reports. - On the **user level**, there are three major inputs - **Electrolyte Composition**, **ACCC Electrolyte Composition**, and **Input Parameters**. In the Electrolyte Composition, the user can define up to 10 solvents (fixed mode) or 5 solvents (matrix mode) and up to two salts. In the ACCC Electrolyte Composition, the user can define up to 10 ACCC solvents (fixed mode) or 5 ACCC solvents (matrix mode) and only one ACCC salt. The ACCC salt chosen must contain all the identifiers for the chosen ACCC solvent. The user can choose between a pure non-ACCC composition, a pure ACCC composition, or a cross composition between non-ACCC and ACCC components. Next, Input Parameters lists the various inputs required for running AEM CLI executable. These inputs are essential for configuring AEM simulation runs and determining the specific conditions under which the model operates. - Within the **API itself (AEM_API.py)** there are three classes - the **ElectrolyteComposition Class**, the **ACCCElectrolyteComposition Class**, and the **AEM_API Class**. The ElectrolyteComposition Class includes functions for managing the non-ACCC composition, whereas the ACCCElectrolyteComposition Class includes functions for managing the ACCC composition. The AEM_API Class contains functions for reading inputs, generating compositions, running simulations using the AEM CLI program, saving logs, exporting files and results, processing data, and saving processed data. - Within the **AEM_PARSER (AEM_PARSER.py)** there are various classes such as the **aem_run class**, the **aem_report class**, **aem_report01, aem_report02, ....., aem_report20 classes** for each report generated by AEM. Additionally, there various major functions defined such as - the **parseReport function**, the **parse_composition_temperature function**, **parseReport01, parseReport02, ....., parseReport20 functions** for each report, the **aem_convert_to_csv function**, and the the **aem_convert_to_json function**. These classes and functions are responsible to create the .csv and .json files from the default output .txt files from the AEM CLI program. - The **Outputs** from the API are organized into the **AEM_API_Output** directory in run directories with the name **AEMRun-RunID-RunDate-RunTime**. Each run directory includes the **Reports** and a **run log .json file (AEMRun-RunID-RunDate-RunTime-Log.json)**. The Reports folder contains different types of reports generate in .txt, .csv, and .json formats. The **.csv** files are saved in the **Reports\csv** folder, whereas The **.json** files are saved in the **Reports\json** folder. These reports cover a wide range of analyses, from key properties summaries and thermodynamic terms to density, viscosity, conductivity, and cation desolvation. Other reports focus on dielectric analysis, transport properties, molar volume, ion-pair formation, self-diffusion coefficients, and ligand-wise analyses, among others. Each report provides detailed insights into specific aspects of the electrolyte compositions and their behaviors under various conditions.

AEM-API Architecture

Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

Installation

  1. Clone the repo
    git clone https://github.com/RidgetopGroupInc/AEM-API.git
  2. Install the required dependencies
    pip install -r requirements.txt

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the GNU GPL-3.0 License. See LICENSE for more information.

Contact

RGIPrimary

For Scientific Enquiries

For Technical Enquiries & Assistance

AEM API

AEM GUI/CLI

For Business & Licensing Enquiries

Acknowledgements