64 const ParameterList& pL = GetParameterList();
66 std::string variableName =
"";
67 if (pL.isParameter(
"Variable"))
68 variableName = pL.get<std::string>(
"Variable");
70 std::string variableType =
"";
71 if (pL.isParameter(
"Variable type"))
72 variableType = pL.get<std::string>(
"Variable type");
74 std::string factoryName =
"NoFactory";
76 factoryName =
"Fine level factory";
78 factoryName =
"Coarse level factory";
80 RCP<const FactoryBase> fact = GetFactory(factoryName);
82 GetOStream(
Debug) <<
"Use " << variableName <<
" of type " << variableType <<
" from " << factoryName <<
"(" << fact.get() <<
")" << std::endl;
86 if (variableType ==
"int") {
87 int data = currentLevel.
Get<
int>(variableName, fact.get());
88 Set(currentLevel, variableName, data);
89 }
else if (variableType ==
"double") {
90 double data = currentLevel.
Get<
double>(variableName, fact.get());
91 Set(currentLevel, variableName, data);
92 }
else if (variableType ==
"string") {
93 std::string data = currentLevel.
Get<std::string>(variableName, fact.get());
94 Set(currentLevel, variableName, data);
96 size_t npos = std::string::npos;
98 if (variableType.find(
"Aggregates") != npos) {
99 RCP<Aggregates> data = currentLevel.
Get<RCP<Aggregates> >(variableName, fact.get());
100 Set(currentLevel, variableName, data);
101 }
else if (variableType.find(
"SmootherBase") != npos) {
102 RCP<SmootherBase> data = currentLevel.
Get<RCP<SmootherBase> >(variableName, fact.get());
103 Set(currentLevel, variableName, data);
104 }
else if (variableType.find(
"SmootherPrototype") != npos) {
105 RCP<SmootherPrototype> data = currentLevel.
Get<RCP<SmootherPrototype> >(variableName, fact.get());
106 Set(currentLevel, variableName, data);
107 }
else if (variableType.find(
"Export") != npos) {
108 RCP<Export> data = currentLevel.
Get<RCP<Export> >(variableName, fact.get());
109 Set(currentLevel, variableName, data);
110 }
else if (variableType.find(
"Import") != npos) {
111 RCP<Import> data = currentLevel.
Get<RCP<Import> >(variableName, fact.get());
112 Set(currentLevel, variableName, data);
113 }
else if (variableType.find(
"Map") != npos) {
114 RCP<Map> data = currentLevel.
Get<RCP<Map> >(variableName, fact.get());
115 Set(currentLevel, variableName, data);
116 }
else if (variableType.find(
"Matrix") != npos) {
117 RCP<Matrix> data = currentLevel.
Get<RCP<Matrix> >(variableName, fact.get());
118 Set(currentLevel, variableName, data);
119 }
else if (variableType.find(
"MultiVector") != npos) {
120 RCP<MultiVector> data = currentLevel.
Get<RCP<MultiVector> >(variableName, fact.get());
121 Set(currentLevel, variableName, data);
122 }
else if (variableType.find(
"Operator") != npos) {
123 RCP<Operator> data = currentLevel.
Get<RCP<Operator> >(variableName, fact.get());
124 Set(currentLevel, variableName, data);
127 TEUCHOS_TEST_FOR_EXCEPTION(
true,
MueLu::Exceptions::RuntimeError,
"FineLevelInputDataFactory: cannot detect type of variable " << variableName <<
" generated by " << fact.get() <<
". User provided type " << variableType);