1 -- Glasow Haskell 0.403 : FINITE ELEMENT PROGRAM V2
    2 -- **********************************************************************
    3 -- *                                                                    *
    4 -- * FILE NAME : elemforce.hs           DATE : 13-3-1991                *
    5 -- *                                                                    *
    6 -- * CONTENTS : Computes element internal forces(only 2D bar element).  *
    7 -- *                                                                    *
    8 -- **********************************************************************
    9 
   10 module Elemforce ( forces, getefrc ) where
   11 
   12 import Basics
   13 import Vector
   14 import DB_interface
   15 import Displacement
   16 
   17 forces :: (Array Int Int, Array Int Float) -> 
   18                Vec Float -> Vec Float
   19         -- The vector which stores the internal forces of all elements
   20 
   21 getefrc :: (Array Int Int, Array Int Float) -> Int -> 
   22                Vec Float -> Float
   23         -- Return the internal force of given element
   24 
   25 forces db uvw =
   26         makevec (nelem db) force_2d_bar_s 
   27         where
   28         force_2d_bar_s = force_2d_bar db uvw
   29 
   30 getefrc db element frc =
   31         vecsub frc element
   32 
   33 force_2d_bar  db  uvw element =
   34         (ea / length) * ( (ur-ul)*c + (vr-vl)*s )
   35         where
   36         (nodel,noder) = getenlr db  element
   37         (ea,ei)       = getmpro db  ( getemat db  element)
   38         (xl,yl)       = getnxy db  nodel
   39         (xr,yr)       = getnxy db  noder
   40         c             = det_x / length
   41         s             = det_y / length
   42         det_x         = xr - xl
   43         det_y         = yr - yl
   44         length        = sqrt (det_x * det_x + det_y * det_y)
   45         (ul,vl,thetal) = getnuvw db  nodel uvw
   46         (ur,vr,thetar) = getnuvw db  noder uvw
   47 
   48