Anasazi  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
AnasaziBasicOutputManager.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Anasazi: Block Eigensolvers Package
4 //
5 // Copyright 2004 NTESS and the Anasazi contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef ANASAZI_BASIC_OUTPUT_MANAGER_HPP
11 #define ANASAZI_BASIC_OUTPUT_MANAGER_HPP
12 
17 #include "AnasaziConfigDefs.hpp"
18 #include "AnasaziOutputManager.hpp"
19 #include "Teuchos_oblackholestream.hpp"
20 
21 #ifdef HAVE_MPI
22 #include <mpi.h>
23 #include "AnasaziGlobalComm.hpp"
24 #endif
25 
34 namespace Anasazi {
35 
36  template <class ScalarType>
37  class BasicOutputManager : public OutputManager<ScalarType> {
38 
39  public:
40 
42 
43 
45  BasicOutputManager(int vb = Anasazi::Errors, int rootRank = 0);
46 
50  : OutputManager<ScalarType>(vb, fos)
51  {};
52 
54  virtual ~BasicOutputManager() {};
56 
57 
58  private:
59 
61 
62 
65 
68 
70  };
71 
72  template<class ScalarType>
74  : OutputManager<ScalarType>(vb)
75  {
76 #ifdef HAVE_MPI
77  // The OutputManger constructor will create fos_ that outputs to std::cout
78  // This class will query MPI to print on processor 0, if parallel.
79  int myRank = 0;
80  int numProcs = 1;
81  // Initialize MPI
82  int mpiStarted = 0;
83  MPI_Initialized(&mpiStarted);
84  if (mpiStarted)
85  {
86  MPI_Comm_rank(get_global_comm(), &myRank);
87  MPI_Comm_size(get_global_comm(), &numProcs);
88  }
89  this->fos_->setProcRankAndSize(myRank, numProcs);
90  this->fos_->setOutputToRootOnly(rootRank);
91 #endif
92  }
93 
94 } // end Anasazi namespace
95 
96 #endif
97 
98 // end of file AnasaziOutputManager.hpp
basic_FancyOStream & setProcRankAndSize(const int procRank, const int numProcs)
BasicOutputManager(int vb, const Teuchos::RCP< Teuchos::FancyOStream > &fos)
Constructor with specified verbosity and formatted output stream.
Abstract class definition for Anasazi Output Managers.
Anasazi&#39;s basic output manager for sending information of select verbosity levels to the appropriate ...
Output managers remove the need for the eigensolver to know any information about the required output...
Anasazi header file which uses auto-configuration information to include necessary C++ headers...
basic_FancyOStream & setOutputToRootOnly(const int rootRank)
BasicOutputManager(int vb=Anasazi::Errors, int rootRank=0)
Default constructor.