Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
HyperGraphModel.cpp
Go to the documentation of this file.
1
// @HEADER
2
//
3
// ***********************************************************************
4
//
5
// Zoltan2: A package of combinatorial algorithms for scientific computing
6
// Copyright 2012 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 Karen Devine (kddevin@sandia.gov)
39
// Erik Boman (egboman@sandia.gov)
40
// Siva Rajamanickam (srajama@sandia.gov)
41
//
42
// ***********************************************************************
43
//
44
// @HEADER
45
//
46
// Testing of HyperGraphModel built from APF mesh adapters.
47
//
48
54
55
#include <
Zoltan2_Standards.hpp
>
56
#include <
Zoltan2_HyperGraphModel.hpp
>
57
#include <
Zoltan2_APFMeshAdapter.hpp
>
58
#include <
Zoltan2_Environment.hpp
>
59
60
// Teuchos includes
61
#include "Teuchos_RCP.hpp"
62
#include "Teuchos_XMLParameterListHelpers.hpp"
63
64
// SCOREC includes
65
#ifdef HAVE_ZOLTAN2_PARMA
66
#include <parma.h>
67
#include <apf.h>
68
#include <apfMesh.h>
69
#include <apfMDS.h>
70
#include <apfMesh2.h>
71
#include <PCU.h>
72
#include <gmi_mesh.h>
73
#endif
74
75
using
Teuchos::ParameterList;
76
using
Teuchos::RCP;
77
78
int
main
(
int
narg,
char
*arg[]) {
79
80
Tpetra::ScopeGuard tscope(&narg, &arg);
81
Teuchos::RCP<const Teuchos::Comm<int> > CommT = Tpetra::getDefaultComm();
82
83
#ifdef HAVE_ZOLTAN2_PARMA
84
//Setup for SCOREC
85
PCU_Comm_Init();
86
87
// Generate mesh with MDS
88
gmi_register_mesh();
89
apf::Mesh2* m = apf::loadMdsMesh(
"../partition/pumiTri14/plate.dmg"
,
"../partition/pumiTri14/2/"
);
90
91
typedef
Zoltan2::APFMeshAdapter<apf::Mesh2*>
inputAdapter_t;
92
typedef
Zoltan2::MeshAdapter<apf::Mesh2*>
baseMeshAdapter_t;
93
Teuchos::ParameterList params(
"test params"
);
94
params.set(
"timer_output_stream"
,
"std::cout"
);
95
params.set(
"debug_level"
,
"verbose_detailed_status"
);
96
params.set(
"hypergraph_model_type"
,
"ghosting"
);
97
98
RCP<Zoltan2::Environment> env;
99
try
{
100
env = rcp(
new
Zoltan2::Environment
(params, Tpetra::getDefaultComm()));
101
}
102
Z2_FORWARD_EXCEPTIONS
103
104
RCP<const Zoltan2::Environment> envConst = Teuchos::rcp_const_cast<const Zoltan2::Environment>(env);
105
106
107
inputAdapter_t* ia =
new
inputAdapter_t(*CommT, m,
"vertex"
,
"edge"
,
false
);
108
inputAdapter_t::scalar_t* arr =
new
inputAdapter_t::scalar_t[ia->getLocalNumOf(ia->getPrimaryEntityType())];
109
for
(
size_t
i=0;i<ia->getLocalNumOf(ia->getPrimaryEntityType());i++) {
110
arr[i]=PCU_Comm_Self();
111
}
112
const
inputAdapter_t::scalar_t*
weights
=arr;
113
ia->setWeights(ia->getPrimaryEntityType(),
weights
,1);
114
115
const
baseMeshAdapter_t *base_ia =
dynamic_cast<
const
baseMeshAdapter_t*
>
(ia);
116
Zoltan2::modelFlag_t
graphFlags_;
117
RCP<const baseMeshAdapter_t> baseInputAdapter_(base_ia,
false
);
118
119
Zoltan2::HyperGraphModel<inputAdapter_t>
model(baseInputAdapter_,envConst,CommT,
120
graphFlags_,
Zoltan2::HYPEREDGE_CENTRIC
);
121
ia->destroy();
122
delete
ia;
123
124
//Delete APF Mesh;
125
m->destroyNative();
126
apf::destroyMesh(m);
127
//End communications
128
PCU_Comm_Free();
129
130
#endif
131
132
std::cout<<
"PASS\n"
;
133
return
0;
134
}
Zoltan2_APFMeshAdapter.hpp
Defines the APFMeshAdapter class.
Zoltan2_Environment.hpp
Defines the Environment class.
Z2_FORWARD_EXCEPTIONS
#define Z2_FORWARD_EXCEPTIONS
Forward an exception back through call stack.
Definition
Zoltan2_Exceptions.hpp:106
Zoltan2_HyperGraphModel.hpp
Defines the HyperGraphModel interface.
Zoltan2_Standards.hpp
Gathering definitions used in software development.
main
int main()
Definition
absdefinitiontest.cpp:6
Zoltan2::APFMeshAdapter
Definition
Zoltan2_APFMeshAdapter.hpp:69
Zoltan2::Environment
The user parameters, debug, timing and memory profiling output objects, and error checking methods.
Definition
Zoltan2_Environment.hpp:83
Zoltan2::HyperGraphModel
HyperGraphModel defines the interface required for hyper graph models.
Definition
Zoltan2_HyperGraphModel.hpp:91
Zoltan2::MeshAdapter
MeshAdapter defines the interface for mesh input.
Definition
Zoltan2_MeshAdapter.hpp:124
Zoltan2::modelFlag_t
std::bitset< NUM_MODEL_FLAGS > modelFlag_t
Definition
Zoltan2_Model.hpp:93
Zoltan2::HYPEREDGE_CENTRIC
@ HYPEREDGE_CENTRIC
Definition
Zoltan2_HyperGraphModel.hpp:75
weights
static ArrayRCP< ArrayRCP< zscalar_t > > weights
Definition
partition/rcbPerformanceZ1.cpp:82
test
core
unit
models
HyperGraphModel.cpp
Generated by
1.17.0