Thermal Degradation Explorer:

Cell temperature curves are predicted based on thermal simulations of a battery module manufactured from cork composite and infiltrated with PCM.
Capacity loss is estimated and a multi opimizer is provided within a gui.


Usage:
main.py starts the program. No other script has to be run by hand. 
The input files and pretrained models (RRAE and FFNN) are provided.
Models can be loaded or newly trained. This is selected when the program is started

Required packages: PyQt5, torch, numpy, pandas, scipy, scikit-learn, matplotlib, optuna


Program flow:
1. main.py           creates the application and opens the startup dialog.
2. startup.py        model selection 
                     Training / loading selection
3. ml_core.py        data loading, normalization, train/val/test split, training, Optuna search, evaluation, saving/loading of models and the degradation calculation.
4. gui_app.py        main window for slider based gui, includes fields to limit the optimization range and input descrete values
zz_model_def.py holds the nn definitions


Models:
RRAE  Autoencoder (temperature curve -> latent space -> curve) plus a regressor (parameters -> latent space). For prediction only the regressor and the decoder are used.
FFNN  A single feed-forward network that maps the parameters straight to the curve.


Input data (input_data/)
------------------------
lhs_samples.csv        simulated configurations (Latin hypercube samples), one row per simulation (sim_id + 10 parameters)
combined_avg_TEMP.csv  matching temperature curves in Kelvin: column TIME [s] plus one column per simulation (sim_0001, ...)

Parameters: ambient temperature, C-rate, thermal conductivity, cooling temperature, cooling and cork heat transfer conductance, PCM fraction, latent heat, latent temperature, state of health.

By default 1000 samples are used (DATASET_SIZE in ml_core.py), split into
train / validation / test. The remaining samples form an extra held-out test set.
