This C# application & SQL database allow storing and indexing of results of electronic structure calculations performed with the Gaussian series of programs.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
In theoretical and computational chemistry, scientists perform electronic structure calculations to study the properties and behavior of molecules and materials at the quantum mechanical level. These calculations generate vast amounts of data, including molecular geometries, energies, vibrational frequencies, and other properties. One of the most common software packages used for such calculations is Gaussian, which provides a wide range of methods and basis sets for simulating molecular systems. In this project, we seek to build an application to manage the data generated by Gaussian calculations.
We will design the project using Tim Corey's WOULD Framework, where we:
- Walk Through The Project
- Open Up The Requirements
- User Interface Design
- Logic Design
- Data Design
The application will consist of a SQL database to store and index the results, along with a C# class library for the data access and business logic. We will also have a desktop and a web-based front-end to facilitate data entry, retrieval, and analysis. The desktop application will be built using Windows Presentation Foundation (WPF), while the web application will utilize ASP.NET MVC with a RESTful API. Eventually, I plan on replacing the MVC application with a Blazor application.
- Design the Application
- Walk Through The Project
- Open Up The Requirements
- User Interface Design
- Logic Design
- Data Design
- Create the Project Scaffolding
- SQL Server Database
- Class Library
- Windows Presentation Foundation Desktop Application
- ASP.NET MVC Web Application with API
- Implement the Data Access Code using Dapper
- Implement the database code, library code, and user interface code, for the first table, corresponding to the Job Type options in Gaussian.
- Database Table & Stored Procedures
- Data Access Code
- Business Logic Code
- User Interface Code
- Continue the above pattern for the other tables.
- Method Families
- Base Methods
- Electronic States
- Spin States
- Electronic State/Method Families
- Spin State/Electronic State/Method Families
- Full Methods
- Basis Sets
- Density Fitting Sets
- Model Chemistries
- ONIOMs
- Species Types
- File Types
- File Extensions
- Files
- Molecules
- Experiments
- Calculations
- Calculation Files
- Experiment Files
- Add Post-Deployment Script to the SQL Database Project to populate initial default values
- Add Unit Tests
- Add Health Checks to the API
- Add logging to the Entity Framework-scaffolded Identity pages in the MVC App
- Add Role-based permissions on controllers and pages in the MVC app and in the controls/menu in the WPF app
- DRY up the color picker code into the RTBHelpers class (complex because of event handling)
- Refactor and optimize the code
- Remove the warning disables in .globalconfig and address each warning
- Review and standardize the logging statements
- Implement a structured logger
- Beef up API with additional response codes and document them
- Tweak both UIs
- Add support for additional rich text features in both UIs, including nested lists (bulleted and numbered), blockquotes, and pre-formatted (plain) text.
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Pierre J.-L. Plourde - @pierre_plourde - pierre@spartancsharp.net
Project Link: https://github.com/Spartan-CSharp/Gaussian2
- Tim Corey for his C# training, both paid and unpaid.
- Othneil Drew for his Best README Template.
- Gaussian, Inc. for the Gaussian 16 Software for Windows.