{"id":20500566,"url":"https://github.com/juliaapproximation/continuumarrays.jl","last_synced_at":"2025-03-05T19:34:09.717Z","repository":{"id":35421797,"uuid":"153112468","full_name":"JuliaApproximation/ContinuumArrays.jl","owner":"JuliaApproximation","description":"A package for representing quasi arrays with continuous indices","archived":false,"fork":false,"pushed_at":"2025-02-15T14:09:38.000Z","size":984,"stargazers_count":27,"open_issues_count":30,"forks_count":6,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-02-15T14:20:04.073Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JuliaApproximation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-15T12:53:10.000Z","updated_at":"2025-02-15T13:46:19.000Z","dependencies_parsed_at":"2023-10-15T11:58:15.181Z","dependency_job_id":"182093b7-df6e-4481-8dd9-0c7e7874aa12","html_url":"https://github.com/JuliaApproximation/ContinuumArrays.jl","commit_stats":{"total_commits":165,"total_committers":7,"mean_commits":"23.571428571428573","dds":"0.16969696969696968","last_synced_commit":"721b7f2fa6c72fe0630acc9ed268b8e6ef598ab1"},"previous_names":[],"tags_count":84,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FContinuumArrays.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FContinuumArrays.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FContinuumArrays.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FContinuumArrays.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuliaApproximation","download_url":"https://codeload.github.com/JuliaApproximation/ContinuumArrays.jl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242092366,"owners_count":20070508,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T18:21:35.424Z","updated_at":"2025-03-05T19:34:09.698Z","avatar_url":"https://github.com/JuliaApproximation.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ContinuumArrays.jl\nA package for representing quasi arrays with continuous dimensions\n\n[![Build Status](https://github.com/JuliaApproximation/ContinuumArrays.jl/workflows/CI/badge.svg)](https://github.com/JuliaApproximation/ContinuumArrays.jl/actions)\n[![codecov](https://codecov.io/gh/JuliaApproximation/ContinuumArrays.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/JuliaApproximation/ContinuumArrays.jl)\n[![docs](https://img.shields.io/badge/docs-dev-blue.svg)](https://JuliaApproximation.github.io/ContinuumArrays.jl/dev)\n\n\nA quasi array as implemented in [QuasiArrays.jl](https://github.com/JuliaApproximation/QuasiArrays.jl) is a \ngeneralization of an array that allows non-integer indexing via general axes. This package adds support for\ninfinite-dimensional axes, including continuous intervals. Thus it plays the same role as [InfiniteArrays.jl](https://github.com/JuliaArrays/InfiniteArrays.jl) does for standard arrays but now for quasi arrays. \n\nA simple example is the identity function on the interval `0..1`. This can be created using `Inclusion(d)`,\nwhich returns `x` if `x in d` is true, otherwise throws an error:\n```julia\njulia\u003e using ContinuumArrays, IntervalSets\n\njulia\u003e x = Inclusion(0..1.0)\nInclusion(0.0..1.0)\n\njulia\u003e size(x) # uncountable (aleph-1)\n(ℵ₁,)\n\njulia\u003e axes(x) # axis is itself\n(Inclusion(0.0..1.0),)\n\njulia\u003e x[0.1] # returns the input\n0.1\n\njulia\u003e x[1.1] # throws an error\nERROR: BoundsError: attempt to access Inclusion(0.0..1.0)\n  at index [1.1]\nStacktrace:\n [1] throw_boundserror(::Inclusion{Float64,Interval{:closed,:closed,Float64}}, ::Tuple{Float64}) at ./abstractarray.jl:538\n [2] checkbounds at /Users/solver/Projects/QuasiArrays.jl/src/abstractquasiarray.jl:287 [inlined]\n [3] getindex(::Inclusion{Float64,Interval{:closed,:closed,Float64}}, ::Float64) at /Users/solver/Projects/QuasiArrays.jl/src/indices.jl:158\n [4] top-level scope at REPL[14]:1\n```\n\nAn important usage is representing bases and function approximation, and this package contains\na basic implementation of linear splines and heaviside functions. For example, we can construct splines\nwith evenly spaced nodes via:\n```julia\njulia\u003e L = LinearSpline(0:0.2:1);\n\njulia\u003e size(L) # uncountable (alepha-1) by 11\n(ℵ₁, 6)\n\njulia\u003e axes(L) # The interval 0.0..1.0 by 1:6. \n(Inclusion(0.0..1.0), Base.OneTo(6))\n\njulia\u003e L[[0.15,0.25,0.45],1:6] # can index like an array\n3×6 Array{Float64,2}:\n 0.25  0.75  0.0   0.0   0.0  0.0\n 0.0   0.75  0.25  0.0   0.0  0.0\n 0.0   0.0   0.75  0.25  0.0  0.0\n```\nFunctions in this basis are represented by a lazy multiplication by a basis\nand a vector of coefficients:\n```julia\njulia\u003e f = L*[1,2,3,4,5,6]\nQuasiArrays.ApplyQuasiArray{Float64,1,typeof(*),Tuple{Spline{1,Float64},Array{Int64,1}}}(*, (Spline{1,Float64}([0.0, 0.2, 0.4, 0.6, 0.8, 1.0]), [1, 2, 3, 4, 5, 6]))\n\njulia\u003e axes(f)\n(Inclusion(0.0..1.0),)\n\njulia\u003e f[0.1]\n1.5\n```\n\nCreating a finite element method is possible using standard array terminology. \nWe always take the Lebesgue inner product associated with an axes, so in this\ncase the mass matrix is just `L'L`. Combined with a differentiation operator allows\nus to form the weak Laplacian.\n```julia\njulia\u003e B = L[:,2:end-1]; # drop boundary terms to impose zero Dirichlet\n\njulia\u003e D = Derivative(L); # Differentiation operator\n\njulia\u003e Δ = (D*B)'D*B # weak Laplacian\n4×4 BandedMatrices.BandedMatrix{Float64,Array{Float64,2},Base.OneTo{Int64}}:\n 10.0  -5.0    ⋅     ⋅ \n -5.0  10.0  -5.0    ⋅ \n   ⋅   -5.0  10.0  -5.0\n   ⋅     ⋅   -5.0  10.0\n\njulia\u003e B'f # right-hand side\n4-element Array{Float64,1}:\n 0.4\n 0.6\n 0.8\n 1.0\n\n julia\u003e c = Δ \\ B'f # coefficients of Poisson\n4-element Array{Float64,1}:\n 0.24               \n 0.4                \n 0.43999999999999995\n 0.3199999999999999 \n\njulia\u003e u = B*c; # expand in basis\n\njulia\u003e u[0.1] # evaluate at 0.1\n0.12\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaapproximation%2Fcontinuumarrays.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliaapproximation%2Fcontinuumarrays.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaapproximation%2Fcontinuumarrays.jl/lists"}