Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
IO_Utils.hpp
1#ifndef IO_UTILS_hpp
2#define IO_UTILS_hpp
3
4#include <Teuchos_ParameterList.hpp>
5#include <Teuchos_XMLParameterListCoreHelpers.hpp>
6#include <Teuchos_YamlParameterListCoreHelpers.hpp>
7
8namespace FEDD{
9
10 namespace IO {
11
17 Teuchos::RCP<Teuchos::ParameterList> parseParameterList(const std::string &fileName,
18 const std::string &type = "yaml")
19 {
20 using std::logic_error;
21 using namespace Teuchos;
22
23 RCP<ParameterList> parameterList;
24
25 if (!type.compare("yaml"))
26 {
27 parameterList = getParametersFromYamlFile(fileName);
28 }
29 else if (!type.compare("xml"))
30 {
31 parameterList = getParametersFromXmlFile(fileName);
32 }
33 else
34 {
35 TEUCHOS_TEST_FOR_EXCEPTION(true,logic_error,"File type not supported.");
36 }
37
38 return parameterList;
39 };
40
41
49 Teuchos::RCP<Teuchos::ParameterList> parseParameterListFiles(Teuchos::RCP<Teuchos::ParameterList> &parameterList,
50 const std::string &nameName = "ParameterLists File Names",
51 const std::string &pathName = "ParameterLists File Paths",
52 const std::string &typeName = "ParameterLists File Types")
53 {
54 using std::string;
55 using std::logic_error;
56 using Teuchos::Array;
57
58 Array<string> names(1,""), filePaths(1,""), fileTypes(1,"");
59 if (parameterList->isParameter(pathName))
60 {
61 filePaths = parameterList->get(pathName,filePaths);
62
63 if (parameterList->isParameter(nameName))
64 {
65 names = parameterList->get(nameName,names);
66 TEUCHOS_TEST_FOR_EXCEPTION(names.size()!=filePaths.size(),logic_error,"names.size()!=filePaths.size()");
67 } else {
68 TEUCHOS_TEST_FOR_EXCEPTION(true,logic_error,"ParameterLists File Names are not specified.");
69 }
70
71 if (parameterList->isParameter(typeName))
72 {
73 fileTypes = parameterList->get(typeName,fileTypes);
74 TEUCHOS_TEST_FOR_EXCEPTION(fileTypes.size()!=filePaths.size(),logic_error,"fileTypes.size()!=filePaths.size()");
75 } else {
76 TEUCHOS_TEST_FOR_EXCEPTION(true,logic_error,"ParameterLists File Types are not specified.");
77 }
78
79 int i = 0;
80 for (auto it = filePaths.begin(); it != filePaths.end(); it++, i++)
81 {
82 Teuchos::RCP<Teuchos::ParameterList> parameterListTmp = parseParameterList(filePaths[i],fileTypes[i]);
83 parameterList->set(names[i],*parameterListTmp);
84 }
85 }
86 return parameterList;
87 };
88
89 }
90
91}
92
93#endif
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5