-- Glasow Haskell 0.403 : FINITE ELEMENT PROGRAM V2
-- **********************************************************************
-- * *
-- * FILE NAME : elemforce.hs DATE : 13-3-1991 *
-- * *
-- * CONTENTS : Computes element internal forces(only 2D bar element). *
-- * *
-- **********************************************************************
module Elemforce ( forces, getefrc ) where
import Basics
import Vector
import DB_interface
import Displacement
forces :: (Array Int Int, Array Int Float) ->
Vec Float -> Vec Float
-- The vector which stores the internal forces of all elements
getefrc :: (Array Int Int, Array Int Float) -> Int ->
Vec Float -> Float
-- Return the internal force of given element
forces db uvw =
makevec (nelem db) force_2d_bar_s
where
force_2d_bar_s = force_2d_bar db uvw
getefrc db element frc =
vecsub frc element
force_2d_bar db uvw element =
(ea / length) * ( (ur-ul)*c + (vr-vl)*s )
where
(nodel,noder) = getenlr db element
(ea,ei) = getmpro db ( getemat db element)
(xl,yl) = getnxy db nodel
(xr,yr) = getnxy db noder
c = det_x / length
s = det_y / length
det_x = xr - xl
det_y = yr - yl
length = sqrt (det_x * det_x + det_y * det_y)
(ul,vl,thetal) = getnuvw db nodel uvw
(ur,vr,thetar) = getnuvw db noder uvw
|