Changeset 26698


Ignore:
Timestamp:
12/02/21 10:45:36 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: done with VecMerge

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

Legend:

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

    r26686 r26698  
    161161
    162162end#}}}
     163function Mergesolutionfromftogx(ug::IssmVector, uf::IssmVector, ys::IssmVector, nodes::Vector{Node}) #{{{
     164
     165        #Go through elements and plug in solution
     166        for i=1:length(nodes)
     167                VecMerge(nodes[i],ug,uf.vector,ys.vector)
     168        end
     169
     170        return ug
     171
     172end#}}}
    163173function Reduceloadx!(pf::IssmVector, Kfs::IssmMatrix, ys::IssmVector) #{{{
    164174
  • issm/trunk-jpl/src/jl/solve/nodes.jl

    r26686 r26698  
    145145
    146146end# }}}
     147function VecMerge(node::Node,ug::IssmVector,uf::Vector{Float64},ys::Vector{Float64}) #{{{
     148
     149        fsize = FSize(node)
     150        ssize = SSize(node)
     151
     152        if fsize>0
     153                indices = Vector{Int64}(undef,fsize)
     154                values  = Vector{Float64}(undef,fsize)
     155
     156                count = 1
     157                for i=1:node.gsize
     158                        if node.fdoflist[i]!=-1
     159                                indices[count] = node.gdoflist[i]
     160                                values[count]  = uf[node.fdoflist[i]]
     161                                count += 1
     162                        end
     163                end
     164                SetValues!(ug,fsize,indices,values)
     165        end
     166
     167        if ssize>0
     168                indices = Vector{Int64}(undef,ssize)
     169                values  = Vector{Float64}(undef,ssize)
     170
     171                count = 1
     172                for i=1:node.gsize
     173                        if node.sdoflist[i]!=-1
     174                                indices[count] = node.gdoflist[i]
     175                                values[count]  = ys[node.sdoflist[i]]
     176                                count += 1
     177                        end
     178                end
     179                SetValues!(ug,ssize,indices,values)
     180        end
     181
     182end# }}}
    147183function SSize(node::Node) #{{{
    148184
    149185        ssize = 0
     186
     187        for i=1:node.gsize
     188                if node.sdoflist[i]!=-1
     189                        ssize+=1
     190                end
     191        end
     192
     193        return ssize
     194
     195end# }}}
     196function FSize(node::Node) #{{{
     197
     198        fsize = 0
    150199
    151200        for i=1:node.gsize
    152201                if node.fdoflist[i]!=-1
    153                         ssize+=1
    154                 end
    155         end
    156 
    157         return ssize
     202                        fsize+=1
     203                end
     204        end
     205
     206        return fsize
    158207
    159208end# }}}
  • issm/trunk-jpl/src/jl/solve/solutionsequences.jl

    r26686 r26698  
    2626                uf = Solverx(Kff, pf, old_uf)
    2727
    28                 print(uf)
     28                #Merge uf with ys
     29                Mergesolutionfromftogx(ug, uf, ys, femmodel.nodes)
     30
     31                print(ug)
    2932                error("compare with ISSM...")
    3033
  • issm/trunk-jpl/src/jl/solve/toolkits.jl

    r26686 r26698  
    7373
    7474        x = IssmVector(GetSize(xold))
    75         x.vector = (b.vector\A.matrix)' #not sure why we need to transpose... that's a mystery!
     75        x.vector = (A.matrix\b.vector)
    7676
    7777        return x
Note: See TracChangeset for help on using the changeset viewer.