/ReproduceSBPSimplex

Reproducibility repository for "Efficient Tensor-Product Spectral-Element Operators with the Summation-by-Parts Property on Curved Triangles and Tetrahedra"

Primary LanguageJuliaGNU General Public License v3.0GPL-3.0

Efficient Tensor-Product Spectral-Element Operators with the Summation-by-Parts Property on Curved Triangles and Tetrahedra

This repository contains the Julia code to reproduce the results in the following manuscript:

T. Montoya and D. W. Zingg, Efficient Tensor-Product Spectral-Element Operators with the Summation-by-Parts Property on Curved Triangles and Tetrahedra, SIAM Journal on Scientific Computing 46(4):A2270-A2297, 2024.

Please cite the above manuscript if you use this repository or the underlying spectral-element framework StableSpectralElements.jl in your research.

Abstract

We present an extension of the summation-by-parts (SBP) framework to tensor-product spectral-element operators in collapsed coordinates. The proposed approach enables the construction of provably stable discretizations of arbitrary order which combine the geometric flexibility of unstructured triangular and tetrahedral meshes with the efficiency of sum-factorization algorithms. Specifically, a methodology is developed for constructing triangular and tetrahedral spectral-element operators of any order which possess the SBP property (i.e. satisfying a discrete analogue of integration by parts) as well as a tensor-product decomposition. Such operators are then employed within the context of discontinuous spectral-element methods based on nodal expansions collocated at the tensor-product quadrature nodes as well as modal expansions employing Proriol-Koornwinder-Dubiner polynomials, the latter approach resolving the time step limitation associated with the singularity of the collapsed coordinate transformation. Energy-stable formulations for curvilinear meshes are obtained using a skew-symmetric splitting of the metric terms, and a weight-adjusted approximation is used to efficiently invert the curvilinear modal mass matrix. The proposed schemes are compared to those using non-tensorial multidimensional SBP operators, and are found to offer comparable accuracy to such schemes in the context of smooth linear advection problems on curved meshes, but at a reduced computational cost for higher polynomial degrees.

Installation

First, make sure to install the latest stable release of Julia if you haven't already done so. Then, assuming that you are using Linux or macOS and have git installed, follow the steps below.

  1. Clone this repository by entering the command git clone https://github.com/tristanmontoya/ReproduceSBPSimplex.git in the terminal.

  2. Within the top-level ReproduceSBPSimplex directory, use the command julia --project=. to open the Julia REPL and activate the project within the current directory.

  3. Install all dependencies by entering using Pkg; Pkg.instantiate() in the REPL. This will automatically set up StableSpectralElements.jl.

Reproducibility instructions

Here, we describe how to generate the results using the provided scripts, and how to produce the results in the manuscript using the provided Jupyter notebooks. Note that some of the tests run a lot faster with multithreading enabled (for example, add --threads 8 to the julia command if you want to use eight threads). If using multiple Julia threads, it is usually best to set the number of BLAS threads to 1 (for example, using the OPENBLAS_NUM_THREADS environment variable). The table below lists the scripts containing the appropriate calls to the driver file for each numerical experiment, as well as the notebooks used to postprocess the simulation results in order to generate the figures. If a directory is listed in the scripts column, then all scripts in the directory should be run (in any order).

Description Figure Script(s) Postprocessing notebooks
Conservation and energy stability 2 N/A notebooks/stability_conservation_tri.ipynb
notebooks/stability_conservation_tet.ipynb
Spectral radius 3 scripts/sr_tri/
scripts/sr_tet/
notebooks/spectral_radius_tri.ipynb
notebooks/spectral_radius_tet.ipynb
Accuracy 4 scripts/h_refine_tri/
scripts/p_refine_tri/
scripts/h_refine_tet/
scripts/p_refine_tet/
notebooks/convergence_plots_tri.ipynb
notebooks/convergence_plots_tet.ipynb
Operation count 5 scripts/flops_tri.jl
scripts/flops_tet.jl
notebooks/flops_tri.ipynb
notebooks/flops_tet.ipynb

The data files directly used to generate the figures in the manuscript are provided in the results directory in HDF5-compatible JLD2 format, although the raw simulation datasets (which can be produced by running the above scripts) are not provided due to their size. Further inquiries regarding the code, results, and manuscript should be directed to tristan.montoya@mail.utoronto.ca.

License

This software is released under the GPLv3 license.