Exemplo n.º 1
0
  def getTangentStiffness ( self, elemdat ):
    
    #Compute the current state vector

    a  = toElementCoordinates( elemdat.state  , elemdat.coords )
    Da = toElementCoordinates( elemdat.Dstate , elemdat.coords )

    #Compute the elongation of the spring
    elong = a[2]-a[0] 

    #Compute the force in the spring
    Fs = elong * elemdat.props.k

    #Compute the element internal force vector in the element coordinate system
    elFint = array([-Fs,0.,Fs,0])

    #Determine the element tangent stiffness in the element coordinate system
    elKbar = zeros( (4,4) )

    elKbar[:2,:2] =  elemdat.props.k*eye(2)
    elKbar[:2,2:] = -elemdat.props.k*eye(2)

    elKbar[2:,:2] = elKbar[:2,2:]
    elKbar[2:,2:] = elKbar[:2,:2]

    #Rotate element tangent stiffness to the global coordinate system
    elemdat.stiff = toGlobalCoordinates( elKbar, elemdat.coords )
    elemdat.fint = toGlobalCoordinates( elFint, elemdat.coords )
Exemplo n.º 2
0
  def getInternalForce ( self, elemdat ):

    #Compute the current state vector

    a  = toElementCoordinates( elemdat.state , elemdat.coords )
    Da = toElementCoordinates( elemdat.Dstate, elemdat.coords )

    a0 = a - Da

    #Compute l0 and strains
    self.l0 = norm( elemdat.coords[1]-elemdat.coords[0] )

    ( epsilon , Depsilon ) = self.getStrain( a , a0 )
  
    #Compute the stress increment (multiplied
    #with the undeformed cross-sectional area)
    Dsigma = elemdat.props.E * Depsilon

    #Compute the current stress (multiplied
    #with the undeformed cross-sectional area)
    sigma = self.getHistoryParameter('sigma') + Dsigma

    #Update the history parameter
    self.setHistoryParameter( 'sigma', sigma )

    #Compute BL in the parent element coordinate system
    BL = self.getBL( a )

    #Compute the element internal force vector in the element coordinate system
    elFint = self.l0 * sigma * elemdat.props.Area * BL

    #Rotate element fint to the global coordinate system
    elemdat.fint = toGlobalCoordinates( elFint, elemdat.coords )
Exemplo n.º 3
0
    def getInternalForce(self, elemdat):

        #Compute the current state vector

        a = toElementCoordinates(elemdat.state, elemdat.coords)
        Da = toElementCoordinates(elemdat.Dstate, elemdat.coords)

        a0 = a - Da

        #Compute l0 and strains
        self.l0 = norm(elemdat.coords[1] - elemdat.coords[0])

        (epsilon, Depsilon) = self.getStrain(a, a0)

        #Compute the stress increment (multiplied
        #with the undeformed cross-sectional area)
        Dsigma = elemdat.props.E * Depsilon

        #Compute the current stress (multiplied
        #with the undeformed cross-sectional area)
        sigma = self.getHistoryParameter('sigma') + Dsigma

        #Update the history parameter
        self.setHistoryParameter('sigma', sigma)

        #Compute BL in the parent element coordinate system
        BL = self.getBL(a)

        #Compute the element internal force vector in the element coordinate system
        elFint = self.l0 * sigma * elemdat.props.Area * BL

        #Rotate element fint to the global coordinate system
        elemdat.fint = toGlobalCoordinates(elFint, elemdat.coords)
Exemplo n.º 4
0
    def getTangentStiffness(self, elemdat):

        #Compute the current state vector

        a = toElementCoordinates(elemdat.state, elemdat.coords)
        Da = toElementCoordinates(elemdat.Dstate, elemdat.coords)

        #Compute the elongation of the spring
        elong = a[2] - a[0]

        #Compute the force in the spring
        Fs = elong * elemdat.props.k

        #Compute the element internal force vector in the element coordinate system
        elFint = array([-Fs, 0., Fs, 0])

        #Determine the element tangent stiffness in the element coordinate system
        elKbar = zeros((4, 4))

        elKbar[:2, :2] = elemdat.props.k * eye(2)
        elKbar[:2, 2:] = -elemdat.props.k * eye(2)

        elKbar[2:, :2] = elKbar[:2, 2:]
        elKbar[2:, 2:] = elKbar[:2, :2]

        #Rotate element tangent stiffness to the global coordinate system
        elemdat.stiff = toGlobalCoordinates(elKbar, elemdat.coords)
        elemdat.fint = toGlobalCoordinates(elFint, elemdat.coords)
Exemplo n.º 5
0
  def getInternalForce ( self, elemdat ):

    #Compute the current state vector

    a  = toElementCoordinates( elemdat.state  , elemdat.coords )
    Da = toElementCoordinates( elemdat.Dstate , elemdat.coords )

    #Compute the elongation of the spring
    elong = a[2]-a[0] 

    #Compute the force in the spring
    Fs = elong * elemdat.props.k

    #Compute the element internal force vector in the element coordinate system
    elFint = array([-Fs,0.,Fs,0])

    #Rotate element fint to the global coordinate system
    elemdat.fint = toGlobalCoordinates( elFint, elemdat.coords )
Exemplo n.º 6
0
    def getInternalForce(self, elemdat):

        #Compute the current state vector

        a = toElementCoordinates(elemdat.state, elemdat.coords)
        Da = toElementCoordinates(elemdat.Dstate, elemdat.coords)

        #Compute the elongation of the spring
        elong = a[2] - a[0]

        #Compute the force in the spring
        Fs = elong * elemdat.props.k

        #Compute the element internal force vector in the element coordinate system
        elFint = array([-Fs, 0., Fs, 0])

        #Rotate element fint to the global coordinate system
        elemdat.fint = toGlobalCoordinates(elFint, elemdat.coords)