One of the items worked on during this period, has been to provide a docker image for our code.As the code we have written is open-source, and we wish the community to make use of it, we have created and registered a Docker image, to allow easy access and use of our code. It installs the latest versions of FEniCS and Julia, and builds PyCall.jl and FEniCS.jl. All dependencies and installations are handled during the build process of the image. We can access it by running the command
docker run -ti ysimillides/fenics-julia-docker
It is based on https://github.com/tpapp/texlive-julia-minimal-docker, although some differences are present, mainly that ours is also to be used by the user, not just to efficiently run CI tests.
Now that we have the image in a usable state, it might be helpful to see the underlying reasons this was needed. While a significant amount of Julia users use Windows as their operating system, FEniCS is not usable in its current state, so an alternative was needed. Furthermore, while macOS and linux theoretically should support FEniCS, problems often arised during installation, particularly when using the Conda distribution. This could either be missing functionality, due to dependencies not being correctly installed (https://github.com/JuliaDiffEq/FEniCS.jl/issues/42 or https://github.com/JuliaDiffEq/FEniCS.jl/issues/12 ). The docker image should help to alleviate most of the problems previously faced.
Some further work was also done on geometrical meshing capabilities, and plotting of these objects. While interfacing with Makie.jl is still not implemented, our PyPlot interface is usable, and can handle both 2D and 3D objects.
While not the most practical example, we can see some of the capabilities of the meshing/plotting interfaces. And who knows, had the empire used our library, maybe flaws in the thermal exhaust port could have been identified…
I also had the opportunity to attend http://people.bath.ac.uk/br275/siam-ima/SNSCC-2018/ during this evaluation period, and present my work. Interest was shown by the audience, particularly surrounding the release of v1.0 of Julia.
As in my previous blog post, work has also been done on implementing more functions, and refactoring old code. The main bulk of that can be found here https://github.com/JuliaDiffEq/FEniCS.jl/pull/49