# -*- Mode:Python; explicit-buffer-name: "hMetis.conf<common>" -*-

# hMETIS parameters.
parametersTable = \
    ( ("metis.globalConnectionsWeightRatio"  , TypeInt       ,1    )
    , ("metis.numberOfInstancesStopCriterion", TypeInt       ,45   )
    , ("metis.numberOfTriedBisections"       , TypeInt       ,10   )
    , ("metis.partOrKWayHMetis"              , TypeBool      ,True )
    , ("metis.tuneHMetisParameters"          , TypeBool      ,False)
    , ("metis.ubFactor"                      , TypeInt       ,0    )

    , ("metis.CType", TypeEnumerate ,1
      , { 'values':( ("Hybrid First Choice", 1)
                   , ("First Choice"       , 2)
                   , ("Greedy First"       , 3)
                   , ("Hyper Edge"         , 4)
                   , ("Edge"               , 5) ) }
      )

    , ("metis.RType", TypeEnumerate ,1
      , { 'values':( ("Fiduccia-Mattheyses"           , 1)
                   , ("One Way Fidducia-Mattheyses"   , 2)
                   , ("Early Exit Fidducia-Mattheyses", 3) ) } 
      )

    , ("metis.VCycle", TypeEnumerate ,0
      , { 'values':( ("No V-Cycle Refinement"         , 0)
                   , ("On Each Final Bisections"      , 1)
                   , ("On Best Intermediate Solutions", 2)
                   , ("On All Intermediate Solutions" , 3) ) }
      )

    , ("metis.Reconst", TypeEnumerate ,0
      , { 'values':( ("Ignore cuts Hyper Edges"       , 0)
                   , ("Keep parts of cuts Hyper Edges", 1) ) }
      )

    , ("metis.debug", TypeEnumerate ,0
      , { 'values':( ("Disabled"            ,  0)
                   , ("Coarsening Stage"    ,  1)
                   , ("Initial Partitioning",  2)
                   , ("Refinement"          ,  4)
                   , ("Multiple Runs"       ,  8)
                   , ("More Multiples Runs" , 16) ) }
      )

    , ("metis.tuneHMetisParameters", TypeBool, True
      , { 'slaves':( "metis.CType" 
                   , "metis.numberOfTriedBisections"
                   , "metis.CType"
                   , "metis.RType"
                   , "metis.VCycle"
                   , "metis.Reconst"
                   , "metis.debug"
                   ) }
      )
    )

# The layout of hMetis is integrated in Mauka.
layoutTable = ()