Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
Zoltan2_EvaluateFactory.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Zoltan2: A package of combinatorial algorithms for scientific computing
4
//
5
// Copyright 2012 NTESS and the Zoltan2 contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
14
#ifndef ZOLTAN2_EVALUATE_FACTORY_HPP
15
#define ZOLTAN2_EVALUATE_FACTORY_HPP
16
17
#include <
Zoltan2_Typedefs.hpp
>
18
#include <
Zoltan2_EvaluatePartition.hpp
>
19
#include <
Zoltan2_EvaluateOrdering.hpp
>
20
#include <
Zoltan2_OrderingProblem.hpp
>
21
#include <
Zoltan2_ProblemFactory.hpp
>
22
23
using namespace
Zoltan2_TestingFramework
;
24
using namespace
Zoltan2
;
25
26
namespace
Zoltan2_TestingFramework
{
28
class
EvaluateFactory
{
29
public
:
30
39
40
EvaluateFactory
(
const
std::string & problemName,
41
RCP<AdapterFactory> adapterFactory,
42
ParameterList *params,
43
RCP<ProblemFactory> problemFactory) {
44
45
adapterType = adapterFactory->getMainAdapterType();
46
problem_name = problemName;
47
48
if
(problem_name ==
"partitioning"
) {
49
#define PARTITIONING_PROBLEM(adapterClass) rcp_dynamic_cast< \
50
PartitioningProblem<adapterClass>> (problemFactory->getProblem())
51
52
#define EVALUATE_PARTITION(adapterClass) \
53
const adapterClass * pAdapterClassUpCast = dynamic_cast< \
54
const adapterClass *>(adapterFactory->getMainAdapter()); \
55
if(!pAdapterClassUpCast) throw std::logic_error( \
56
"Bad adapter class cast!" ); \
57
evaluate = rcp(new EvaluatePartition<adapterClass>( \
58
pAdapterClassUpCast, params, \
59
problemFactory->getProblem()->getComm(), \
60
(&PARTITIONING_PROBLEM(adapterClass)->getSolution())));
61
62
Z2_TEST_UPCAST
(adapterType,
EVALUATE_PARTITION
)
63
}
64
else
if
(problem_name ==
"ordering"
) {
65
#define ORDERING_PROBLEM(adapterClass) rcp_dynamic_cast< \
66
OrderingProblem<adapterClass>> (problemFactory->getProblem())
67
68
#define LOCAL_ORDERING(adapterClass) \
69
const adapterClass * pAdapterClassUpCast = dynamic_cast< \
70
const adapterClass *>(adapterFactory->getMainAdapter()); \
71
if(!pAdapterClassUpCast) throw std::logic_error( \
72
"Bad adapter class cast!"); \
73
evaluate = rcp(new EvaluateLocalOrdering<adapterClass>( \
74
pAdapterClassUpCast, params, \
75
problemFactory->getProblem()->getComm(), \
76
ORDERING_PROBLEM(adapterClass)->getLocalOrderingSolution()));
77
78
// EvaluateGlobalOrdering not tested/implemented yet
79
#define GLOBAL_ORDERING(adapterClass) \
80
const adapterClass * pAdapterClassUpCast = dynamic_cast< \
81
const adapterClass *>(adapterFactory->getMainAdapter()); \
82
if(!pAdapterClassUpCast) throw std::logic_error( \
83
"Bad adapter class cast!" ); \
84
evaluate = rcp(new EvaluateGlobalOrdering<adapterClass>( \
85
pAdapterClassUpCast, \
86
params, ORDERING_PROBLEM(adapterClass)->getComm(), \
87
ORDERING_PROBLEM(adapterClass)->getGlobalOrderingSolution()));
88
89
Z2_TEST_UPCAST
(adapterType,
LOCAL_ORDERING
)
90
}
91
else
if
(problem_name ==
"coloring"
) {
92
// Coloring code here... EvaluateColoringFactory not created yet
93
// return EvaluateColoringFactory::newEvaluatColoring(
94
// dynamic_cast<coloring_problem_t*> (problem),
95
// adapter_name, input, params);
96
}
97
98
if
(evaluate == Teuchos::null) {
99
throw
std::logic_error(
"EvaluateFactory failed to create!"
);
100
}
101
}
102
103
RCP<EvaluateBaseClassRoot>
getEvaluateClass
() {
return
evaluate; }
104
const
std::string &
getProblemName
()
const
{
return
problem_name; }
105
EAdapterType
getAdapterType
()
const
{
return
adapterType; }
106
107
private
:
108
std::string problem_name;
// string converts to a problem type
109
EAdapterType
adapterType;
// converts to an adapter type
110
RCP<EvaluateBaseClassRoot> evaluate;
111
};
112
}
113
#endif
// ZOLTAN2_EVALUATE_FACTORY_HPP
114
EVALUATE_PARTITION
#define EVALUATE_PARTITION(adapterClass)
LOCAL_ORDERING
#define LOCAL_ORDERING(adapterClass)
Zoltan2_EvaluateOrdering.hpp
Defines the Zoltan2_EvaluateOrdering.hpp class.
Zoltan2_EvaluatePartition.hpp
Defines the EvaluatePartition class.
Zoltan2_OrderingProblem.hpp
Defines the OrderingProblem class.
Zoltan2_ProblemFactory.hpp
Zoltan2_Typedefs.hpp
keep typedefs that commonly appear in many places localized
Z2_TEST_UPCAST
#define Z2_TEST_UPCAST(adptr, TEMPLATE_ACTION)
Definition
Zoltan2_Typedefs.hpp:174
Zoltan2_TestingFramework::EvaluateFactory::getEvaluateClass
RCP< EvaluateBaseClassRoot > getEvaluateClass()
Definition
Zoltan2_EvaluateFactory.hpp:103
Zoltan2_TestingFramework::EvaluateFactory::getAdapterType
EAdapterType getAdapterType() const
Definition
Zoltan2_EvaluateFactory.hpp:105
Zoltan2_TestingFramework::EvaluateFactory::getProblemName
const std::string & getProblemName() const
Definition
Zoltan2_EvaluateFactory.hpp:104
Zoltan2_TestingFramework::EvaluateFactory::EvaluateFactory
EvaluateFactory(const std::string &problemName, RCP< AdapterFactory > adapterFactory, ParameterList *params, RCP< ProblemFactory > problemFactory)
\brif Zoltan2::EvaluateBaseClass factory method
Definition
Zoltan2_EvaluateFactory.hpp:40
Zoltan2_TestingFramework
Definition
Zoltan2_EvaluateFactory.hpp:26
Zoltan2_TestingFramework::EAdapterType
EAdapterType
Definition
Zoltan2_Typedefs.hpp:159
Zoltan2
Created by mbenlioglu on Aug 31, 2020.
Definition
Zoltan2_AlgHybrid2GL.hpp:47
test
core
helpers
Zoltan2_EvaluateFactory.hpp
Generated by
1.17.0