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 )
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)
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 )
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)
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 )
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)