This repository contains a Python package optipuls
which implements a numerical model for simulation and mathematical optimization of the single spot pulsed laser beam welding of aluminium alloys. Its implementation strongly relies on the free and open-source FEniCS computing platform.
Author: Dmytro Strelnikov dmytro.strelnikov@math.tu-chemnitz.de
Funding: Funding: Project IGF 20.826B (DVS I2.3005) in Forschungsvereinigung Schweißen und verwandte Verfahren e.V. of the Deutschen Verbandes für Schweißen und verwandte Verfahren e.V.
Project page: Simulation Based Optimization of the Time-Dependent Pulse Power for Laser Beam Welding of Aluminum Alloys in Order to Avoid Hot Cracks
The package implements a mathematical problem for pulsed laser beam welding and provides a bundle of domain-specific abstractions, simulation and optimization routines. It is based on the free and open-source FEniCS compution platform for solving partial differential equations (PDEs).
To run simulations and solve optimization problems, optipuls
requires a working FEniCS installation. Python packages numpy
, scipy
and matplotlib
must be already installed as FEniCS' dependencies.
ParaView is recommended to inspect the simulation output.
Notice, that installing FEniCS with its dependencies might be difficult on systems other than Debian or Ubuntu, which are the ones officially supported by FEniCS developers.
Therefore, it is recommended to use optipuls
in a docker container using optipulsproject/optipuls docker image which is built on top of fenicsproject/stable docker image. Please refer to the section below.
Provided FEniCS is correctly deployed on the host system, optipuls
can be simply installed via pip
.
Creating a Python virtual environment and switching to it (optional):
python3 -m venv optipulsenv
source optipulsenv/bin/activate
Installing optipuls
:
python3 -m pip install git+https://github.com/optipulsproject/optipuls
The officially recommended way to run numerical simulations and optimizations with optipuls
package is to use docker containers. Docker software must be installed on the host system.
Assuming that /scratch/optipuls
is the desired location for the numerical artifacts and dijitso cache on the host system, the following command will mount the scratch directory and the current working directory inside a docker container and execute run.py
:
$ docker run \
-v $(pwd):/home/fenics/shared \
-v /scratch/optipuls/cache/dijitso:/home/fenics/.cache/dijitso \
-v /scratch/optipuls:/scratch \
optipulsproject/optipuls:latest python3 run.py --scratch /scratch"
The sorce code is licensed under the terms of GNU GPLv3.