Skip to content

Architecture

AndrewJConley edited this page Sep 5, 2018 · 2 revisions

The Chemistry Café is a multi-user web application built to store a moderate number (1500) of reactions and to track versions of both the reactions and collections of reactions. The interface also allows users to specify a collection of reactions as a mechanism and to tag various collections of reactions as mechanism tags. Tagging a mechanism leads to output consisting of KPP preprocessor input files, Mozart preprocessor input files, LaTeX files, and BoxMox input files. In addition, the database can be accessed to produce a JSON stream of data representing any given mechanism tag for use by a tool used to drive a model-independent-chemistry- module. This Café stores the data that will drive the next generation of global and regional atmospheric chemistry.

The Model-View-Controller architecture is implemented as a Postgres-PHP-Angular stack. The model (stored in the Postgres database) is relatively small, consisting of a 3 rd order normalized database with 41 tables (with only 17 primary tables). The PHP layer is about 600 lines of code, with most of that related to output and reports. The PHP code also construct the SQL queries to the Postgres database. The PHP code is mostly procedural; however, it is relatively modular. Lastly the PHP code is built to produce JSON data streams that are interpreted by the Angular JS in the user interface.

Software development steps that we would like to take:

  • Migrate the PHP layer to Express JS
  • Migrate the database to Mongo (Mongoose)
  • Migrate the user interface from Angular JS to React JS
  • Create user authentication and authorization using google login
  • Containerize an ODE solver package, that allows users to run a test suite to see plots of concentrations resulting from tagged mechanisms. Also construct a user interface allowing for specification of initial conditions for the ODE solver package.

Data development steps that we would like to take:

  • Including a generic representation of photolysis cross sections and quantum yields in the database
  • Generalizing the representation of kinetic-rate functions and their dependencies
  • Versioning of kinetic-rate functions
Clone this wiki locally