diff src/LazyTensors/lazy_tensor_operations.jl @ 1355:102ebdaf7c11 feature/variable_derivatives

Merge default
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 08 Feb 2023 21:21:28 +0100
parents fa0800591306 6f51160c7ca7
children 49d03d1169ef
line wrap: on
line diff
--- a/src/LazyTensors/lazy_tensor_operations.jl	Fri Feb 03 22:50:42 2023 +0100
+++ b/src/LazyTensors/lazy_tensor_operations.jl	Wed Feb 08 21:21:28 2023 +0100
@@ -100,7 +100,6 @@
     apply_transpose(c.t2, c.t1'*v, I...)
 end
 
-
 """
     TensorComposition(tm, tmi::IdentityTensor)
     TensorComposition(tmi::IdentityTensor, tm)
@@ -122,6 +121,8 @@
     return tmi
 end
 
+Base.:*(a::T, tm::LazyTensor{T}) where T = TensorComposition(ScalingTensor{T,range_dim(tm)}(a,range_size(tm)), tm)
+Base.:*(tm::LazyTensor{T}, a::T) where T = a*tm
 
 """
     InflatedTensor{T,R,D} <: LazyTensor{T,R,D}
@@ -272,11 +273,20 @@
 
 
 """
-    inflate(tm, sz, dir)
+    inflate(tm::LazyTensor, sz, dir)
+
+Inflate `tm` such that it gets the size `sz` in all directions except `dir`.
+Here `sz[dir]` is ignored and replaced with the range and domains size of
+`tm`.
 
-Inflate `tm` with identity tensors in all directions `d` for `d != dir`.
+An example of when this operation is useful is when extending a one
+dimensional difference operator `D` to a 2D grid of a ceratin size. In that
+case we could have
 
-# TODO: Describe when it is useful
+```julia
+Dx = inflate(D, (10,10), 1)
+Dy = inflate(D, (10,10), 2)
+```
 """
 function inflate(tm::LazyTensor, sz, dir)
     Is = IdentityTensor{eltype(tm)}.(sz)