annotate ext/DiffinitiveSparseArraysExt.jl @ 2015:5c2448d6a201 feature/grids/geometry_functions tip

Structure tests a bit more
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 09 May 2025 15:57:38 +0200
parents 471a948cd2b2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1708
diff changeset
1 module DiffinitiveSparseArraysExt
1699
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1708
diff changeset
3 using Diffinitive
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1708
diff changeset
4 using Diffinitive.LazyTensors
1699
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 using SparseArrays
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 using Tokens
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8
1708
8787b2f9f5f8 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1699
diff changeset
9 """
8787b2f9f5f8 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1699
diff changeset
10 sparse(t::LazyTensor)
8787b2f9f5f8 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1699
diff changeset
11
8787b2f9f5f8 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1699
diff changeset
12 The sparse matrix representation of `t`.
8787b2f9f5f8 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1699
diff changeset
13
8787b2f9f5f8 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1699
diff changeset
14 If `L` is a `LazyTensor` and `v` a tensor, then `A = sparse(L)` is constructed
8787b2f9f5f8 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1699
diff changeset
15 so that `A*reshape(v,:) == reshape(L*v,:)`.
8787b2f9f5f8 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1699
diff changeset
16 """
1699
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 function SparseArrays.sparse(t::LazyTensor)
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 v = ArrayToken(:v, prod(domain_size(t)))
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 v̄ = reshape(v,domain_size(t)...)
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 tv = reshape(t*v̄, :)
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 return Tokens._to_matrix(tv, prod(range_size(t)), prod(domain_size(t)))
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 end
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24
3e9c3986930d Add extensions for SparseArrays and SparseArrayKit that allow conversion of a LazyTensor
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 end