Giter Club home page Giter Club logo

ranocha / summationbypartsoperators.jl Goto Github PK

View Code? Open in Web Editor NEW
88.0 7.0 12.0 4.27 MB

A Julia library of summation-by-parts (SBP) operators used in finite difference, Fourier pseudospectral, continuous Galerkin, and discontinuous Galerkin methods to get provably stable semidiscretizations, paying special attention to boundary conditions.

Home Page: https://ranocha.github.io/SummationByPartsOperators.jl

License: MIT License

Julia 98.16% Jupyter Notebook 1.84%
finite-difference summation-by-parts sbp boundary-conditions julia hacktoberfest discontinuous-galerkin continuous-galerkin fourier derivative-operator

summationbypartsoperators.jl's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

summationbypartsoperators.jl's Issues

Reconstruction and filtering methods to reduce oscillations

  • Gegenbauer reconstruction for Fourier methods, cf. Script 3.18 of Hesthaven (2018) Numerical methods for conservation laws
  • Some Padé reconstructions?
  • Total variation denoising, cf. Condat (2013) A Direct Algorithm for 1-D Total Variation Denoising
  • Total variation denoising with overlapping group sparsity, cf. Selesnick and Chen (2013)

Upwind SBP operators of Mattsson (2017)

  • Order 2, first derivative operator
  • Order 3, first derivative operator
  • Order 4, first derivative operator
  • Order 5, first derivative operator
  • Order 6, first derivative operator
  • Order 7, first derivative operator
  • Order 8, first derivative operator
  • Order 9, first derivative operator
  • Order 2, second derivative operators
  • Order 3, second derivative operators
  • Order 4, second derivative operators
  • Order 5, second derivative operators
  • Order 6, second derivative operators
  • Order 7, second derivative operators
  • Order 8, second derivative operators
  • Order 9, second derivative operators
  • Difference operator as dissipation operator
  • Something collecting them all (#156)

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Remove Travis CI testing - at least on on Mac, maybe completely???

https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing:

macOS builds need special care and attention. We want to make sure that builders on Mac have the highest quality experience at the fastest possible speeds. Therefore, we are separating out macOS usage from other build usage and offering a distinct add-on plan that will correlate directly to your macOS usage. Purchase only the credits you need and use them until you run out.

We love our OSS teams who choose to build using TravisCI and we fully want to support that community. However, recently we have encountered significant abuse of the intention of this offering. Abusers have been tying up our build queues and causing performance reductions for everyone. In order to bring the rules back to fair playing grounds, we are implementing some changes for our public build repositories.

  • For those of you who have been building on public repositories (on travis-ci.com, with no paid subscription), we will upgrade you to our trial (free) plan with a 10K credit allotment (which allows around 1000 minutes in a Linux environment).
  • You will not need to change your build definitions when you are pointed to the new plan
  • When your credit allotment runs out - we’d love for you to consider which of our plans will meet your needs.
  • We will be offering an allotment of OSS minutes that will be reviewed and allocated on a case by case basis. Should you want to apply for these credits please open a request with Travis CI support stating that you’d like to be considered for the OSS allotment. Please include:
    • Your account name and VCS provider (like travis-ci.com/github/[your account name] )
    • How many credits (build minutes) you’d like to request (should your run out of credits again you can repeat the process to request more)
  • Usage will be tracked under your account information so that you can better understand how many credits/minutes are being used

Any ideas, suggestions?

Periodic wavelet collocation operators

See Jameson (1993) On the wavelet based differentiation matrix. These schemes are identical with classical centered FD schemes for orders of accuracy 2 and 4 but differ slightly for higher orders of accuracy.

Error while precompiling on Julia 1.0.3

ERROR: LoadError: LoadError: invalid subtyping in definition of ODEIntegrator
Stacktrace:
 [1] top-level scope at none:0
 [2] include at ./boot.jl:317 [inlined]
 [3] include_relative(::Module, ::String) at ./loading.jl:1044
 [4] include at ./sysimg.jl:29 [inlined]
 [5] include(::String) at /home/sck/.julia/packages/OrdinaryDiffEq/RqsYx/src/OrdinaryDiffEq.jl:1
 [6] top-level scope at none:0
 [7] top-level scope at none:2
in expression starting at /home/sck/.julia/packages/OrdinaryDiffEq/RqsYx/src/integrators/type.jl:49
in expression starting at /home/sck/.julia/packages/OrdinaryDiffEq/RqsYx/src/OrdinaryDiffEq.jl:91
ERROR: LoadError: Failed to precompile OrdinaryDiffEq [1dea7af3-3e70-54e6-95c3-0bf5283fa5ed] to /home/sck/.julia/compiled/v1.0/OrdinaryDiffEq/DlSvy.ji.
Stacktrace:
 [1] top-level scope at none:2
in expression starting at /home/sck/.julia/packages/DiffEqCallbacks/rV4BA/src/DiffEqCallbacks.jl:9
ERROR: LoadError: Failed to precompile DiffEqCallbacks [459566f4-90b8-5000-8ac3-15dfb0a30def] to /home/sck/.julia/compiled/v1.0/DiffEqCallbacks/TKs5l.ji.
Stacktrace:
 [1] top-level scope at none:2
in expression starting at /home/sck/.julia/packages/SummationByPartsOperators/Acxc0/src/SummationByPartsOperators.jl:15
ERROR: LoadError: Failed to precompile SummationByPartsOperators [9f78cca6-572e-554e-b819-917d2f1cf240] to /home/sck/.julia/compiled/v1.0/SummationByPartsOp
Stacktrace:
 [1] compilecache(::Base.PkgId, ::String) at ./loading.jl:1203
 [2] _require(::Base.PkgId) at ./loading.jl:960
 [3] require(::Base.PkgId) at ./loading.jl:858
 [4] require(::Module, ::Symbol) at ./loading.jl:853
 [5] include(::String) at ./client.jl:392
 [6] top-level scope at none:0
in expression starting at /home/sck/plasma/alfven_currents/plot_curr.jl:3

I got this error when i tried to use the SBP-Operator package. Im using Julia 1.0.3 from the rpm repository of Fedora 29 Amd64 KDE.

Number of grid points for periodic and Fourier operators

There is some inconsistency between the number of grid points requested:

julia> using SummationByPartsOperators

julia> D_FD = periodic_derivative_operator(1, 2, 0., 1., 11)
Periodic 1st derivative operator of order 2 {T=Float64, Parallel=Val{:serial}} 
on a grid in [0.0, 1.0] using 11 nodes, 
stencils with 1 nodes to the left, 1 nodes to the right, and coefficients from 
  Fornberg (1998) 
  Calculation of Weights in Finite Difference Formulas. 
  SIAM Rev. 40.3, pp. 685-691. 


julia> grid(D_FD)
0.0:0.1:0.9

julia> D_Fourier = fourier_derivative_operator(0., 1., 11)
Periodic 1st derivative Fourier operator {T=Float64} 
on a grid in [0.0, 1.0] using 11 nodes and 6 modes. 


julia> grid(D_Fourier)
0.0:0.09090909090909091:0.9090909090909091

Combine SBP operators

  • continuosly on periodic grids
  • discontinuosly on periodic grids
  • continuosly on bounded grids
  • discontinuosly on bounded grids

Both with and without additional interface dissipation.

Bug with empty coefficients

julia> using SummationByPartsOperators

julia> Dp = periodic_derivative_operator(1, 2, 0//1, 5//1, 6, 0)
Periodic 1st derivative operator of order 2 {T=Rational{Int64}, Parallel=Val{:serial}} 
on a grid in [0//1, 5//1] using 6 nodes, 
stencils with 0 nodes to the left, 2 nodes to the right, and coefficients from 
  Fornberg (1998) 
  Calculation of Weights in Finite Difference Formulas. 
  SIAM Rev. 40.3, pp. 685-691. 


julia> Dp * grid(Dp)
ERROR: BoundsError: attempt to access ()
  at index [0]
Stacktrace:
 [1] getindex(::Tuple, ::Int64) at ./tuple.jl:24
 [2] getindex at StaticArrays/1g9bq/src/SVector.jl:37 [inlined]
 [3] macro expansion at SummationByPartsOperators/src/periodic_operators.jl:152 [inlined]
 [4] convolve_periodic_boundary_coefficients!(::Array{Rational{Int64},1}, ::StaticArrays.SArray{Tuple{0},Rational{Int64},1,0}, ::Rational{Int64}, ::StaticArrays.SArray{Tuple{2},Rational{Int64},1,2}, ::LinRange{Rational{Int64}}, ::Rational{Int64}) at SummationByPartsOperators/src/periodic_operators.jl:116
 [5] mul!(::Array{Rational{Int64},1}, ::SummationByPartsOperators.PeriodicDerivativeCoefficients{Rational{Int64},0,2,Val{:serial},Fornberg1998}, ::LinRange{Rational{Int64}}, ::Rational{Int64}) at SummationByPartsOperators/src/periodic_operators.jl:61
 [6] mul! at SummationByPartsOperators/src/periodic_operators.jl:646 [inlined]
 [7] mul! at SummationByPartsOperators/src/general_operators.jl:31 [inlined]
 [8] *(::PeriodicDerivativeOperator{Rational{Int64},0,2,Val{:serial},Fornberg1998,LinRange{Rational{Int64}}}, ::LinRange{Rational{Int64}}) at SummationByPartsOperators/src/general_operators.jl:40
 [9] top-level scope at REPL[34]:1

Provide Scalar Products

Big picture: SBP operators on possibly multiple domains correspond to Hilbert spaces, so the coefficients (on multiple domains) should reflect this behaviour and define scalar products and norms using the corresponding mass/norm matrices.

See also JuliaLang/julia#25565

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.