Awesome
Code used in MultiMesh Shape Opt article
Can be found at arXiv
Overview
The following examples can be found in the second submisson of the article:
- Heat minimization of current carring multicables
- Drag minimization for obstacle in Stokes flow
- Drag minimization for orientation of nine obstacles in Stokes flow
The following examples were used in the first submission of the article:
The Poisson comparasion folder is a folder with visual comparasion of the gradients for the shape derivatives using the Hadamard formulas for the MultiMesh FEM and traditional FEM.
Installation
Docker
A docker container can be built with all the dependencies using the command
cd dockerfiles
docker build --tag mmshapeopt .
cd ..
To run the enviroment with current directory as shared with
docker run --name=mmshapeopt -ti -v $(pwd):/home/fenics/shared mmshapeopt
At an later instance, the container can be started with the following command
docker container start mmshapeopt
Docker notebooks: A motivational example for MultiMesh
First build the docker image mmshapeopt as described above. Then to run the attached docker notebook, run:
docker run --name mmshapeoptnb -w /home/fenics/shared -v $(pwd):/home/fenics/shared -d -p 127.0.0.1:8888:8888 mmshapeopt 'jupyter-notebook --ip=0.0.0.0'
To open the notebook, open a web-browser and go to 127.0.0.1:8888. To get the access key, type:
docker logs mmshapeoptnb
To stop and start the container use the following arguments.
docker container stop mmshapeoptnb
docker container start -i mmshapeoptnb
To use the interactive notebook, go to the Kernel->Restart & Run All
.
Manual installation
If you do not want to use docker, you need the following packages:
- Dolfin 2018.1.0
- Femorph, branch dokken/restructuring, which is pip installable
- IPOPT (v. 3.12.9)
- scipy (>=1.1.0)
- gmsh (v. 3.0.6)
- meshio, pygmsh