RCP<const ParameterList> RebalanceTransferFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("repartition: rebalance P and R"); SET_VALID_ENTRY("transpose: use implicit"); #undef SET_VALID_ENTRY // The value of "useSubcomm" parameter here must be the same as in RebalanceAcFactory validParamList->set< bool > ("useSubcomm", true, "Construct subcommunicators"); { typedef Teuchos::StringToIntegralParameterEntryValidator<int> validatorType; RCP<validatorType> typeValidator = rcp (new validatorType(Teuchos::tuple<std::string>("Interpolation", "Restriction"), "type")); validParamList->set("type", "Interpolation", "Type of the transfer operator that need to be rebalanced (Interpolation or Restriction)", typeValidator); } validParamList->set< RCP<const FactoryBase> >("P", null, "Factory of the prolongation operator that need to be rebalanced (only used if type=Interpolation)"); validParamList->set< RCP<const FactoryBase> >("R", null, "Factory of the restriction operator that need to be rebalanced (only used if type=Restriction)"); validParamList->set< RCP<const FactoryBase> >("Nullspace", null, "Factory of the nullspace that need to be rebalanced (only used if type=Restriction)"); validParamList->set< RCP<const FactoryBase> >("Coordinates", null, "Factory of the coordinates that need to be rebalanced (only used if type=Restriction)"); validParamList->set< RCP<const FactoryBase> >("Importer", null, "Factory of the importer object used for the rebalancing"); validParamList->set< int > ("write start", -1, "First level at which coordinates should be written to file"); validParamList->set< int > ("write end", -1, "Last level at which coordinates should be written to file"); // TODO validation: "P" parameter valid only for type="Interpolation" and "R" valid only for type="Restriction". Like so: // if (paramList.isEntry("type") && paramList.get("type) == "Interpolation) { // validParamList->set< RCP<const FactoryBase> >("P", Teuchos::null, "Factory of the prolongation operator that need to be rebalanced (only used if type=Interpolation)"); return validParamList; }
RCP<const ParameterList> UncoupledAggregationFactory_kokkos<LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); // Aggregation parameters (used in aggregation algorithms) // TODO introduce local member function for each aggregation algorithm such that each aggregation algorithm can define its own parameters typedef Teuchos::StringToIntegralParameterEntryValidator<int> validatorType; #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("aggregation: max agg size"); SET_VALID_ENTRY("aggregation: min agg size"); SET_VALID_ENTRY("aggregation: max selected neighbors"); SET_VALID_ENTRY("aggregation: ordering"); validParamList->getEntry("aggregation: ordering").setValidator( rcp(new validatorType(Teuchos::tuple<std::string>("natural", "graph", "random"), "aggregation: ordering"))); SET_VALID_ENTRY("aggregation: enable phase 1"); SET_VALID_ENTRY("aggregation: enable phase 2a"); SET_VALID_ENTRY("aggregation: enable phase 2b"); SET_VALID_ENTRY("aggregation: enable phase 3"); SET_VALID_ENTRY("aggregation: preserve Dirichlet points"); SET_VALID_ENTRY("aggregation: allow user-specified singletons"); #undef SET_VALID_ENTRY // general variables needed in AggregationFactory validParamList->set< RCP<const FactoryBase> >("Graph", null, "Generating factory of the graph"); validParamList->set< RCP<const FactoryBase> >("DofsPerNode", null, "Generating factory for variable \'DofsPerNode\', usually the same as for \'Graph\'"); // special variables necessary for OnePtAggregationAlgorithm validParamList->set< std::string > ("OnePt aggregate map name", "", "Name of input map for single node aggregates. (default='')"); validParamList->set< std::string > ("OnePt aggregate map factory", "", "Generating factory of (DOF) map for single node aggregates."); //validParamList->set< RCP<const FactoryBase> >("OnePt aggregate map factory", NoFactory::getRCP(), "Generating factory of (DOF) map for single node aggregates."); return validParamList; }
RCP<const ParameterList> TogglePFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("toggle: mode"); SET_VALID_ENTRY("semicoarsen: number of levels"); #undef SET_VALID_ENTRY return validParamList; }
RCP<const ParameterList> SaPFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("sa: damping factor"); SET_VALID_ENTRY("sa: calculate eigenvalue estimate"); SET_VALID_ENTRY("sa: eigenvalue estimate num iterations"); #undef SET_VALID_ENTRY validParamList->set< RCP<const FactoryBase> >("A", Teuchos::null, "Generating factory of the matrix A used during the prolongator smoothing process"); validParamList->set< RCP<const FactoryBase> >("P", Teuchos::null, "Tentative prolongator factory"); return validParamList; }
RCP<const ParameterList> BrickAggregationFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("aggregation: brick x size"); SET_VALID_ENTRY("aggregation: brick y size"); SET_VALID_ENTRY("aggregation: brick z size"); #undef SET_VALID_ENTRY validParamList->set< RCP<const FactoryBase> >("A", Teuchos::null, "Generating factory for matrix"); validParamList->set< RCP<const FactoryBase> >("Coordinates", Teuchos::null, "Generating factory for coordinates"); return validParamList; }
RCP<const ParameterList> UncoupledAggregationFactory<LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); typedef Teuchos::StringToIntegralParameterEntryValidator<int> validatorType; #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("aggregation: mode"); validParamList->getEntry("aggregation: mode").setValidator( rcp(new validatorType(Teuchos::tuple<std::string>("new", "old"), "aggregation: mode"))); SET_VALID_ENTRY("aggregation: max agg size"); SET_VALID_ENTRY("aggregation: min agg size"); SET_VALID_ENTRY("aggregation: max selected neighbors"); SET_VALID_ENTRY("aggregation: ordering"); validParamList->getEntry("aggregation: ordering").setValidator( rcp(new validatorType(Teuchos::tuple<std::string>("natural", "graph", "random"), "aggregation: ordering"))); SET_VALID_ENTRY("aggregation: enable phase 1"); SET_VALID_ENTRY("aggregation: enable phase 2a"); SET_VALID_ENTRY("aggregation: enable phase 2b"); SET_VALID_ENTRY("aggregation: enable phase 3"); SET_VALID_ENTRY("aggregation: preserve Dirichlet points"); #undef SET_VALID_ENTRY validParamList->set< RCP<const FactoryBase> >("Graph", null, "Generating factory of the graph"); validParamList->set< RCP<const FactoryBase> >("DofsPerNode", null, "Generating factory for variable \'DofsPerNode\', usually the same as for \'Graph\'"); // Aggregation parameters (used in aggregation algorithms) // TODO introduce local member function for each aggregation algorithm such that each aggregation algorithm can define its own parameters validParamList->set<bool> ("UseOnePtAggregationAlgorithm", false, "Allow special nodes to be marked for one-to-one transfer to the coarsest level. (default = off)"); validParamList->set<bool> ("UsePreserveDirichletAggregationAlgorithm", false, "Turn on/off aggregate Dirichlet (isolated nodes) into separate 1pt node aggregates (default = off)"); validParamList->set<bool> ("UseUncoupledAggregationAlgorithm", true, "Turn on/off uncoupled aggregation process. Do not turn off: this is " "the main aggregation routine within the uncoupled aggregation process. (default = on)"); validParamList->set<bool> ("UseMaxLinkAggregationAlgorithm", true, "Turn on/off MaxLink aggregation algorithm. Adds non-aggregated nodes to " "the next already aggregated neighbour node with the most links. (default = on)"); validParamList->set<bool> ("UseIsolatedNodeAggregationAlgorithm", true, "Turn on/off IsolatedNode aggregation algorithm. Ignores isolated " "nodes during aggregation process. (default = on)"); validParamList->set<bool> ("UseEmergencyAggregationAlgorithm", true, "Turn on/off Emergency aggregation algorithm. Puts all left over nodes " "into aggregates (including very small aggregates or one-point aggregates). (default = on)"); validParamList->set< std::string > ("OnePt aggregate map name", "", "Name of input map for single node aggregates. (default='')"); validParamList->set< RCP<const FactoryBase> >("OnePt aggregate map factory", null, "Generating factory of (DOF) map for single node aggregates."); return validParamList; }
RCP<const ParameterList> BlockedRAPFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("transpose: use implicit"); #undef SET_VALID_ENTRY validParamList->set< RCP<const FactoryBase> >("A", null, "Generating factory of the matrix A used during the prolongator smoothing process"); validParamList->set< RCP<const FactoryBase> >("P", null, "Prolongator factory"); validParamList->set< RCP<const FactoryBase> >("R", null, "Restrictor factory"); return validParamList; }
RCP<const ParameterList> PatternFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("emin: pattern order"); #undef SET_VALID_ENTRY validParamList->set< RCP<const FactoryBase> >("A", Teuchos::null, "Generating factory for the matrix"); validParamList->set< RCP<const FactoryBase> >("P", Teuchos::null, "Generating factory for the matrix providing nonzero graph"); return validParamList; }
RCP<const ParameterList> RebalanceMapFactory<LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("repartition: use subcommunicators"); #undef SET_VALID_ENTRY // Information about map that is to be rebalanced validParamList->set< std::string > ("Map name" , "", "Name of map to rebalanced."); validParamList->set< RCP<const FactoryBase> >("Map factory", MueLu::NoFactory::getRCP(), "Generating factory of map to be rebalanced."); // Importer object with rebalancing information validParamList->set< RCP<const FactoryBase> >("Importer", Teuchos::null, "Factory of the importer object used for the rebalancing"); return validParamList; }
RCP<const ParameterList> RAPFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("transpose: use implicit"); #undef SET_VALID_ENTRY validParamList->set< RCP<const FactoryBase> >("A", null, "Generating factory of the matrix A used during the prolongator smoothing process"); validParamList->set< RCP<const FactoryBase> >("P", null, "Prolongator factory"); validParamList->set< RCP<const FactoryBase> >("R", null, "Restrictor factory"); validParamList->set< RCP<const FactoryBase> >("AP Pattern", null, "AP pattern factory"); validParamList->set< RCP<const FactoryBase> >("RAP Pattern", null, "RAP pattern factory"); validParamList->set< bool > ("Keep AP Pattern", false, "Keep the AP pattern (for reuse)"); validParamList->set< bool > ("Keep RAP Pattern", false, "Keep the RAP pattern (for reuse)"); validParamList->set< bool > ("CheckMainDiagonal", false, "Check main diagonal for zeros (default = false)."); validParamList->set< bool > ("RepairMainDiagonal", false, "Repair zeros on main diagonal (default = false)."); return validParamList; }
RCP<const ParameterList> RepartitionFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList() const { RCP<ParameterList> validParamList = rcp(new ParameterList()); #define SET_VALID_ENTRY(name) validParamList->setEntry(name, MasterList::getEntry(name)) SET_VALID_ENTRY("repartition: start level"); SET_VALID_ENTRY("repartition: min rows per proc"); SET_VALID_ENTRY("repartition: max imbalance"); SET_VALID_ENTRY("repartition: print partition distribution"); SET_VALID_ENTRY("repartition: remap parts"); SET_VALID_ENTRY("repartition: remap num values"); #undef SET_VALID_ENTRY validParamList->set< RCP<const FactoryBase> >("A", Teuchos::null, "Factory of the matrix A"); validParamList->set< RCP<const FactoryBase> >("Partition", Teuchos::null, "Factory of the partition"); return validParamList; }