Changeset 26718


Ignore:
Timestamp:
12/08/21 07:37:31 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: lot more efficient with assembly

Location:
issm/trunk-jpl/src/jl/solve
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/jl/solve/modules.jl

    r26703 r26718  
    216216                AddToGlobal!(pe,pf)
    217217        end
     218
     219        Assemble!(Kff)
     220        Assemble!(Kfs)
     221        Assemble!(pf)
    218222       
    219223        return Kff, Kfs, pf
  • TabularUnified issm/trunk-jpl/src/jl/solve/toolkits.jl

    r26699 r26718  
    55#Matrix
    66mutable struct IssmMatrix #{{{
     7        M::Int64
     8        N::Int64
     9        rows::Vector{Int64}
     10        cols::Vector{Int64}
     11        vals::Vector{Float64}
    712        matrix::SparseMatrixCSC{Float64,Int64}
    813end #}}}
    914function IssmMatrix(M::Int64,N::Int64)#{{{
    10         return IssmMatrix(spzeros(M,N))
     15        return IssmMatrix(M, N, Vector{Int64}(undef,0), Vector{Int64}(undef,0), Vector{Float64}(undef,0), spzeros(0,0))
    1116end#}}}
    1217function AddValues!(matrix::IssmMatrix,m::Int64,midx::Vector{Int64},n::Int64,nidx::Vector{Int64},values::Matrix{Float64})#{{{
     
    1722                for j in 1:n
    1823                        if(nidx[j]==-1) continue end
    19                         matrix.matrix[midx[i],nidx[j]] += values[i,j]
     24                        push!(matrix.rows, midx[i])
     25                        push!(matrix.cols, nidx[j])
     26                        push!(matrix.vals, values[i,j])
    2027                end
    2128        end
     
    2532
    2633        return size(matrix.matrix)
     34
     35end#}}}
     36function Assemble!(matrix::IssmMatrix)#{{{
     37
     38        matrix.matrix = sparse(matrix.rows, matrix.cols, matrix.vals, matrix.M, matrix.N)
    2739
    2840end#}}}
     
    7587
    7688end#}}}
     89function Assemble!(vector::IssmVector)#{{{
     90
     91        #Nothing to do for this toolkit
     92
     93end#}}}
    7794function Norm(x::IssmVector,type::Int64)#{{{
    7895
Note: See TracChangeset for help on using the changeset viewer.