source: issm/oecreview/Archive/25834-26739/ISSM-26633-26634.diff@ 26740

Last change on this file since 26740 was 26740, checked in by Mathieu Morlighem, 3 years ago

CHG: added 25834-26739

File size: 4.4 KB
  • ../trunk-jpl/src/jl/test101.jl

     
    33using .ISSM
    44
    55md = ISSM.model()
    6 md = ISSM.triangle(md,"../../test/Exp/Square.exp",180000.)
     6#md = ISSM.triangle(md,"../../test/Exp/Square.exp",180000.)
     7md = ISSM.triangle(md,"../../test/Exp/Square.exp",250000.)
    78md = ISSM.setmask(md,"all","")
    89
    910#Geometry
  • ../trunk-jpl/src/jl/solve/analyses.jl

     
    5252        end
    5353
    5454end#}}}
     55function GetSolutionFromInputs(analysis::StressbalanceAnalysis,ug::Vector{Float64},element::Tria) #{{{
     56        error("STOP")
     57end#}}}
     58
    5559function Core(analysis::StressbalanceAnalysis,femmodel::FemModel)# {{{
    5660
    5761        #Fetch parameters relevant to solution sequence
     
    6468        error("STOP")
    6569
    6670end #}}}
     71
     72
    6773function solutionsequence_nonlinear(femmodel::FemModel,analysis::Analysis,maxiter::Int64,restol::Float64,reltol::Float64,abstol::Float64) # {{{
    6874
    6975        #Initialize number of iterations
  • ../trunk-jpl/src/jl/solve/modules.jl

     
    3333        #Constrain and Number nodes
    3434        SpcNodesx(nodes,constraints,parameters)
    3535        NodesDofx(nodes,parameters)
    36         error("STOP")
    3736
    3837        #Build FemModel
    3938        return FemModel(elements,vertices,nodes,parameters,inputs,constraints)
     
    106105end# }}}
    107106function NodesDofx(nodes::Vector{Node}, parameters::Parameters) #{{{
    108107
    109         error("not implemented yet")
     108        #Do we have any nodes?
     109        if length(nodes)==0
     110                return
     111        end
    110112
     113        #Do we really need to update dof indexing
     114        if(~RequiresDofReindexing(nodes)) return end
     115
     116        print("   Renumbering degrees of freedom\n")
     117        DistributeDofs(nodes,GsetEnum)
     118        DistributeDofs(nodes,FsetEnum)
     119        DistributeDofs(nodes,SsetEnum)
     120
    111121end# }}}
     122function GetSolutionFromInputsx(analysis::Analysis,femmodel::FemModel) #{{{
     123
     124        #Get size of vector
     125        gsize = NumberOfDofs(femmodel.nodes,GsetEnum)
     126
     127        println(gsize)
     128        error("Stop ===")
     129
     130        #Initialize solution vector
     131        ug = Vector{Float64}(undef,gsize)
     132
     133        #Go through elements and plug in solution
     134        for i=1:length(femmodel.elements)
     135                GetSolutionFromInputs(analysis,ug,femmodel.elements[i])
     136        end
     137
     138        return ug
     139
     140end#}}}
  • ../trunk-jpl/src/jl/solve/nodes.jl

     
    3131        node.svalues[dof]   = value
    3232
    3333end# }}}
     34function DistributeDofs(node::Node,setenum::IssmEnum,dofcount::Int64) #{{{
     35
     36        if setenum==GsetEnum
     37                for i=1:node.gsize
     38                        node.gdoflist[i] = dofcount
     39                        dofcount += 1
     40                end
     41        elseif setenum==FsetEnum
     42                for i=1:node.gsize
     43                        if  node.fdoflist[i]!=-1
     44                                @assert node.sdoflist[i]==-1
     45                                node.fdoflist[i] = dofcount
     46                                dofcount += 1
     47                        end
     48                end
     49        elseif setenum==SsetEnum
     50                for i=1:node.gsize
     51                        if  node.sdoflist[i]!=-1
     52                                @assert node.fdoflist[i]==-1
     53                                node.sdoflist[i] = dofcount
     54                                dofcount += 1
     55                        end
     56                end
     57        else
     58                error("not supported")
     59        end
     60
     61        return dofcount
     62end# }}}
     63function GetNumberOfDofs(node::Node,setenum::IssmEnum) #{{{
     64
     65        if setenum==GsetEnum
     66                dofcount = node.gsize
     67        elseif setenum==FsetEnum
     68                dofcount = 0
     69                for i=1:node.gsize
     70                        if  node.fdoflist[i]!=-1
     71                                dofcount += 1
     72                        end
     73                end
     74        elseif setenum==SsetEnum
     75                dofcount = 0
     76                for i=1:node.gsize
     77                        if  node.sdoflist[i]!=-1
     78                                dofcount += 1
     79                        end
     80                end
     81        else
     82                error("not supported")
     83        end
     84
     85        return dofcount
     86
     87end# }}}
     88
     89#Nodes functions
     90function RequiresDofReindexing(nodes::Vector{Node}) #{{{
     91
     92        for i in 1:length(nodes)
     93                if nodes[i].indexingupdate
     94                        return true
     95                end
     96        end
     97
     98        return false
     99
     100end# }}}
     101function DistributeDofs(nodes::Vector{Node},setenum::IssmEnum) #{{{
     102
     103        dofcount = 1
     104
     105        for i in 1:length(nodes)
     106                dofcount = DistributeDofs(nodes[i],setenum,dofcount)
     107        end
     108
     109
     110end# }}}
     111function NumberOfDofs(nodes::Vector{Node},setenum::IssmEnum) #{{{
     112
     113        numdofs = 0
     114        for i in 1:length(nodes)
     115                numdofs += GetNumberOfDofs(nodes[i],setenum)
     116        end
     117        return numdofs
     118
     119end# }}}
Note: See TracBrowser for help on using the repository browser.