diff --git a/src/tensors/abstracttensor.jl b/src/tensors/abstracttensor.jl index 823280e07..7f068369a 100644 --- a/src/tensors/abstracttensor.jl +++ b/src/tensors/abstracttensor.jl @@ -224,7 +224,8 @@ end # tensor characteristics: work on instances and pass to type #------------------------------------------------------------ InnerProductStyle(t::AbstractTensorMap) = InnerProductStyle(typeof(t)) -storagetype(t::AbstractTensorMap) = storagetype(typeof(t)) +storagetype(t) = storagetype(typeof(t)) +storagetype(T::Type) = throw(MethodError(storagetype, T)) blocktype(t::AbstractTensorMap) = blocktype(typeof(t)) numout(t::AbstractTensorMap) = numout(typeof(t)) diff --git a/src/tensors/sectorvector.jl b/src/tensors/sectorvector.jl index 8f133b20e..70719f55f 100644 --- a/src/tensors/sectorvector.jl +++ b/src/tensors/sectorvector.jl @@ -37,6 +37,7 @@ Base.size(v::SectorVector, args...) = size(parent(v), args...) Base.similar(v::SectorVector) = SectorVector(similar(v.data), v.structure) Base.similar(v::SectorVector, ::Type{T}) where {T} = SectorVector(similar(v.data, T), v.structure) Base.similar(v::SectorVector, V::ElementarySpace) = SectorVector{eltype(v), sectortype(V), storagetype(v)}(undef, V) +Base.similar(v::SectorVector, ::Type{T}, V::ElementarySpace) where {T} = SectorVector(similar(v.data, T, reduceddim(V)), V) Base.copy(v::SectorVector) = SectorVector(copy(v.data), v.structure)