Popis: |
Although computers were invented to automate tedious and error-prone tasks, computer programming is a tedious and error-prone task itself. This is a well-known paradox in the field of computational mathematical modelling. Recently, automatic code generation has been proposed to solve this paradox. In this approach, a required code to model physical problems is generated by compiling an input file which mimics mathematical notations. In this thesis, the automatic code generation has been extended to support developing models for problems with discontinuities. Examples of this kind of problems in real world are cracks, slip planes and singularities in materials as well as phase interfaces in multiphase flows. This framework is designed in the context of the FEniCS project, an open source project in the Automation of Computational Mathematical Modelling (ACMM). The automated framework has been implemented in two packages which are licensed as open source software and they can be downloaded for free. - A compiler (in Python) for generating C++ low-level code to model discontinuities from the high-level code close to mathematical notations https://launchpad.net/ffc-pum - A solver library (in C++) to use the generated code from the PUM compiler in combination with other reusable components of DOLFIN to model discontinuities https://launchpad.net/dolfin-pum This framework provides required tools and functionalities to fast and efficient development of the partition of unity models for physical problems represented by partial differential equations in domains with discontinuity surfaces. Developing such models especially for coupled problems, in which different combinations of continuous/discontinuous spaces may exist, is a time consuming and difficult task. Using the automated framework moves the focus from implementation to modeling. Therefore, different models can be simulated and tested quickly with minimum reworks. The examples, presented in this thesis, were limited to non-branching discontinuity surfaces with the Heaviside enrichment function. A novel algorithm is also proposed to keep track of three-dimensional propagating surfaces. However, the solver library is designed such that it can be relatively easily extended to support other types of problems. |