{"id":20500576,"url":"https://github.com/juliaapproximation/harmonicorthogonalpolynomials.jl","last_synced_at":"2025-03-05T19:33:55.212Z","repository":{"id":39641389,"uuid":"247693697","full_name":"JuliaApproximation/HarmonicOrthogonalPolynomials.jl","owner":"JuliaApproximation","description":"A Julia package for working with spherical harmonic expansions","archived":false,"fork":false,"pushed_at":"2025-01-30T11:02:19.000Z","size":109,"stargazers_count":23,"open_issues_count":13,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-28T06:27:43.182Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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":"2020-03-16T12:14:17.000Z","updated_at":"2025-02-26T04:27:00.000Z","dependencies_parsed_at":"2022-07-10T22:31:10.622Z","dependency_job_id":"189e1d85-d3f7-40d0-88b2-1d924a6fc9e8","html_url":"https://github.com/JuliaApproximation/HarmonicOrthogonalPolynomials.jl","commit_stats":{"total_commits":66,"total_committers":5,"mean_commits":13.2,"dds":0.3787878787878788,"last_synced_commit":"f6042103610b83204743655887936892e08a1e6d"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FHarmonicOrthogonalPolynomials.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FHarmonicOrthogonalPolynomials.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FHarmonicOrthogonalPolynomials.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaApproximation%2FHarmonicOrthogonalPolynomials.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuliaApproximation","download_url":"https://codeload.github.com/JuliaApproximation/HarmonicOrthogonalPolynomials.jl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242092319,"owners_count":20070501,"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:41.517Z","updated_at":"2025-03-05T19:33:55.163Z","avatar_url":"https://github.com/JuliaApproximation.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HarmonicOrthogonalPolynomials.jl\nA Julia package for working with spherical harmonic expansions and\nharmonic polynomials in  balls.\n\n\n[![Build Status](https://github.com/JuliaApproximation/HarmonicOrthogonalPolynomials.jl/workflows/CI/badge.svg)](https://github.com/JuliaApproximation/HarmonicOrthogonalPolynomials.jl/actions)\n[![codecov](https://codecov.io/gh/JuliaApproximation/HarmonicOrthogonalPolynomials.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/JuliaApproximation/HarmonicOrthogonalPolynomials.jl)\n\n\nA [harmonic polynomial](https://en.wikipedia.org/wiki/Harmonic_polynomial) is a multivariate polynomial that solves Laplace's equation. \n[Spherical harmonics](https://en.wikipedia.org/wiki/Spherical_harmonics) are restrictions of harmonic polynomials to the sphere. Importantly they\nare orthogonal. This package is primarily an implementation of spherical harmonics (in 2D and 3D) but exploiting their \npolynomial features.\n\nCurrently this package focusses on support for\n3D spherical harmonics. We use the convention of [FastTransforms](https://mikaelslevinsky.github.io/FastTransforms/transforms.html) for real spherical harmonics:\n```julia\njulia\u003e θ,φ = 0.1,0.2 # θ is polar, φ is azimuthal (physics convention)\n\njulia\u003e sphericalharmonicy(ℓ, m, θ, φ)\n0.07521112971423363 + 0.015246050775019674im\n```\nBut we also allow function approximation, building on top of  [ContinuumArrays.jl](https://github.com/JuliaApproximation/ContinuumArrays.jl) and [ClassicalOrthogonalPolynomials.jl](https://github.com/JuliaApproximation/ClassicalOrthogonalPolynomials.jl):\n```julia\njulia\u003e S = SphericalHarmonic() # A quasi-matrix representation of spherical harmonics\nSphericalHarmonic{Complex{Float64}}\n\njulia\u003e S[SphericalCoordinate(θ,φ),Block(ℓ+1)] # evaluate all spherical harmonics with specified ℓ\n5-element Array{Complex{Float64},1}:\n 0.003545977402630546 - 0.0014992151996309556im\n  0.07521112971423363 - 0.015246050775019674im\n    0.621352880681805 + 0.0im\n  0.07521112971423363 + 0.015246050775019674im\n 0.003545977402630546 + 0.0014992151996309556im\n\njulia\u003e 𝐱 = axes(S,1) # represent the unit sphere as a quasi-vector\nInclusion(the 3-dimensional unit sphere)\n\njulia\u003e f = 𝐱 -\u003e ((x,y,z) = 𝐱; exp(x)*cos(y*sin(z))); # function to be approximation\n\njulia\u003e S \\ f.(𝐱) # expansion coefficients, adaptively computed\n∞-blocked ∞-element BlockedArray{Complex{Float64},1,LazyArrays.CachedArray{Complex{Float64},1,Array{Complex{Float64},1},Zeros{Complex{Float64},1,Tuple{InfiniteArrays.OneToInf{Int64}}}},Tuple{BlockedOneTo{Int,ArrayLayouts.RangeCumsum{Int64,InfiniteArrays.InfStepRange{Int64,Int64}}}}}:\n        4.05681442931116 + 0.0im                   \n ──────────────────────────────────────────────────\n      1.5777291816142751 + 3.19754060061646e-16im  \n  -8.006900295635809e-17 + 0.0im                   \n      1.5777291816142751 - 3.539535261006306e-16im \n ──────────────────────────────────────────────────\n      0.3881560551355611 + 5.196884701505137e-17im \n  -7.035627371746071e-17 + 2.5784941810054987e-18im\n    -0.30926350498081934 + 0.0im                   \n   -6.82462130695514e-17 - 3.515332651034677e-18im \n      0.3881560551355611 - 6.271963079558218e-17im \n ──────────────────────────────────────────────────\n     0.06830566496722756 - 8.852861226980248e-17im \n -2.3672451919730833e-17 + 2.642173739237023e-18im \n     -0.0514592471634392 - 1.5572791163000952e-17im\n  1.1972144648274198e-16 + 0.0im                   \n    -0.05145924716343915 + 1.5264133695821818e-17im\n                         ⋮\n\njulia\u003e f̃ = S * (S \\ f.(𝐱)); # expansion of f in spherical harmonics\n\njulia\u003e f̃[SphericalCoordinate(θ,φ)] # approximates f\n1.1026374731849062 + 4.004893695029451e-16im\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaapproximation%2Fharmonicorthogonalpolynomials.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliaapproximation%2Fharmonicorthogonalpolynomials.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliaapproximation%2Fharmonicorthogonalpolynomials.jl/lists"}