Changeset 26628


Ignore:
Timestamp:
11/16/21 07:08:06 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: working on MP with Joel

File:
1 edited

Legend:

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

    r26622 r26628  
    135135        svalues::Vector{Float64}
    136136end# }}}
     137function Base.show(io::IO, this::Node)# {{{
     138
     139        println(io,"Node:")
     140        println(io,"   id:  ",this.id)
     141        println(io,"   sid: ",this.sid)
     142        println(io,"   indexingupdate: ",this.indexingupdate)
     143        println(io,"   gsize: ",this.gsize)
     144        println(io,"   gdoflist: ",this.gdoflist)
     145        println(io,"   fdoflist: ",this.fdoflist)
     146        println(io,"   sdoflist: ",this.sdoflist)
     147        println(io,"   svalues: ",this.svalues)
     148end# }}}
     149function ApplyConstraint(node::Node,dof::Int8,value::Float64) #{{{
     150
     151        node.indexingupdate = true
     152        node.fdoflist[dof]  = -1
     153        node.sdoflist[dof]  = +1
     154        node.svalues[dof]   = value
     155
     156end# }}}
    137157struct Constraint #{{{
    138158        id::Int64
     
    140160        dof::Int8
    141161        value::Float64
     162end# }}}
     163function ConstrainNode(constraint::Constraint,nodes::Vector{Node},parameters::Parameters) #{{{
     164
     165        #Chase through nodes and find the node to which this SpcStatic apply
     166        node = nodes[constraint.nodeid]
     167
     168        #Apply Constraint
     169        ApplyConstraint(node,constraint.dof,constraint.value)
     170
    142171end# }}}
    143172mutable struct Vertex#{{{
     
    254283        ConfigureObjectx(elements,nodes,vertices,parameters,inputs)
    255284
     285        #Constrain and Number nodes
     286        SpcNodesx(nodes,constraints,parameters)
     287        NodesDofx(nodes,parameters)
     288   error("STOP")
     289
    256290        #Build FemModel
    257291        return FemModel(elements,vertices,nodes,parameters,inputs,constraints)
     
    265299        tempinputs   = Inputs(-1,-1,Dict{IssmEnum,Input}())
    266300        tempvertices = Vector{Vertex}(undef,3)
    267         tempnodes    = Vector{Node}(undef,0)
     301        tempnodes    = Vector{Node}(undef,3)
    268302
    269303        count = 0
    270304        for i in 1:md.mesh.numberofelements
    271                 push!(elements,Tria(i,count,md.mesh.elements[i,:],tempvertices,Vector{Int64}(undef,0),tempnodes,tempparams,tempinputs))
     305
     306                #Assume Linear Elements for now
     307                vertexids = md.mesh.elements[i,:]
     308                nodeids   = md.mesh.elements[i,:]
     309
     310                #Call constructor and add to dataset elements
     311                push!(elements,Tria(i,count,vertexids,tempvertices,nodeids,tempnodes,tempparams,tempinputs))
    272312        end
    273313
     
    307347        end
    308348
     349end# }}}
     350function SpcNodesx(nodes::Vector{Node},constraints::Vector{Constraint},parameters::Parameters) #{{{
     351
     352        for i in 1:length(constraints)
     353                ConstrainNode(constraints[i],nodes,parameters)
     354        end
     355
     356end# }}}
     357function NodesDofx(nodes::Vector{Node}, parameters::Parameters) #{{{
     358
     359        error("not implemented yet")
    309360
    310361end# }}}
     
    321372        numdof = 2
    322373        for i in 1:md.mesh.numberofvertices
    323                 push!(nodes,Node(i,i,true,numdof,Vector{Int64}(undef,numdof), Vector{Int64}(undef,numdof), Vector{Int64}(undef,numdof), zeros(numdof)))
     374                push!(nodes,Node(i,i,true,numdof,-ones(Int64,numdof), ones(Int64,numdof), -ones(Int64,numdof), zeros(numdof)))
    324375        end
    325376end#}}}
     
    426477   end
    427478
     479        #Configure nodes (assuming P1 finite elements)
     480        for i in 1:3
     481                element.nodes[i] = nodes[element.nodeids[i]]
     482        end
     483
    428484        #Point to real datasets
    429485        element.parameters = parameters
Note: See TracChangeset for help on using the changeset viewer.