diff --git a/src/FEM/ParamDataStructures/ParamSparseMatrices.jl b/src/FEM/ParamDataStructures/ParamSparseMatrices.jl index 246d3218..a3c23117 100755 --- a/src/FEM/ParamDataStructures/ParamSparseMatrices.jl +++ b/src/FEM/ParamDataStructures/ParamSparseMatrices.jl @@ -110,6 +110,16 @@ struct ConsecutiveParamSparseMatrixCSC{Tv,Ti<:Integer,A<:AbstractMatrix{Tv}} <: data::A end +function ConsecutiveParamSparseMatrixCSC( + m::Integer, + n::Integer, + colptr::Vector{Ti}, + rowval::Vector{Ti}, + data::A + ) where {Tv,Ti<:Integer,A<:AbstractMatrix{Tv}} + ConsecutiveParamSparseMatrixCSC(Int(m),Int(n),colptr,rowval,data) +end + param_length(A::ConsecutiveParamSparseMatrixCSC) = size(A.data,2) get_all_data(A::ConsecutiveParamSparseMatrixCSC) = A.data diff --git a/test/FEM/param_data_structures.jl b/test/FEM/param_data_structures.jl index 6da01180..fe65a3ce 100644 --- a/test/FEM/param_data_structures.jl +++ b/test/FEM/param_data_structures.jl @@ -2,6 +2,7 @@ module ParamDataStructuresTests using Test using LinearAlgebra +using SparseArrays using Gridap using Gridap.Arrays using Gridap.Fields @@ -115,6 +116,18 @@ end @test iszero(A[1,2]) end +@testset "ConsecutiveParamSparseMatrixCSC accepts Integer dimensions" begin + m = Int32(2) + n = Int32(3) + colptr = Int32[1,2,3,4] + rowval = Int32[1,2,1] + data = reshape([1.0,2.0,3.0],3,1) + A = ConsecutiveParamSparseMatrixCSC(m,n,colptr,rowval,data) + @test A isa ConsecutiveParamSparseMatrixCSC{Float64,Int32} + @test innersize(A) == (2,3) + @test nnz(A) == 3 +end + @testset "ConsecutiveParamArray arithmetic" begin l = 5 n = 8