|
3 | 3 | </p> |
4 | 4 |
|
5 | 5 | # The Tandem Tool (T3) for automated chemical kinetic model development |
6 | | -[](https://github.com/ReactionMechanismGenerator/T3/actions/workflows/docker_build.yml) |
7 | | - |
8 | | - |
| 6 | + |
| 7 | +[](https://github.com/ReactionMechanismGenerator/T3/actions/workflows/ci.yml) |
| 8 | +[](https://reactionmechanismgenerator.github.io/T3/) |
9 | 9 | [](https://codecov.io/gh/ReactionMechanismGenerator/T3) |
| 10 | +[](https://github.com/astral-sh/ruff) |
10 | 11 | [](http://opensource.org/licenses/MIT) |
11 | 12 |  |
12 | 13 |
|
13 | | -T3 iteratively generates and refines detailed chemical kinetic models by combining |
| 14 | +**T3** automates the development of detailed chemical kinetic models. |
| 15 | +Given a set of initial species and conditions, it produces a validated model with |
| 16 | +high-fidelity thermochemistry and rate parameters by iteratively combining |
14 | 17 | [RMG](https://rmg.mit.edu/) for model generation, |
15 | 18 | [Cantera](https://cantera.org/) for sensitivity analysis, |
16 | 19 | and [ARC](https://reactionmechanismgenerator.github.io/ARC/) for quantum mechanical calculations. |
17 | 20 |
|
18 | | -### T3 works according to the following general scheme: |
19 | | - |
20 | 21 | ![T3 scheme][cycle] |
21 | 22 |
|
22 | 23 | [cycle]: /grf/T3-circle.gif "T3 scheme" |
23 | 24 |
|
| 25 | +--- |
| 26 | + |
| 27 | +## Features |
| 28 | + |
| 29 | +- **Iterative refinement:** runs RMG, identifies sensitive species and reactions via SA, computes |
| 30 | + accurate thermo/kinetics with ARC, and feeds the results back into the next iteration |
| 31 | +- **Multiple SA adapters:** constant TP/HP/UV, PFR, JSR, and brute-force ignition delay time (IDT) |
| 32 | +- **Equivalence-ratio sweeps:** fuel/oxidizer/diluent role taxonomy with automatic concentration |
| 33 | + computation across a grid of temperatures, pressures, and equivalence ratios |
| 34 | +- **Uncertainty analysis:** local and global UA via polynomial chaos expansion |
| 35 | +- **Restart support:** T3 can resume from any interrupted iteration |
| 36 | + |
| 37 | +--- |
| 38 | + |
| 39 | +## Installation |
| 40 | + |
| 41 | +### Prerequisites |
| 42 | + |
| 43 | +- Python 3.12+ |
| 44 | +- [Conda](https://docs.conda.io/en/latest/) (we recommend [Miniforge](https://github.com/conda-forge/miniforge)) |
| 45 | + |
24 | 46 | ### Quick start |
25 | 47 |
|
26 | 48 | ```bash |
27 | 49 | git clone https://github.com/ReactionMechanismGenerator/T3.git |
28 | 50 | cd T3 |
29 | | -make install all |
| 51 | +make install |
| 52 | +conda activate t3_env |
| 53 | +``` |
| 54 | + |
| 55 | +This clones and installs ARC, RMG-Py, RMG-database, and all external dependencies. |
| 56 | +See the [full installation guide](https://reactionmechanismgenerator.github.io/T3/installation/) |
| 57 | +for manual installation and troubleshooting. |
| 58 | + |
| 59 | +--- |
| 60 | + |
| 61 | +## Usage |
| 62 | + |
| 63 | +Create a YAML input file and run T3: |
| 64 | + |
| 65 | +```bash |
30 | 66 | conda activate t3_env |
| 67 | +python T3.py input.yml |
31 | 68 | ``` |
32 | 69 |
|
33 | | -See the [full documentation](https://reactionmechanismgenerator.github.io/T3/) for |
34 | | -detailed installation instructions, tutorials, and examples. |
| 70 | +A minimal input file looks like: |
| 71 | + |
| 72 | +```yaml |
| 73 | +project: my_project |
| 74 | + |
| 75 | +t3: |
| 76 | + options: |
| 77 | + max_T3_iterations: 10 |
| 78 | + sensitivity: |
| 79 | + adapter: CanteraConstantTP |
| 80 | + top_SA_species: 10 |
| 81 | + top_SA_reactions: 10 |
| 82 | + |
| 83 | +rmg: |
| 84 | + database: |
| 85 | + thermo_libraries: ['primaryThermoLibrary', 'BurkeH2O2'] |
| 86 | + kinetics_libraries: ['primaryH2O2'] |
| 87 | + species: |
| 88 | + - label: H2 |
| 89 | + smiles: '[H][H]' |
| 90 | + concentration: 0.67 |
| 91 | + - label: O2 |
| 92 | + smiles: '[O][O]' |
| 93 | + concentration: 0.33 |
| 94 | + - label: OH |
| 95 | + smiles: '[OH]' |
| 96 | + SA_observable: true |
| 97 | + reactors: |
| 98 | + - type: gas batch constant T P |
| 99 | + T: 1000 |
| 100 | + P: 1 |
| 101 | + termination_conversion: |
| 102 | + H2: 0.9 |
| 103 | + termination_time: [5, 's'] |
| 104 | + model: |
| 105 | + core_tolerance: [0.05, 0.01] |
| 106 | + |
| 107 | +qm: |
| 108 | + adapter: ARC |
| 109 | + level_of_theory: CBS-QB3 |
| 110 | +``` |
| 111 | +
|
| 112 | +See the [input reference](https://reactionmechanismgenerator.github.io/T3/input_reference/) |
| 113 | +for all available options. |
| 114 | +
|
| 115 | +--- |
| 116 | +
|
| 117 | +## Documentation |
| 118 | +
|
| 119 | +See the [full documentation](https://reactionmechanismgenerator.github.io/T3/) for: |
| 120 | +
|
| 121 | +- [Installation](https://reactionmechanismgenerator.github.io/T3/installation/) |
| 122 | +- [Running T3](https://reactionmechanismgenerator.github.io/T3/running/) |
| 123 | +- [Tutorials](https://reactionmechanismgenerator.github.io/T3/tutorials/1_no_qm/) |
| 124 | +- [Input reference](https://reactionmechanismgenerator.github.io/T3/input_reference/) |
| 125 | +- [Examples](https://reactionmechanismgenerator.github.io/T3/examples/) |
| 126 | +
|
| 127 | +--- |
| 128 | +
|
| 129 | +## Development |
| 130 | +
|
| 131 | +```bash |
| 132 | +make test # Run tests with coverage |
| 133 | +make test-main # Run main unit tests only |
| 134 | +make test-functional # Run functional (integration) tests |
| 135 | +``` |
| 136 | + |
| 137 | +--- |
| 138 | + |
| 139 | +## Contributing |
| 140 | + |
| 141 | +We welcome contributions! |
| 142 | + |
| 143 | +- Found a bug or have a feature request? [Open an issue](https://github.com/ReactionMechanismGenerator/T3/issues) |
| 144 | +- See the [contributing guide](https://reactionmechanismgenerator.github.io/T3/contribute/) to get started |
| 145 | + |
| 146 | +--- |
| 147 | + |
| 148 | +## License |
| 149 | + |
| 150 | +T3 is released under the [MIT License](https://github.com/ReactionMechanismGenerator/T3/blob/main/LICENSE). |
0 commit comments