9 #include <fei_macros.hpp>
13 #include <test_utils/LibraryFactory.hpp>
15 #include <fei_LibraryWrapper.hpp>
17 #include <snl_fei_Factory.hpp>
19 #include <fei_Factory_Trilinos.hpp>
20 #ifdef HAVE_FEI_AZTECOO
21 #include <fei_Aztec_LinSysCore.hpp>
25 #include <FETI_DP_FiniteElementData.h>
31 const char* libraryName)
33 std::string libname(libraryName);
39 if (libname ==
"Aztec") {
40 #ifdef HAVE_FEI_AZTECOO
41 lsc.
reset(
new fei_trilinos::Aztec_LinSysCore(comm));
43 std::string msg(
"Aztec not available.");
44 throw std::runtime_error(msg);
48 if (libname ==
"FETI") {
50 fedata.
reset(
new FETI_DP_FiniteElementData(comm));
54 if (lsc.
get() == NULL && fedata.
get() == NULL) {
56 std::string msg(
"create_LibraryWrapper: ");
58 msg +=
" not a valid name.";
59 throw std::runtime_error(msg);
62 if (lsc.
get() != NULL) {
63 wrapper.
reset(
new LibraryWrapper(lsc));
67 if (fedata.
get() != NULL) {
68 wrapper.
reset(
new LibraryWrapper(fedata));
78 const char* libraryName)
80 std::string libname(libraryName);
82 if (libname.find(
"Trilinos") != std::string::npos) {
85 if (libname.find(
"Amesos") != std::string::npos) {
88 factory->parameters(paramset);
90 else if (libname.find(
"Aztec") != std::string::npos) {
96 if (libname.find(
"AztecOO") != std::string::npos) {
111 catch (std::runtime_error& exc) {
112 std::string msg(
"create_fei_Factory: ");
114 throw std::runtime_error(msg);
117 if (wrapper.
get() != NULL) {
fei::SharedPtr< fei::Factory > create_fei_Factory(MPI_Comm comm, const char *libraryName)
void add(const Param ¶m, bool maintain_unique_keys=true)
fei::SharedPtr< LibraryWrapper > create_LibraryWrapper(MPI_Comm comm, const char *libraryName)