Sierra Toolkit  Version of the Day
UseCaseMain.cpp
1 /*------------------------------------------------------------------------*/
2 /* Copyright 2010 Sandia Corporation. */
3 /* Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive */
4 /* license for use of this work by or on behalf of the U.S. Government. */
5 /* Export of this program may require a license from the */
6 /* United States Government. */
7 /*------------------------------------------------------------------------*/
8 
9 #include <iostream>
10 
11 #include <use_cases/UseCase_Rebal_1.hpp>
12 #include <use_cases/UseCase_Rebal_2.hpp>
13 #include <use_cases/UseCase_Rebal_3.hpp>
14 #include <use_cases/UseCase_Rebal_4.hpp>
15 
16 #include <stk_util/parallel/Parallel.hpp>
17 #include <stk_util/parallel/ParallelReduce.hpp>
18 #include <stk_util/use_cases/UseCaseEnvironment.hpp>
19 
20 #include <stk_mesh/base/Trace.hpp>
21 
23 
24 void printStatus(bool status)
25 {
26  if (status) {
27  std::cout << "passed" << std::endl;
28  }
29  else {
30  std::cout << "FAILED" << std::endl;
31  }
32 }
33 
34 int main ( int argc, char * argv[] )
35 {
36  use_case::UseCaseEnvironment use_case_environment(&argc, &argv);
37  stk_classic::ParallelMachine parallel_machine = use_case_environment.m_comm;
38 
39  bool status = true;
40  {
41  std::cout << "Use Case 1, unequal element weights ... ";
42  bool local_status = stk_classic::rebalance::use_cases::test_unequal_weights(parallel_machine);
43  stk_classic::all_reduce(parallel_machine, stk_classic::ReduceMin<1>(&local_status));
44  printStatus(local_status);
45  status = status && local_status;
46  }
47  {
48  std::cout << "Use Case 2, heavy entities ... ";
49  bool local_status = stk_classic::rebalance::use_cases::test_heavy_nodes(parallel_machine);
50  stk_classic::all_reduce(parallel_machine, stk_classic::ReduceMin<1>(&local_status));
51  printStatus(local_status);
52  status = status && local_status;
53  }
54 
55  {
56  std::cout << "Use Case 3, contact surfaces ... ";
57  bool local_status = stk_classic::rebalance::use_cases::test_contact_surfaces(parallel_machine);
58  stk_classic::all_reduce(parallel_machine, stk_classic::ReduceMin<1>(&local_status));
59  printStatus(local_status);
60  status = status && local_status;
61  }
62  {
63  std::cout << "Use Case 4, greedy sideset ... ";
64  bool local_status = stk_classic::rebalance::use_cases::test_greedy_sideset(parallel_machine);
65  stk_classic::all_reduce(parallel_machine, stk_classic::ReduceMin<1>(&local_status));
66  printStatus(local_status);
67  status = status && local_status;
68  }
69 
70  bool collective_result = use_case::print_status(parallel_machine, status);
71  int return_code = collective_result ? 0 : -1;
72 
73  return return_code;
74 }
MPI_Comm ParallelMachine
Definition: Parallel.hpp:32
Static functions for dynamic load balancing.
void all_reduce(ParallelMachine, const ReduceOp &)