-- Glasow Haskell 0.403 : FINITE ELEMENT PROGRAM V2 -- ********************************************************************** -- * * -- * FILE NAME : db_interface.hs DATE : 13-3-1991 * -- * * -- * CONTENTS : The data base interface functions. * -- * * -- ********************************************************************** module DB_interface(nnode, nmats, getnxy, getnbc, getmpro, nelem, nplds, getenlr, getemat, getpld) where import Array import Database nnode, nelem, nmats, nplds :: (Array Int Int, Array Int Float) -> Int nnode (idb, rdb) = idb ! 0 nelem (idb, rdb) = idb ! 1 nmats (idb, rdb) = idb ! 2 nplds (idb, rdb) = idb ! 3 getnxy :: (Array Int Int, Array Int Float) -> Int -> (Float, Float) getnxy (idb, rdb) node = ( x, y ) where x = rdb ! index y = rdb ! (index + 1) index = (node - 1) * 2 getnbc :: (Array Int Int, Array Int Float) -> Int -> Int getnbc (idb, rdb) node = idb ! ( 3 + node ) getmpro :: (Array Int Int, Array Int Float) -> Int -> (Float, Float) getmpro (idb, rdb) material = (ea,ei) where ea = rdb ! index ei = rdb ! (index + 1) index = (nnode (idb, rdb))*2 + (material-1)*2 getenlr :: (Array Int Int, Array Int Float) -> Int -> (Int, Int) getenlr (idb, rdb) element = (nodel, noder) where nodel = idb ! index noder = idb ! (index + 1) index = 4 + (nnode (idb, rdb)) + (element-1)*3 getemat :: (Array Int Int, Array Int Float) -> Int -> Int getemat (idb, rdb) element = idb ! (3 + (nnode (idb, rdb)) + element*3 ) getpld :: (Array Int Int, Array Int Float) -> Int -> (Int, Float, Float, Float) getpld (idb, rdb) j = (to_node, px, py, m) where to_node = idb ! indexi px = rdb ! (indexr) py = rdb ! (indexr+1) m = rdb ! (indexr+2) indexi = 4 + nnodes + nelems * 3 + (j-1) indexr = nnodes * 2 + nmatss * 2 + (j-1)*3 nnodes = nnode (idb, rdb) nelems = nelem (idb, rdb) nmatss = nmats (idb, rdb)