module Language.Paraiso.OM
(
OM(..), makeOM
) where
import qualified Data.Vector as V
import Language.Paraiso.Name
import Language.Paraiso.OM.Builder (Builder, buildKernel)
import Language.Paraiso.OM.Graph
import Language.Paraiso.OM.DynValue (DynValue)
import NumericPrelude
data OM vector gauge anot
= OM
{ omName :: Name,
setup :: Setup vector gauge anot,
kernels :: V.Vector (Kernel vector gauge anot)
}
deriving (Show)
instance Nameable (OM v g a) where
name = omName
makeOM ::
Name
-> a
-> [Named DynValue]
-> [Named (Builder v g a ())]
-> OM v g a
makeOM name0 a0 vars0 kerns
= OM {
omName = name0,
setup = setup0,
kernels = V.fromList $ map (\(Named n b) -> buildKernel setup0 n b) kerns
}
where
setup0 = Setup { staticValues = V.fromList vars0, globalAnnotation = a0 }