diff src/LazyTensors/LazyTensors.jl @ 1025:e74c41c4b60e feature/dissipation_operators

Merge refactor/sbpoperators/inflation
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 21 Mar 2022 15:12:59 +0100
parents d9476fede83d
children 6abbb2c6c3e4
line wrap: on
line diff
--- a/src/LazyTensors/LazyTensors.jl	Fri Mar 18 15:44:03 2022 +0100
+++ b/src/LazyTensors/LazyTensors.jl	Mon Mar 21 15:12:59 2022 +0100
@@ -1,17 +1,36 @@
 module LazyTensors
 
-export LazyTensorMappingApplication
-export LazyTensorMappingTranspose
-export TensorMappingComposition
+export LazyTensorApplication
+export LazyTensorTranspose
+export LazyTensorComposition
 export LazyLinearMap
-export IdentityMapping
-export InflatedTensorMapping
+export IdentityTensor
+export ScalingTensor
+export InflatedLazyTensor
 export LazyOuterProduct
 export ⊗
-export SizeMismatch
+export DomainSizeMismatch
+export RangeSizeMismatch
 
-include("tensor_mapping.jl")
+include("lazy_tensor.jl")
+include("tensor_types.jl")
 include("lazy_array.jl")
 include("lazy_tensor_operations.jl")
+include("tuple_manipulation.jl")
+
+# Applying lazy tensors to vectors
+Base.:*(a::LazyTensor, v::AbstractArray) = LazyTensorApplication(a,v)
+Base.:*(a::LazyTensor, b::LazyTensor) = throw(MethodError(Base.:*,(a,b)))
+Base.:*(a::LazyTensor, args::Union{LazyTensor, AbstractArray}...) = foldr(*,(a,args...))
+
+# Addition and subtraction of lazy tensors
+Base.:+(s::LazyTensor, t::LazyTensor) = LazyTensorBinaryOperation{:+}(s,t)
+Base.:-(s::LazyTensor, t::LazyTensor) = LazyTensorBinaryOperation{:-}(s,t)
+
+# Composing lazy tensors
+Base.:∘(s::LazyTensor, t::LazyTensor) = LazyTensorComposition(s,t)
+
+# Outer products of tensors
+⊗(a::LazyTensor, b::LazyTensor) = LazyOuterProduct(a,b)
 
 end # module