2,190 research outputs found

    Managing Mesh-Based Data in a Semantic Database

    Get PDF

    A PDE based approach to multi-domain partitioning and quadrilateral meshing

    Get PDF
    International audienceIn this paper, we present an algorithm for partitioning any given 2d domain into regions suitable for quadrilateral meshing. It can deal with multi-domain geometries with ease, and is able to preserve the symmetry of the domain. Moreover, this method keeps the number of singularities at the junctions of the regions to a minimum. Each part of the domain, being four-sided, can then be meshed using a structured method. The partitioning stage is achieved by solving a PDE constrained problem based on the geometric properties of the domain boundaries

    Multilayered abstractions for partial differential equations

    Get PDF
    How do we build maintainable, robust, and performance-portable scientific applications? This thesis argues that the answer to this software engineering question in the context of the finite element method is through the use of layers of Domain-Specific Languages (DSLs) to separate the various concerns in the engineering of such codes. Performance-portable software achieves high performance on multiple diverse hardware platforms without source code changes. We demonstrate that finite element solvers written in a low-level language are not performance-portable, and therefore code must be specialised to the target architecture by a code generation framework. A prototype compiler for finite element variational forms that generates CUDA code is presented, and is used to explore how good performance on many-core platforms in automatically-generated finite element applications can be achieved. The differing code generation requirements for multi- and many-core platforms motivates the design of an additional abstraction, called PyOP2, that enables unstructured mesh applications to be performance-portable. We present a runtime code generation framework comprised of the Unified Form Language (UFL), the FEniCS Form Compiler, and PyOP2. This toolchain separates the succinct expression of a numerical method from the selection and generation of efficient code for local assembly. This is further decoupled from the selection of data formats and algorithms for efficient parallel implementation on a specific target architecture. We establish the successful separation of these concerns by demonstrating the performance-portability of code generated from a single high-level source code written in UFL across sequential C, CUDA, MPI and OpenMP targets. The performance of the generated code exceeds the performance of comparable alternative toolchains on multi-core architectures.Open Acces
    corecore