-- Glasow Haskell 0.403 : FINITE ELEMENT PROGRAM V2 -- ********************************************************************** -- * * -- * FILE NAME : assemble_loadvec.hs DATE : 13-3-1991 * -- * * -- * CONTENTS : Assemble the global load vector. * -- * * -- ********************************************************************** module Assemble_loadvec (loadvec) where import Basics import Vector import DB_interface import Degrees loadvec :: (Array Int Int, Array Int Float) -> Vec Float loadvec s = incrvec initial_value index_value_assoc_s where initial_value = makevec (ndgrs s) ( \ i -> 0.0 ) index_value_assoc_s = index_value_assoc s index_value_assoc s = foldl assemble_s [] [1 .. (nplds s)] where assemble_s = assemble s assemble s till_now_d ii = till_now_d ++ d_this' where d_this' = filter valid_degree (azip degrees loads) valid_degree (dgr , x) = (dgr /=0) degrees = getndgr s node loads = [px,py,m] (node,px,py,m) = getpld s ii