Skip to content

Commit

Permalink
Rewrite the derivatives implementation. (#51)
Browse files Browse the repository at this point in the history
* WIP: rewrite univariate and partials spec

* remove unused code

* re-enable rest of package, minor rearrangements

* fix partial derivatives calculations

* documentation, first pass

* add a shortcut

* add compat for new dependency

* add JET and Aqua testing, remove cruft from Project.toml

* make linear_combination work with SVector of coefficients

* add simple test for Chebyshev derivatives

* add tests for other univariate transformations

* clean up tests a bit

* re-enable endpoint continuity for derivatives

* try to fix documenter workflow
  • Loading branch information
tpapp authored Jun 18, 2024
1 parent ab35ca5 commit 85d51ae
Show file tree
Hide file tree
Showing 23 changed files with 1,291 additions and 767 deletions.
23 changes: 0 additions & 23 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,26 +45,3 @@ jobs:
- uses: codecov/codecov-action@v1
with:
file: lcov.info
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: julia-actions/setup-julia@v1
with:
version: '1'
- run: |
julia --project=docs -e '
using Pkg
Pkg.develop(PackageSpec(path=pwd()))
Pkg.instantiate()'
- run: |
julia --project=docs -e '
using Documenter: doctest, DocMeta
using SpectralKit
DocMeta.setdocmeta!(SpectralKit, :DocTestSetup, :(using SpectralKit); recursive=true)
doctest(SpectralKit)'
- run: julia --project=docs docs/make.jl
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}
27 changes: 27 additions & 0 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# see https://juliadocs.github.io/Documenter.jl/dev/man/hosting/#GitHub-Actions
# uncomment file below once you set up authentication as described in the Documenter manual

name: Documentation

# on:
# push:
# branches:
# - master
# tags: '*'
# pull_request:

# jobs:
# build:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v2
# - uses: julia-actions/setup-julia@latest
# with:
# version: '1.6'
# - name: Install dependencies
# run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
# - name: Build and deploy
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # If authenticating with GitHub Actions token
# DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # If authenticating with SSH deploy key
# run: julia --project=docs/ docs/make.jl
11 changes: 2 additions & 9 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,12 @@ version = "0.15.0"
[deps]
ArgCheck = "dce04be8-c92d-5529-be00-80e4d2c0e197"
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

[compat]
ArgCheck = "1, 2"
DocStringExtensions = "0.8, 0.9"
OrderedCollections = "1"
StaticArrays = "1"
julia = "1.9"

[extras]
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
Sobol = "ed01d8cd-4d21-5b2a-85b4-cc3bdc58bad4"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["BenchmarkTools", "Test", "ForwardDiff", "Sobol"]
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
[![Documentation](https://img.shields.io/badge/docs-stable-blue.svg)](https://tpapp.github.io/SpectralKit.jl/stable)
[![Documentation](https://img.shields.io/badge/docs-master-blue.svg)](https://tpapp.github.io/SpectralKit.jl/dev)
[![DOI](https://zenodo.org/badge/220448027.svg)](https://zenodo.org/badge/latestdoi/220448027)
[![Aqua QA](https://raw.githubusercontent.com/JuliaTesting/Aqua.jl/master/badge.svg)](https://github.com/JuliaTesting/Aqua.jl)

Building blocks of spectral methods for Julia. Currently includes Chebyshev polynomials on univariate and Smolyak (multivariate) grids, with domain transformations to semi-infinite and infinite domains.

Expand Down
6 changes: 3 additions & 3 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ This package was designed primarily for solving functional equations, as usually
4. allocation-free, thread safe linear combinations for the above with a given set of coefficients,
5. using [static arrays](https://github.com/JuliaArrays/StaticArrays.jl) extensively to avoid allocation and unroll *some* loops.

While there is some functionality in this package to *fit* approximations to existing functions, it is not ideal for that, as it was optimized for mapping a set of coefficients to residuals of functional equations at gridpoints.
While there is some functionality in this package to *fit* approximations to existing functions, it does not use optimized algorithms (DCT) for that, as it was optimized for mapping a set of coefficients to residuals of functional equations at gridpoints.

Also, while the package should interoperate seamlessly with most AD frameworks, only the derivative API (explained below) is guaranteed to have correct derivatives of limits near infinity.

Expand Down Expand Up @@ -169,10 +169,10 @@ is_subset_basis
!!! note
API for derivatives is still experimental and subject to change.

For univariate functions, use [`derivatives`](@ref). For multivariate functions, use partial derivatives with ``.
For univariate functions, use [`𝑑`](@ref). For multivariate functions, use partial derivatives with [``](@ref).

```@docs
derivatives
𝑑
```

Expand Down
1 change: 1 addition & 0 deletions src/SpectralKit.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module SpectralKit

using ArgCheck: @argcheck
using DocStringExtensions: FUNCTIONNAME, SIGNATURES, TYPEDEF
using OrderedCollections: OrderedSet
using StaticArrays: MVector, SVector, sacollect

include("utilities.jl")
Expand Down
Loading

0 comments on commit 85d51ae

Please sign in to comment.