Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
img
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Variable density 3-d nodes for RBF computations


This is a collection of Matlab routines for distributing nodes (discrete sets) with variable density. The nodes are drawn from a sequence of either periodic Riesz minimizers or irrational lattices, with variable number of elements. The principal application for such sets are RBF-based PDE solvers. The algorithm processes the working domain by dividing it into a number of equal cube-shaped voxels and putting nodes with constant density in each of them, then applying a repel procedure using the weighted hypersingular Riesz kernel. Currently only the 3-dimensional case is supported; a higher-dimensional implementation can be produced by trivial adjustments to the present code. For theoretic details see the companion paper.

Usage

The RUNME routine is intended to be the starting point for exploring the code. Upon execution, it will offer to run one of the three main examples: node_cloud, node_earth, and node_shell. The subfolder ./output will contain all the output saved to disk, as well as scripts to plot the results with gnuplot, should the user wish to do so (most of the plotting is done within Matlab itself). To see details about a specific function/script, type help name_of_the_function in Matlab prompt while in the 3dRBFnodes folder (it may be necessary to execute RUNME.m first to adjust the Matlab PATH). A number of parameters as well as the distribution density can be set in the preambles of node_{example}.m scripts. Executing either one of them adds the ./helpers folder to the Matlab path. All the helper functions are collected in ./helpers. The ones that are perhaps the easiest to use for generic purposes are:

  • repel - spreads out a given configuration 'cnf' of size (dim) x (N) by moving it along the gradient flow of a weighted Riesz functional; supports generic domains and densities;
  • saturate - finds and fills Voronoi holes in a given configuration 'cnf' that are deeper than a certain density function; supports generic domains.

Note that the execution of node_earth depends on the ETOPO1 data from the NOAA website; the etopo1load helper script downloads it automatically using the curl utility. In the case curl is not available on your system, save and unpack the ETOPO1 archive into the ./output directory.
The routines that have names starting with paper_ will reproduce the figures in the corresponding section of the paper. It should be noted that the GPU helpers in ./helpers_gpu are unstable (and most probably unusable) at the time of writing.

Contributors

See here for the list of individual contributors to the source code.

References

The accompanying paper by N. Flyer, B. Fornberg, T. Michaels, and O. Vlasiuk Fast high-dimensional node generation with variable density can be found on the arXiv.

For a different approach to 2-dimensional distributions, see Fast generation of 2-D node distributions for mesh-free PDE discretizations.

For how to solve PDEs with RBFs, see Solving PDEs with radial basis functions.

About the underlying theory on Riesz energy functionals, see papers

For an even longer list, refer to Edward Saff's webpage with the bibliography of applications of the Riesz functionals.

About

Variable density 3-d nodes for RBF computations

Resources

Releases

No releases published

Packages

No packages published

Languages