### Quick summary

This code allows the creation of artificial indentation curves, starting from a model (e.g. a Digital Twin DT) of nanoindentation testing machine  for a specific combination of sample and indenter.

Three main errors can be included in the artificial indentation curve generation, namely: thermal drift, pop-in, and pop-out.

The generated curves are saved on disk using pickle serialization, and can additionally be plotted for comparison with the Digital Twin (DT) model

### How do I use the code?

The main file **Artificial_Dataset.py** can be used to run the code. Class definitions and functions used withins the code are included in the **tools.py** file. User inputs and definitions can be modified in each file within the commented sections called `# INPUTS` and `# DEFINITIONS`, respectively. Additional documentation regarding each variable is provided within the code.

The experimental measurements used to construct the provided DT model `model_Si_BBI_68_Nuove.pickle` follow a predefined indentation cycle with secondary holding with the following durations:

- Loading: 10 s
- Primary Holding: 8 s
- Unloading: 9 s
- Secondary Holding: 60 s

The `acquisition_rate` in the main file needs to match the acquisition frequency of the experimental setup used to construct the DT model, which is 10 Hz for the provided one.

### Dependencies

The code is written in Python 3.11.9, using the additional packages listed below

- numpy: 1.26.4
- matplotlib: 3.8.4
- scipy: 1.13.1
- tqdm: 4.66.4

The dependencies can be installed by running the command

```
pip install -r requirements.txt
```

### Contact

Giacomo Maculotti, Ph.D. - Politecnico di Torino: giacomo.maculotti@polito.it
