26 #ifndef OOMPH_LINEAR_ALGEBRA_DISTRIBUTION_CLASS_HEADER
27 #define OOMPH_LINEAR_ALGEBRA_DISTRIBUTION_CLASS_HEADER
31 #include <oomph-lib-config.h>
74 const unsigned& first_row_,
75 const unsigned& n_row_local,
76 const unsigned& n_row = 0)
79 this->
build(&comm, first_row_, n_row_local, n_row);
86 const unsigned& n_row,
87 const bool& distributed_ =
true)
90 this->
build(&comm, n_row, distributed_);
97 const unsigned& first_row_,
98 const unsigned& n_row_local,
99 const unsigned& n_row = 0)
102 this->
build(comm_pt, first_row_, n_row_local, n_row);
109 const unsigned& n_row,
110 const bool& distributed_ =
true)
113 this->
build(comm_pt, n_row, distributed_);
120 this->
build(old_dist);
127 this->
build(old_dist_pt);
139 this->
build(old_dist);
148 const unsigned&
nrow = 0);
156 const unsigned&
nrow,
167 this->
build(*new_dist_pt);
203 "LinearAlgebraDistribution has not been built : Comm_pt == 0.",
204 "LinearAlgebraDistribution::nrow_local()",
228 "LinearAlgebraDistribution has not been built : Comm_pt == 0.",
234 std::ostringstream error_message;
235 error_message <<
"Requested nrow_local(" <<
p
236 <<
"), but this distribution is defined "
271 "LinearAlgebraDistribution has not been built : Comm_pt == 0.",
295 "LinearAlgebraDistribution has not been built : Comm_pt == 0.",
301 std::ostringstream error_message;
302 error_message <<
"Requested first_row(" <<
p
303 <<
"), but this distribution is defined "
357 return !(*
this == other_dist);
361 friend std::ostream&
operator<<(std::ostream& stream,
368 if (global_i >=
Nrow)
371 "Requested global row outside the number of global rows",
376 int local_i =
static_cast<int>(global_i);
383 return (
unsigned)local_i;
535 namespace LinearAlgebraDistributionHelpers
int i
Definition: BiCGSTAB_step_by_step.cpp:9
float * p
Definition: Tutorial_Map_using.cpp:9
Definition: linear_algebra_distribution.h:435
unsigned nrow_local(const unsigned &p) const
access function for the num of local rows on this processor.
Definition: linear_algebra_distribution.h:475
void clear_distribution()
Definition: linear_algebra_distribution.h:522
virtual ~DistributableLinearAlgebraObject()
Destructor.
Definition: linear_algebra_distribution.h:451
unsigned first_row(const unsigned &p) const
access function for the first row on this processor
Definition: linear_algebra_distribution.h:487
bool distributed() const
distribution is serial or distributed
Definition: linear_algebra_distribution.h:493
LinearAlgebraDistribution * distribution_pt() const
access to the LinearAlgebraDistribution
Definition: linear_algebra_distribution.h:457
DistributableLinearAlgebraObject(const DistributableLinearAlgebraObject &matrix)=delete
Broken copy constructor.
unsigned nrow() const
access function to the number of global rows.
Definition: linear_algebra_distribution.h:463
bool distribution_built() const
Definition: linear_algebra_distribution.h:500
LinearAlgebraDistribution * Distribution_pt
the LinearAlgebraDistribution object
Definition: linear_algebra_distribution.h:529
unsigned nrow_local() const
access function for the num of local rows on this processor.
Definition: linear_algebra_distribution.h:469
unsigned first_row() const
access function for the first row on this processor
Definition: linear_algebra_distribution.h:481
void build_distribution(const LinearAlgebraDistribution *const dist_pt)
Definition: linear_algebra_distribution.h:507
DistributableLinearAlgebraObject()
Default constructor - create a distribution.
Definition: linear_algebra_distribution.h:438
void operator=(const DistributableLinearAlgebraObject &)=delete
Broken assignment operator.
void build_distribution(const LinearAlgebraDistribution &dist)
Definition: linear_algebra_distribution.h:514
Definition: linear_algebra_distribution.h:64
void operator=(const LinearAlgebraDistribution &old_dist)
Assignment Operator.
Definition: linear_algebra_distribution.h:137
bool distributed() const
Definition: linear_algebra_distribution.h:329
Vector< unsigned > first_row_vector() const
return the first_row Vector
Definition: linear_algebra_distribution.h:404
unsigned first_row(const unsigned &p) const
access function for the first row on the p-th processor
Definition: linear_algebra_distribution.h:289
LinearAlgebraDistribution(const OomphCommunicator *const comm_pt, const unsigned &first_row_, const unsigned &n_row_local, const unsigned &n_row=0)
Definition: linear_algebra_distribution.h:96
unsigned first_row() const
Definition: linear_algebra_distribution.h:261
bool operator==(const LinearAlgebraDistribution &other_dist) const
== Operator
Definition: linear_algebra_distribution.cc:268
OomphCommunicator * communicator_pt() const
const access to the communicator pointer
Definition: linear_algebra_distribution.h:335
friend std::ostream & operator<<(std::ostream &stream, LinearAlgebraDistribution &dist)
<< operator
Definition: linear_algebra_distribution.cc:318
Vector< unsigned > Nrow_local
the number of local rows on the processor
Definition: linear_algebra_distribution.h:414
void build(const OomphCommunicator *const comm_pt, const unsigned &first_row, const unsigned &nrow_local, const unsigned &nrow=0)
Definition: linear_algebra_distribution.cc:35
~LinearAlgebraDistribution()
Destructor.
Definition: linear_algebra_distribution.h:131
bool operator!=(const LinearAlgebraDistribution &other_dist) const
!= operator
Definition: linear_algebra_distribution.h:355
OomphCommunicator * Comm_pt
the pointer to the MPI communicator object in this distribution
Definition: linear_algebra_distribution.h:425
unsigned Nrow
the number of global rows
Definition: linear_algebra_distribution.h:411
LinearAlgebraDistribution(const OomphCommunicator *const comm_pt, const unsigned &n_row, const bool &distributed_=true)
Definition: linear_algebra_distribution.h:108
LinearAlgebraDistribution(const OomphCommunicator &comm, const unsigned &n_row, const bool &distributed_=true)
Definition: linear_algebra_distribution.h:85
Vector< unsigned > First_row
the first row on this processor
Definition: linear_algebra_distribution.h:417
unsigned global_to_local_row_map(const unsigned &global_i) const
return the local index corresponding to the global index
Definition: linear_algebra_distribution.h:365
Vector< unsigned > nrow_local_vector() const
return the nrow_local Vector
Definition: linear_algebra_distribution.h:398
bool built() const
Definition: linear_algebra_distribution.h:342
bool Distributed
Definition: linear_algebra_distribution.h:422
unsigned nrow_local(const unsigned &p) const
Definition: linear_algebra_distribution.h:222
unsigned nrow() const
access function to the number of global rows.
Definition: linear_algebra_distribution.h:186
void clear()
clears the distribution
Definition: linear_algebra_distribution.h:171
unsigned nrow_local() const
Definition: linear_algebra_distribution.h:193
unsigned rank_of_global_row(const unsigned i) const
return the processor rank of the global row number i
Definition: linear_algebra_distribution.h:387
LinearAlgebraDistribution(const LinearAlgebraDistribution &old_dist)
Copy Constructor.
Definition: linear_algebra_distribution.h:117
LinearAlgebraDistribution()
Definition: linear_algebra_distribution.h:68
LinearAlgebraDistribution(const LinearAlgebraDistribution *old_dist_pt)
pointer based copy constructor
Definition: linear_algebra_distribution.h:124
void build(const LinearAlgebraDistribution *new_dist_pt)
Definition: linear_algebra_distribution.h:165
LinearAlgebraDistribution(const OomphCommunicator &comm, const unsigned &first_row_, const unsigned &n_row_local, const unsigned &n_row=0)
Definition: linear_algebra_distribution.h:73
Definition: communicator.h:54
int my_rank() const
my rank
Definition: communicator.h:176
int nproc() const
number of processors
Definition: communicator.h:157
Definition: oomph_definitions.h:222
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor >, 0, Eigen::OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: common.h:85
void concatenate(const Vector< LinearAlgebraDistribution * > &in_distribution_pt, LinearAlgebraDistribution &out_distribution)
Definition: linear_algebra_distribution.cc:367
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86