1
// Copyright (C) 2008 Anders Logg.
2
// Licensed under the GNU LGPL Version 2.1.
4
// First added: 2008-05-17
5
// Last changed: 2008-05-17
7
#include <dolfin/parameter/parameters.h>
8
#include "uBlasFactory.h"
9
#include "PETScFactory.h"
10
#include "EpetraFactory.h"
11
#include "DefaultFactory.h"
13
using namespace dolfin;
15
//-----------------------------------------------------------------------------
16
GenericMatrix* DefaultFactory::createMatrix() const
18
return factory().createMatrix();
20
//-----------------------------------------------------------------------------
21
GenericVector* DefaultFactory::createVector() const
23
return factory().createVector();
25
//-----------------------------------------------------------------------------
26
GenericSparsityPattern * DefaultFactory::createPattern() const
28
return factory().createPattern();
30
//-----------------------------------------------------------------------------
31
LinearAlgebraFactory& DefaultFactory::factory() const
34
std::string default_backend = "uBLAS";
35
typedef uBlasFactory<> DefaultFactory;
37
// Get backend from parameter system
38
std::string backend = dolfin_get("linear algebra backend");
41
if (backend == "uBLAS")
43
return uBlasFactory<>::instance();
45
else if (backend == "PETSc")
48
return PETScFactory::instance();
51
else if (backend == "Epetra")
54
return EpetraFactory::instance();
59
message("Linear algebra backend \"" + backend + "\" not available, using " + default_backend + ".");
60
return DefaultFactory::instance();
62
//-----------------------------------------------------------------------------