BSplineKit

A collection of B-spline tools in Julia

https://github.com/jipolanco/bsplinekit.jl

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    1 of 9 committers (11.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.0%) to scientific vocabulary

Keywords

b-splines basis-recombination collocation function-approximation galerkin interpolation julia splines

Keywords from Contributors

hack standardization meshing pde sequences bridges data-profilers datacleaner pipeline-testing interpretability
Last synced: 6 months ago · JSON representation ·

Repository

A collection of B-spline tools in Julia

Basic Info
Statistics
  • Stars: 59
  • Watchers: 3
  • Forks: 9
  • Open Issues: 5
  • Releases: 66
Topics
b-splines basis-recombination collocation function-approximation galerkin interpolation julia splines
Created almost 6 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

BSplineKit.jl

Stable Dev DOI

Build Status Coverage

Tools for B-spline based Galerkin and collocation methods in Julia.

Features

This package provides:

  • B-spline bases of arbitrary order on uniform and non-uniform grids;

  • evaluation of splines and their derivatives and integrals;

  • spline interpolations, smoothing splines and function approximation;

  • periodic splines;

  • basis recombination, for generating bases satisfying homogeneous boundary conditions using linear combinations of B-splines. Supported boundary conditions include Dirichlet, Neumann, Robin, and generalisations of these;

  • banded Galerkin and collocation matrices for solving differential equations, using B-spline and recombined bases;

  • efficient "banded" 3D arrays as an extension of banded matrices. These can store 3D tensors associated to quadratic terms in Galerkin methods.

Example usage

The following is a very brief overview of some of the functionality provided by this package.

  • Interpolate discrete data using cubic splines (B-spline order k = 4):

julia xdata = (0:10).^2 # points don't need to be uniformly distributed ydata = rand(length(xdata)) itp = interpolate(xdata, ydata, BSplineOrder(4)) itp(12.3) # interpolation can be evaluated at any intermediate point

  • Create B-spline basis of order k = 6 (polynomial degree 5) from a given set of breakpoints:

julia breaks = log2.(1:16) # breakpoints don't need to be uniformly distributed either B = BSplineBasis(BSplineOrder(6), breaks)

  • Approximate known function by a spline in a previously constructed basis:

julia f(x) = exp(-x) * sin(x) fapprox = approximate(f, B) f(2.3), fapprox(2.3) # (0.07476354233090601, 0.0747642348243861)

julia bc = Derivative(0) + 3Derivative(1) R = RecombinedBSplineBasis(B, bc) # satisfies u ∓ 3u' = 0 on the left/right boundary

julia # By default, M and L are Hermitian banded matrices M = galerkin_matrix(R) L = galerkin_matrix(R, (Derivative(1), Derivative(1)))

  • Construct banded 3D tensor associated to non-linear term of the Burgers equation:

julia T = galerkin_tensor(R, (Derivative(0), Derivative(1), Derivative(0)))

See the heat equation example in the docs for the use of these tools to solve partial differential equations.

References

  • C. de Boor, A Practical Guide to Splines. New York: Springer-Verlag, 1978.

  • J. P. Boyd, Chebyshev and Fourier Spectral Methods, Second Edition. Mineola, N.Y: Dover Publications, 2001.

  • O. Botella and K. Shariff, B-spline Methods in Fluid Dynamics, Int. J. Comput. Fluid Dyn. 17, 133 (2003).

Owner

  • Name: Juan Ignacio Polanco
  • Login: jipolanco
  • Kind: user
  • Location: Grenoble, France

CNRS researcher

Citation (CITATION.cff)

cff-version: 1.1.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Polanco
    given-names: Juan Ignacio
    affiliation: Univ Lyon, CNRS, École Centrale de Lyon, LMFA
    orcid: https://orcid.org/0000-0001-7705-753X
    website: https://jipolanco.gitlab.io
title: "BSplineKit.jl: a collection of B-spline tools in Julia"
version: 0.8.0
doi: 10.5281/zenodo.5150350
date-released: 2021-07-31
repository-code: https://github.com/jipolanco/BSplineKit.jl
license: MIT

GitHub Events

Total
  • Create event: 10
  • Commit comment event: 11
  • Release event: 6
  • Issues event: 13
  • Watch event: 9
  • Delete event: 6
  • Issue comment event: 43
  • Push event: 57
  • Pull request review event: 1
  • Pull request review comment event: 1
  • Pull request event: 12
Last Year
  • Create event: 10
  • Commit comment event: 11
  • Release event: 6
  • Issues event: 13
  • Watch event: 9
  • Delete event: 6
  • Issue comment event: 43
  • Push event: 57
  • Pull request review event: 1
  • Pull request review comment event: 1
  • Pull request event: 12

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 360
  • Total Committers: 9
  • Avg Commits per committer: 40.0
  • Development Distribution Score (DDS): 0.078
Past Year
  • Commits: 33
  • Committers: 5
  • Avg Commits per committer: 6.6
  • Development Distribution Score (DDS): 0.152
Top Committers
Name Email Commits
Juan Ignacio Polanco j****c@g****m 332
github-actions[bot] 4****] 16
dependabot[bot] 4****] 5
Phillip Alday p****y 2
tlow22 3****2 1
Tim Holy t****y@g****m 1
Jon Fintzi f****r@n****v 1
Jishnu Bhattacharya j****b@g****m 1
Alexander Seiler s****x@g****m 1
Committer Domains (Top 20 + Academic)
nih.gov: 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 23
  • Total pull requests: 90
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 17
  • Total pull request authors: 9
  • Average comments per issue: 7.65
  • Average comments per pull request: 0.64
  • Merged pull requests: 85
  • Bot issues: 0
  • Bot pull requests: 24
Past Year
  • Issues: 7
  • Pull requests: 13
  • Average time to close issues: 5 days
  • Average time to close pull requests: 1 day
  • Issue authors: 6
  • Pull request authors: 4
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.54
  • Merged pull requests: 11
  • Bot issues: 0
  • Bot pull requests: 4
Top Authors
Issue Authors
  • Kevin-Mattheus-Moerman (5)
  • jipolanco (2)
  • asparc (2)
  • mattiasvillani (1)
  • naufalwx (1)
  • zahachtah (1)
  • Syndrius (1)
  • alecloudenback (1)
  • palday (1)
  • behinger (1)
  • rayqu1126 (1)
  • panbroggi (1)
  • sjkobayashi (1)
  • lhapp27 (1)
  • michakraus (1)
Pull Request Authors
  • jipolanco (62)
  • github-actions[bot] (19)
  • dependabot[bot] (10)
  • fintzij (2)
  • palday (2)
  • jishnub (1)
  • tlow22 (1)
  • timholy (1)
  • goggle (1)
Top Labels
Issue Labels
enhancement (1)
Pull Request Labels
dependencies (10) github_actions (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 940 total
  • Total dependent packages: 9
  • Total dependent repositories: 0
  • Total versions: 66
juliahub.com: BSplineKit

A collection of B-spline tools in Julia

  • Versions: 66
  • Dependent Packages: 9
  • Dependent Repositories: 0
  • Downloads: 940 Total
Rankings
Dependent repos count: 9.9%
Dependent packages count: 11.0%
Average: 15.2%
Stargazers count: 18.3%
Forks count: 21.7%
Last synced: 6 months ago

Dependencies

.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • codecov/codecov-action v3 composite
  • julia-actions/cache v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
  • julia-actions/setup-julia latest composite
.github/workflows/CompatHelper.yml actions