Implementation of Physics-Informed Neural Networks for computational mechanics based on the deepXDE package.
$ pip install -r requirements.txt
Setup the framework using python develop, which will install utils
.
$ python setup.py develop
For more info: deepxde website
Note: DeepXDE needs one of the following packages for the backend-calculation. Read the website for more info.
This repo has integration_tests
(testing for examples/frameworks) and unittests
(testing for specific functions). Testing is done by pytest
and tests are configured in the setup.cfg
file.
To run tests, type on the terminal:
$ pytest
For cluster, we should use conda
since we had issues in terms of package installation particularly the package gmsh
. Enable pinn repo to run on cluster:
Install miniconda https://docs.conda.io/en/latest/miniconda.html :
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
Create the virtual environment using environment.yml
which includes all necessary packages.
conda env create -f environment.yml
Activate the generated venv (pinn-env
)
conda activate pinn-env
To test cluster, submit a job on a compute node. This is achieved through test_cluster.sh
(full path: pinnswithdxde/tests/integration_tests/cluster/test_cluster.sh).
$ sbatch $HOME/pinnswithdxde/tests/integration_tests/cluster/test_cluster.sh
Number of threads is set in test_cluster.sh
file. TensorFlow needs to be intra_op_parallelism_threads
and inter_op_parallelism_threads
parameters set. Thus, we give tf_cluster_settings.py
to the slurm job via sbatch. This enables TensorFlow to set OMP parameters that defined in test_cluster.sh
.
NOTE
: Do not forget to adopt the inside of thetest_cluster.sh
to specify the slurm options e.g.,--mail-user
. But the default one should work without error.
NOTE
: Always be sure that you activated venvpinn-env
(step 3) beforesbatch
any slurm script. This includes other scripts you will run as well. The reason behind is that activating venv intest_cluster.sh
needs the full path for the conda envpinn-env
and it gives some init error if the full path is used.
NOTE
: For conda commands: A conda cheatsheet can be very useful.
NOTE
: Some usefull information regarding CPU on cluster.
Whenever you use or mention 'pinns_for_comp_mech' in some sort of scientific document/publication/presentation, please cite the following publication. It is publicly avaliable at arXiv.
@article{sahin2023pinnforcontact,
title={Solving Forward and Inverse Problems of Contact Mechanics using Physics-Informed Neural Networks},
author={Sahin, Tarik and von Danwitz, Max and Popp, Alexander},
journal={arXiv preprint arXiv:2308.12716},
year={2023}
}
Paper results are obtained in hastag: c79d3f24023e36341385f10d728e5a93c925fad3