This is the code repository for the corresponding dissertation thesis. It contains code that is addressed in chapters 6 and 7.
The codes for the two numerical examples are discussed in the publication: doi:10.3390/asi7030035.
To run the examples, head to the multiphysics-pde-methods
directory that links to the corresponding code repository here on GitHub. There, additional instructions on installation and running can be found.
To run the advection benchmark, a working installation of FEniCSx and its dependencies are needed. Head to the linked website for further installation instructions.
To run the example on one process, simply execute
python3 powder-bed-fusion/main.py
To run in parallel using n
processes, run
mpirun -np n python3 powder-bed-fusion/main.py
Alternatively, for a more documented version of this script, one can also execute the Jupyter notebook powder-bed-fusion/main.ipynb
.
The parameters of the simulation can all be changed in the main
file and are given in dictionary form.
Due to the complexity of the simulation, its classes are split up into different files and bundled in the MultiphysicsModel
package.
The main data structures are:
PBFModel
represents the top-level data structure that encapsulates an entire instance of one simulation.Mesh
is heavily based on thedolfinx
implementation of a computational mesh, plus some additional attributes to abbreviate the remaining code.FEData
all necessary data structures that are specific for the (generic formulation of the) Finite Element method.FEOperators
contains the weak formulations of differential operators suitable for evaluation using Finite Elements. They are expressed in the Unified Form Language.
Each class is more thoroughly documented in the respective source file.