MueLu Version of the Day
Loading...
Searching...
No Matches
MueLu_Details_registerLinearSolverFactory.cpp
Go to the documentation of this file.
1// @HEADER
2//
3// ***********************************************************************
4//
5// MueLu: A package for multigrid based preconditioning
6// Copyright 2011 Sandia Corporation
7//
8// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9// the U.S. Government retains certain rights in this software.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39//
40// ***********************************************************************
41//
42// @HEADER
43
46#include "Tpetra_MultiVector.hpp"
47#include "Tpetra_Operator.hpp"
48#ifdef HAVE_MUELU_EPETRA
49# include "Epetra_MultiVector.h"
50# include "Epetra_Operator.h"
51#endif
52#include "TpetraCore_ETIHelperMacros.h"
53
54// Define Tpetra instantiation macros and typedefs that make the
55// macros work. The fix for Bug 6380 makes this work whether or not
56// ETI is ON. We use the Tpetra macros because MueLu doesn't have
57// its own macos.
58TPETRA_ETI_MANGLING_TYPEDEFS()
59
60// Macro that registers MueLu's LinearSolverFactory for Tpetra
61// objects, for the given four template parameters (Scalar = SC,
62// LocalOrdinal = LO, GlobalOrdinal = GO, Node = NT). The macro is
63// local to this file.
64//
65// NOTE: This macro does NOT do explicit instantiation! That's why I
66// call it LCL_CALL and not LCL_INST. We are just using the macros to
67// invoke this class method over the set of enabled template
68// parameters.
69#define LCL_CALL( SC, LO, GO, NT ) \
70 ::MueLu::Details::LinearSolverFactory<Tpetra::MultiVector<SC, LO, GO, NT>, \
71 Tpetra::Operator<SC, LO, GO, NT>, \
72 typename Tpetra::MultiVector<SC, LO, GO, NT>::mag_type>::registerLinearSolverFactory ();
73
74namespace MueLu {
75namespace Details {
76
77void
79{
80 // Fill in the body of the function with all the type-specific
81 // run-time registration functions, for registering MueLu's
82 // LinearSolverFactory with Tpetra objects.
83 TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR( LCL_CALL )
84
85 // If Epetra is enabled in MueLu, also register MueLu's
86 // LinearSolverFactory for Epetra objects.
87#ifdef HAVE_MUELU_EPETRA
90#endif // HAVE_MUELU_EPETRA
91}
92
93} // namespace Details
94} // namespace MueLu
#define LCL_CALL(SC, LO, GO, NT)
Declaration of MueLu::Details::registerLinearSolverFactory.
Interface for a "factory" that creates MueLu solvers.
void registerLinearSolverFactory()
Register MueLu's LinearSolverFactory with the central repository, for all enabled combinations of tem...
Namespace for MueLu classes and methods.