25 #include <queso/Defines.h>
27 #ifdef QUESO_HAS_TRILINOS
29 #include <queso/TeuchosVector.h>
30 #include <queso/RngBase.h>
83 for (
int i = 0; i <
m_vec.length(); ++i) {
84 double alpha = (double) i / ((
double)
m_vec.length() - 1.);
85 (*this)[i] = (1.-alpha)*d1 + alpha*d2;
102 for (
int i = 0; i <
m_vec.length(); ++i) {
103 double alpha = (double) i / ((
double)
m_vec.length() - 1.);
104 (*this)[i] = (1.-alpha)*d1 + alpha*d2;
143 unsigned int size1 =
m_vec.length();
149 for (
unsigned int i=0;i<size1;i++){
178 for (
unsigned int i = 0; i < size1; ++i) {
179 (*this)[i] *= rhs[i];
193 for (
unsigned int i = 0; i < size1; ++i) {
194 (*this)[i] /= rhs[i];
209 for (
unsigned int i = 0; i < size1; ++i) {
210 (*this)[i] += rhs[i];
225 for (
unsigned int i = 0; i < size1; ++i) {
226 (*this)[i] -= rhs[i];
253 return m_vec.length();
260 return m_vec.length();
268 return m_vec.values();
276 std::vector<double> aux;
278 for (
unsigned int i=0; i<
size; i++ ) {
279 aux.push_back((*
this)[i]) ;
282 return *max_element (aux.begin(),aux.end());
289 std::vector<double> aux;
291 for (
unsigned int i=0; i<
size; i++ ) {
292 aux.push_back((*
this)[i]) ;
295 return *min_element (aux.begin(),aux.end());
303 std::vector<double> vect;
305 for (
unsigned int i=0; i<
size; i++ ) {
306 vect.push_back((*
this)[i]) ;
308 std::vector<double>::iterator iter_max = max_element(vect.begin(), vect.end());
309 return distance(vect.begin(), iter_max);
316 std::vector<double> vect;
318 for (
unsigned int i=0; i<
size; i++ ) {
319 vect.push_back((*
this)[i]) ;
321 std::vector<double>::iterator iter_min = min_element(vect.begin(), vect.end());
322 return distance(vect.begin(), iter_min);
329 std::vector<double> vect;
331 for (
unsigned int i=0; i<
size; i++ ) {
332 vect.push_back((*
this)[i]) ;
334 std::vector<double>::iterator iter_max = max_element(vect.begin(), vect.end());
336 max_value = *iter_max;
337 max_value_index = distance(vect.begin(), iter_max);
346 std::vector<double> vect;
348 for (
unsigned int i=0; i<
size; i++ ) {
349 vect.push_back((*
this)[i]) ;
351 std::vector<double>::iterator iter_min = min_element(vect.begin(), vect.end());
353 min_value = *iter_min;
354 min_value_index = distance(vect.begin(), iter_min);
369 return std::sqrt(this->
norm2Sq());
378 for (
unsigned int i = 0; i <
size; ++i) {
379 result += fabs((*
this)[i]);
392 for (
unsigned int i = 0; i <
size; ++i) {
393 aux = fabs((*
this)[i]);
394 if (aux > result) result = aux;
410 while ((i < size) && (result ==
false)) {
411 result = ( (*this)[i] < rhs[i] );
427 while ((i < size) && (result ==
false)) {
428 result = ( (*this)[i] > rhs[i] );
444 while ((i < size) && (result ==
false)) {
445 result = ( (*this)[i] <= rhs[i] );
461 while ((i < size) && (result ==
false)) {
462 result = ( (*this)[i] >= rhs[i] );
482 queso_require_less_msg(initialPos, this->
sizeLocal(),
"invalid initialPos");
484 queso_require_less_equal_msg((initialPos +vec.
sizeLocal()), this->
sizeLocal(),
"invalid vec.sizeLocal()");
486 for (
unsigned int i = 0; i < vec.
sizeLocal(); ++i) {
487 (*this)[initialPos+i] = vec[i];
498 queso_require_less_msg(initialPos, this->
sizeLocal(),
"invalid initialPos");
500 queso_require_less_equal_msg((initialPos +vec.
sizeLocal()), this->
sizeLocal(),
"invalid vec.sizeLocal()");
502 for (
unsigned int i = 0; i < vec.
sizeLocal(); ++i) {
503 vec[i] = (*this)[initialPos+i];
513 for (
unsigned int i = 0; i <
size; ++i) {
514 (*this)[i] = 1./(*this)[i];
524 for (
unsigned int i = 0; i <
size; ++i) {
525 (*this)[i] = sqrt((*
this)[i]);
545 for (
unsigned int i = 0; i < v1.
sizeLocal(); ++i) {
549 for (
unsigned int i = 0; i < v2.
sizeLocal(); ++i) {
560 for (
unsigned int i = 0; i < this->
sizeLocal(); ++i) {
570 for (
unsigned int i = 0; i < this->
sizeLocal(); ++i) {
582 for (
unsigned int i = 0; i < this->
sizeLocal(); ++i) {
597 for (
unsigned int i = 0; i < this->
sizeLocal(); ++i)
606 <<
", alpha[i] = " << alpha[i]
607 <<
", beta[i] = " << beta[i]
608 <<
", sample = " << (*this)[i]
623 for (
unsigned int i = 0; i < this->
sizeLocal(); ++i) {
639 for (
unsigned int i = 0; i < this->
sizeLocal(); ++i) {
656 for(
unsigned int i = 0; i <
size; ++i )
658 abs_of_this_vec[i] = std::fabs( (*
this)[i] );
661 return abs_of_this_vec;
672 for (
unsigned int i = 0; i <
size; ++i)
682 unsigned int size1 = vec.size(), size2= this->
sizeLocal();
686 for (
unsigned int i = 0; i < size1; ++i)
695 std::vector<double> vec;
697 (*this).copy_to_std_vector(vec);
700 std::sort (vec.begin(), vec.end());
702 (*this).copy_from_std_vector(vec);
710 for (
unsigned int i = 0; i <
size; ++i) {
711 result += (*this)[i];
723 if (bcastComm.
MyPID() < 0)
return;
726 queso_require_msg(!((srcRank < 0) || (srcRank >= bcastComm.
NumProc())),
"invalud srcRank");
729 double localNumNodes = 1.;
730 double totalNumNodes = 0.;
731 bcastComm.
Allreduce<
double>(&localNumNodes, &totalNumNodes, (int) 1, RawValue_MPI_SUM,
732 "TeuchosVector::mpiBcast()",
733 "failed MPI.Allreduce() for numNodes");
737 double localVectorSize = this->
sizeLocal();
738 double sumOfVectorSizes = 0.;
739 bcastComm.
Allreduce<
double>(&localVectorSize, &sumOfVectorSizes, (int) 1, RawValue_MPI_SUM,
740 "TeuchosVector::mpiBcast()",
741 "failed MPI.Allreduce() for vectorSize");
743 if ( ((
unsigned int) sumOfVectorSizes) != ((
unsigned int)(totalNumNodes*localVectorSize)) ) {
744 std::cerr <<
"rank " << bcastComm.
MyPID()
745 <<
": sumOfVectorSizes = " << sumOfVectorSizes
746 <<
", totalNumNodes = " << totalNumNodes
747 <<
", localVectorSize = " << localVectorSize
751 queso_require_equal_to_msg(((
unsigned int) sumOfVectorSizes), ((
unsigned int)(totalNumNodes*localVectorSize)),
"inconsistent vectorSize");
754 std::vector<double> dataBuffer((
unsigned int) localVectorSize, 0.);
755 if (bcastComm.
MyPID() == srcRank) {
756 for (
unsigned int i = 0; i < dataBuffer.size(); ++i) {
757 dataBuffer[i] = (*this)[i];
761 bcastComm.
Bcast((
void *) &dataBuffer[0], (
int) localVectorSize, RawValue_MPI_DOUBLE, srcRank,
762 "TeuchosVector::mpiBcast()",
763 "failed MPI.Bcast()");
765 if (bcastComm.
MyPID() != srcRank) {
766 for (
unsigned int i = 0; i < dataBuffer.size(); ++i) {
767 (*this)[i] = dataBuffer[i];
780 if (opComm.
MyPID() < 0)
return;
785 for (
unsigned int i = 0; i <
size; ++i) {
786 double srcValue = (*this)[i];
787 double resultValue = 0.;
788 opComm.
Allreduce<
double>(&srcValue, &resultValue, (int) 1, mpiOperation,
789 "TeuchosVector::mpiAllReduce()",
790 "failed MPI.Allreduce()");
791 resultVec[i] = resultValue;
803 if (opComm.
MyPID() < 0)
return;
805 queso_require_msg(!((probability < 0.) || (1. < probability)),
"invalid input");
810 for (
unsigned int i = 0; i <
size; ++i) {
811 double auxDouble = (int) (*
this)[i];
812 std::vector<double> vecOfDoubles(opComm.
NumProc(),0.);
813 opComm.
Gather<
double>(&auxDouble, 1, &vecOfDoubles[0], (int) 1, 0,
814 "TeuchosVector::mpiAllQuantile()",
815 "failed MPI.Gather()");
817 std::sort(vecOfDoubles.begin(), vecOfDoubles.end());
819 double result = vecOfDoubles[(
unsigned int)( probability*((
double)(vecOfDoubles.size()-1)) )];
821 opComm.
Bcast((
void *) &result, (
int) 1, RawValue_MPI_DOUBLE, 0,
822 "TeuchosVector::mpiAllQuantile()",
823 "failed MPI.Bcast()");
825 resultVec[i] = result;
839 queso_require_greater_msg(x1Vec.
sizeLocal(), 1,
"invalid 'x1' size");
845 for (
unsigned int i = 1; i < x1Vec.
sizeLocal(); ++i) {
846 queso_require_greater_msg(x1Vec[i], x1Vec[i-1],
"invalid 'x1' values");
849 for (
unsigned int id2 = 0; id2 < x2Vec.
sizeLocal(); ++id2) {
850 double x2 = x2Vec[id2];
851 unsigned int id1 = 0;
853 for (id1 = 0; id1 < x1Vec.
sizeLocal(); ++id1) {
854 if (x2 <= x1Vec[id1]) {
859 bool makeLinearModel =
false;
864 if (x2 == x1Vec[id1]) {
865 (*this)[id2] = y1Vec[id1];
867 else if (x2 < x1Vec[0]) {
869 makeLinearModel =
true;
875 else if (found1 ==
true) {
877 makeLinearModel =
true;
885 makeLinearModel =
true;
892 if (makeLinearModel) {
893 double rate = (yb-ya)/(xb-xa);
894 (*this)[id2] = ya + (x2-xa)*rate;
904 unsigned int firstPositionToStoreDiff,
905 double valueForRemainderPosition,
910 queso_require_less_equal_msg(firstPositionToStoreDiff, 1,
"invalid firstPositionToStoreDiff");
914 for (
unsigned int i = 0; i < (size-1); ++i) {
915 outputVec[firstPositionToStoreDiff+i] = (*this)[i+1]-(*this)[i];
917 if (firstPositionToStoreDiff == 0) {
918 outputVec[size-1] = valueForRemainderPosition;
921 outputVec[0] = valueForRemainderPosition;
934 std::ostream::fmtflags curr_fmt = os.flags();
937 unsigned int savedPrecision = os.precision();
941 for (
unsigned int i = 0; i <
size; ++i) {
942 os << std::scientific << (*this)[i]
947 for (
unsigned int i = 0; i <
size; ++i) {
948 os << std::scientific << (*this)[i]
953 os.precision(savedPrecision);
957 for (
unsigned int i = 0; i <
size; ++i) {
958 os << std::dec << (*this)[i]
963 for (
unsigned int i = 0; i <
size; ++i) {
964 os << std::dec << (*this)[i]
977 const std::string& fileName,
978 const std::string& fileType,
979 const std::set<unsigned int>& allowedSubEnvIds)
981 queso_require_greater_equal_msg(
m_env.
subRank(), 0,
"unexpected subRank");
983 queso_require_less_equal_msg(this->
numOfProcsForStorage(), 1,
"implemented just for sequential vectors for now");
993 unsigned int idOfMyFirstLine = 1;
994 unsigned int idOfMyLastLine = this->
sizeLocal();
995 unsigned int numParams = 1;
999 std::string tmpString;
1002 *filePtrSet.
ifsVar >> tmpString;
1006 *filePtrSet.
ifsVar >> tmpString;
1011 *filePtrSet.
ifsVar >> tmpString;
1013 unsigned int posInTmpString = 6;
1016 char nPositionsString[tmpString.size()-posInTmpString+1];
1017 unsigned int posInPositionsString = 0;
1019 queso_require_less_msg(posInTmpString, tmpString.size(),
"symbol ',' not found in first line of file");
1020 nPositionsString[posInPositionsString++] = tmpString[posInTmpString++];
1021 }
while (tmpString[posInTmpString] !=
',');
1022 nPositionsString[posInPositionsString] =
'\0';
1026 char nParamsString[tmpString.size()-posInTmpString+1];
1027 unsigned int posInParamsString = 0;
1029 queso_require_less_msg(posInTmpString, tmpString.size(),
"symbol ')' not found in first line of file");
1030 nParamsString[posInParamsString++] = tmpString[posInTmpString++];
1031 }
while (tmpString[posInTmpString] !=
')');
1032 nParamsString[posInParamsString] =
'\0';
1035 unsigned int sizeOfVecInFile = (
unsigned int) strtod(nPositionsString,NULL);
1036 unsigned int numParamsInFile = (
unsigned int) strtod(nParamsString, NULL);
1040 <<
", sizeOfVecInFile = " << sizeOfVecInFile
1041 <<
", numParamsInFile = " << numParamsInFile
1042 <<
", this->sizeLocal() = " << this->
sizeLocal()
1047 queso_require_greater_equal_msg(sizeOfVecInFile, subReadSize,
"size of vec in file is not big enough");
1050 queso_require_equal_to_msg(numParamsInFile, numParams,
"number of parameters of vec in file is different than number of parameters in this vec object");
1053 unsigned int maxCharsPerLine = 64*numParams;
1055 unsigned int lineId = 0;
1056 while (lineId < idOfMyFirstLine) {
1057 filePtrSet.
ifsVar->ignore(maxCharsPerLine,
'\n');
1063 <<
": beginning to read input actual data"
1070 *filePtrSet.
ifsVar >> tmpString;
1074 *filePtrSet.
ifsVar >> tmpString;
1079 std::streampos tmpPos = filePtrSet.
ifsVar->tellg();
1080 filePtrSet.
ifsVar->seekg(tmpPos+(std::streampos)2);
1084 <<
": beginning to read lines with numbers only"
1085 <<
", lineId = " << lineId
1086 <<
", idOfMyFirstLine = " << idOfMyFirstLine
1087 <<
", idOfMyLastLine = " << idOfMyLastLine
1091 while (lineId <= idOfMyLastLine) {
1092 *filePtrSet.
ifsVar >> (*this)[lineId - idOfMyFirstLine];
1105 const std::string& varNamePrefix,
1106 const std::string& fileName,
1107 const std::string& fileType,
1108 const std::set<unsigned int>& allowedSubEnvIds)
const
1110 queso_require_greater_equal_msg(
m_env.
subRank(), 0,
"unexpected subRank");
1112 queso_require_less_equal_msg(this->
numOfProcsForStorage(), 1,
"implemented just for sequential vectors for now");
1130 *filePtrSet.
ofsVar << *
this;
1135 *filePtrSet.
ofsVar <<
"];\n";
1153 unsigned int size1 =
m_vec.length();
1157 for (
unsigned int i=0;i<size1;i++){
1210 for (
unsigned int i = 0; i < size1; ++i) {
1211 result += x[i]*y[i];
1243 for (
unsigned int i = 0; i < size1; ++i) {
1244 if (lhs[i] != rhs[i]) {
1266 #endif // ifdef QUESO_HAS_TRILINOS
void cwSetGaussian(double mean, double stdDev)
This function sets component-wise Gaussian random variates, with mean mean and standard deviation std...
TeuchosVector & operator-=(const TeuchosVector &rhs)
Stores in this vector the coordinate-wise subtraction of this and rhs.
TeuchosVector & operator/=(double a)
Stores in this vector the coordinate-wise division of this by a.
void matlabDiff(unsigned int firstPositionToStoreDiff, double valueForRemainderPosition, TeuchosVector &outputVec) const
virtual double gaussianSample(double stdDev) const =0
Samples a value from a Gaussian distribution with standard deviation given by stdDev.
void copy_from_std_vector(const std::vector< double > vec)
Copies the values of std::vector structure to this vector (a TeuchosVector).
void mpiAllQuantile(double probability, const MpiComm &opComm, TeuchosVector &resultVec) const
Gathers values from a group of processes and returns all quantiles.
int getMaxValueIndex() const
This function returns the index of the maximum value in the vector this.
void setPrintScientific(bool value) const
Determines whether vector should be printed in Scientific Notation.
double norm2Sq() const
Returns the norm of the vector, as the square root of 2-norm of this vector.
void Barrier() const
Pause every process in *this communicator until all the processes reach this point.
A class for partitioning vectors and matrices.
double sumOfComponents() const
Returns the sum of the components of the vector.
void mpiAllReduce(RawType_MPI_Op mpiOperation, const MpiComm &opComm, TeuchosVector &resultVec) const
Combines values from all processes and distributes the result back to all processes.
bool atLeastOneComponentBiggerOrEqualThan(const TeuchosVector &rhs) const
This function returns true if at least one component of this is bigger than or equal to the respectiv...
unsigned int sizeLocal() const
Returns the length of this vector.
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
bool getPrintHorizontally() const
Checks if vector is printed horizontally.
void matlabLinearInterpExtrap(const TeuchosVector &xVec, const TeuchosVector &yVec, const TeuchosVector &xiVec)
Reproduces MATLAB linear inter/extra-polation.
void cwSetBeta(const TeuchosVector &alpha, const TeuchosVector &beta)
This function sets component-wise random variates from the Beta distribution, with vector parameters ...
void getMinValueAndIndex(double &value, int &index)
This function returns minimum value in the vector this and its the index.
void cwSetUniform(const TeuchosVector &lowerBoundVec, const TeuchosVector &upperBoundVec)
This function sets component-wise a number uniformly distributed in the range of elements of [lowerBo...
bool m_printHorizontally
Flag for either or not print this matrix horizontally.
virtual double gammaSample(double a, double b) const =0
Samples a value from a Gamma distribution.
virtual double betaSample(double alpha, double beta) const =0
Samples a value from a Beta distribution.
std::ostream & operator<<(std::ostream &os, const SequenceStatisticalOptions &obj)
bool atLeastOneComponentSmallerOrEqualThan(const TeuchosVector &rhs) const
This function returns true if at least one component of this is smaller than or equal to the respecti...
const BaseEnvironment & m_env
Environment variable.
virtual void base_copy(const Vector &src)
Copies base data from vector src to this vector.
void closeFile(FilePtrSetStruct &filePtrSet, const std::string &fileType) const
Closes the file.
bool atLeastOneComponentSmallerThan(const TeuchosVector &rhs) const
This function returns true if at least one component of this is smaller than the respective component...
double getMaxValue() const
Returns the maximum value in the this vector.
int subRank() const
Returns the rank of the MPI process in the sub-communicator subComm()
bool m_printScientific
Flag for either or not print this matrix in scientific notation.
void cwSetConcatenated(const TeuchosVector &v1, const TeuchosVector &v2)
This function concatenates vectors v1 and v2 into this vector.
int MyPID() const
Return my process ID.
GslMatrix operator-(const GslMatrix &m1, const GslMatrix &m2)
double & operator[](unsigned int i)
Element access method (non-const).
double getMinValue() const
Returns the minimum value in the this vector.
const RngBase * rngObject() const
Access to the RNG object.
unsigned int numOfProcsForStorage() const
const Map m_map
Mapping variable.
void cwSqrt()
Component-wise sets the square-root of this.
TeuchosVector()
Default Constructor.
double scalarProduct(const GslVector &x, const GslVector &y)
bool operator==(const GslVector &lhs, const GslVector &rhs)
TeuchosVector abs() const
This function returns absolute value of all elements in this.
void Gather(void *sendbuf, int sendcnt, RawType_MPI_Datatype sendtype, void *recvbuf, int recvcount, RawType_MPI_Datatype recvtype, int root, const char *whereMsg, const char *whatMsg) const
Gather values from each process to collect on all processes.
Class for vector operations (virtual).
int fullRank() const
Returns the rank of the MPI process in QUESO's full communicator.
TeuchosVector & operator*=(double a)
Stores in this vector the coordinate-wise multiplication of this and a.
bool openInputFile(const std::string &fileName, const std::string &fileType, const std::set< unsigned int > &allowedSubEnvIds, FilePtrSetStruct &filePtrSet) const
Opens an input file.
void sort()
This function sorts the elements of the vector this in ascending numerical order. ...
unsigned int sizeGlobal() const
Returns the global length of this vector.
Teuchos::SerialDenseVector< int, double > m_vec
Teuchos vector.
void cwInvert()
This function inverts component-wise the element values of this.
void cwSetGamma(const TeuchosVector &a, const TeuchosVector &b)
This function sets component-wise random variates from the Inverse Gamma distribution, with parameters given by vectors a and b.
GslMatrix operator*(double a, const GslMatrix &mat)
void subReadContents(const std::string &fileName, const std::string &fileType, const std::set< unsigned int > &allowedSubEnvIds)
bool getPrintScientific() const
Checks if the vector should be printed in Scientific Notation.
void copy(const TeuchosVector &src)
This function copies the elements of the vector src into this.
~TeuchosVector()
Destructor.
Class for vector operations using Teuchos (Trilinos).
void subWriteContents(const std::string &varNamePrefix, const std::string &fileName, const std::string &fileType, const std::set< unsigned int > &allowedSubEnvIds) const
TeuchosVector & operator+=(const TeuchosVector &rhs)
Stores in this vector the coordinate-wise addition of this and rhs.
void Allreduce(void *sendbuf, void *recvbuf, int count, RawType_MPI_Datatype datatype, RawType_MPI_Op op, const char *whereMsg, const char *whatMsg) const
Combines values from all processes and distributes the result back to all processes.
int NumGlobalElements() const
Returns the total number of elements across all processors.
TeuchosVector & operator=(double a)
Set all values in the vector to a constant value.
std::ifstream * ifsVar
Provides a stream interface to read data from files.
void setPrintHorizontally(bool value) const
Determines whether vector should be printed horizontally.
GslVector operator/(double a, const GslVector &x)
void cwSet(double value)
Component-wise sets all values to this with value.
MonteCarloSGOptions::MonteCarloSGOptions(const BaseEnvironment &env, const char *prefix, const McOptionsValues &alternativeOptionsValues queso_require_equal_to_msg)(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the existence of an options input file"))
double norm2() const
Returns the 2-norm (Euclidean norm) of the vector.
void cwExtract(unsigned int initialPos, TeuchosVector &vec) const
Component-wise extracts all values of this with vector vec, starting at position initialPos.
int getMinValueIndex() const
This function returns the index of the minimum value in the vector this.
The QUESO MPI Communicator Class.
int NumProc() const
Returns total number of processes.
unsigned int displayVerbosity() const
const std::string & subIdString() const
Access to the attribute m_subIdString; which stores the string for the sub-environment, and it will be used, for instance, to create the output files for each sub-environment.
std::ofstream * ofsVar
Provides a stream interface to write data to files.
int NumMyElements() const
Returns the number of elements owned by the calling processor.
void cwSetInverseGamma(const TeuchosVector &a, const TeuchosVector &b)
This function sets component-wise random variates from the Inverse Gamma distribution, with parameters given by vectors a and b.
void getMaxValueAndIndex(double &value, int &index)
This function returns maximum value in the vector this and its the index.
Struct for handling data input and output from files.
virtual double uniformSample() const =0
Samples a value from a uniform distribution.
void mpiBcast(int srcRank, const MpiComm &bcastComm)
Broadcasts a message from the process with srcRank root to all other processes of the group...
void copy_to_std_vector(std::vector< double > &vec)
Copies the values of this vector (a TeuchosVector) to a std::vector structure.
double norm1() const
Returns the 1-norm of the vector.
bool openOutputFile(const std::string &fileName, const std::string &fileType, const std::set< unsigned int > &allowedSubEnvIds, bool writeOver, FilePtrSetStruct &filePtrSet) const
Opens an output file for each sub-environment that was chosen to send data to the file...
bool atLeastOneComponentBiggerThan(const TeuchosVector &rhs) const
This function returns true if at least one component of this is bigger than the respective component ...
double normInf() const
Returns the infinity-norm (maximum norm) of the vector.
GslMatrix operator+(const GslMatrix &m1, const GslMatrix &m2)
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
void Bcast(void *buffer, int count, RawType_MPI_Datatype datatype, int root, const char *whereMsg, const char *whatMsg) const
Broadcast values from the root process to the slave processes.
void print(std::ostream &os) const
Print method. Defines the behavior of the std::ostream << operator inherited from the Object class...