26 #ifndef OOMPH_DOUBLE_VECTOR_WITH_HALO_CLASS_HEADER
27 #define OOMPH_DOUBLE_VECTOR_WITH_HALO_CLASS_HEADER
31 #include <oomph-lib-config.h>
39 class DoubleVectorWithHaloEntries;
121 std::map<unsigned, unsigned>::iterator it =
Local_index.find(global_eqn);
130 std::ostringstream error_stream;
131 error_stream <<
"Global equation " << global_eqn <<
" "
132 <<
"has not been set as halo\n";
169 const double&
v = 0.0)
183 const double&
v = 0.0)
215 this->
build(old_vector);
228 const unsigned first_row_local = this->
first_row();
229 const unsigned n_row_local = this->
nrow_local();
232 if ((i >= first_row_local) && (
i < first_row_local + n_row_local))
234 return (*
this)[
i - first_row_local];
243 std::ostringstream error_stream;
245 <<
"Halo data requested, but no halo scheme has been setup\n"
246 <<
"You should call this->build_halo_scheme(halo_scheme_pt).\n"
247 <<
"You may wish to setup the scheme for the Problem using \n"
248 <<
"Problem::setup_dof_halo_scheme()\n";
275 const unsigned first_row_local = this->
first_row();
276 const unsigned n_row_local = this->
nrow_local();
279 if ((i >= first_row_local) && (
i < first_row_local + n_row_local))
281 return (*
this)[
i - first_row_local];
290 std::ostringstream error_stream;
292 <<
"Halo data requested, but no halo scheme has been setup\n"
293 <<
"You should call this->build_halo_scheme(halo_scheme_pt).\n"
294 <<
"You may wish to setup the scheme for the Problem using \n"
295 <<
"Problem::setup_dof_halo_scheme()\n";
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
int i
Definition: BiCGSTAB_step_by_step.cpp:9
bool distributed() const
distribution is serial or distributed
Definition: linear_algebra_distribution.h:493
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
Definition: double_vector_with_halo.h:52
Vector< int > Haloed_n
Definition: double_vector_with_halo.h:67
LinearAlgebraDistribution *& distribution_pt()
Definition: double_vector_with_halo.h:106
Vector< int > Halo_displacement
Definition: double_vector_with_halo.h:84
Vector< int > Halo_n
Definition: double_vector_with_halo.h:80
unsigned n_halo_values() const
Return the number of halo values.
Definition: double_vector_with_halo.h:99
LinearAlgebraDistribution * Distribution_pt
Store the distribution that was used to setup the halo scheme.
Definition: double_vector_with_halo.h:88
std::map< unsigned, unsigned > Local_index
Definition: double_vector_with_halo.h:59
Vector< int > Haloed_displacement
Definition: double_vector_with_halo.h:71
void setup_halo_dofs(const std::map< unsigned, double * > &halo_data_pt, Vector< double * > &halo_dof_pt)
Definition: double_vector_with_halo.cc:225
Vector< unsigned > Haloed_eqns
Definition: double_vector_with_halo.h:63
DoubleVectorHaloScheme(LinearAlgebraDistribution *const &dist_pt, const Vector< unsigned > &required_global_eqn)
Definition: double_vector_with_halo.cc:36
unsigned local_index(const unsigned &global_eqn)
Return the local index associated with the global equation.
Definition: double_vector_with_halo.h:118
Vector< unsigned > Halo_eqns
Definition: double_vector_with_halo.h:76
Definition: double_vector_with_halo.h:150
DoubleVectorWithHaloEntries()
Constructor for an uninitialized DoubleVectorWithHaloEntries.
Definition: double_vector_with_halo.h:160
DoubleVectorWithHaloEntries(const LinearAlgebraDistribution *const &dist_pt, DoubleVectorHaloScheme *const &halo_scheme_pt=0, const double &v=0.0)
Definition: double_vector_with_halo.h:166
void build_halo_scheme(DoubleVectorHaloScheme *const &halo_scheme_pt)
Construct the halo scheme and storage for the halo data.
Definition: double_vector_with_halo.cc:379
DoubleVectorWithHaloEntries(const LinearAlgebraDistribution &dist, DoubleVectorHaloScheme *const &halo_scheme_pt=0, const double &v=0.0)
Definition: double_vector_with_halo.h:180
DoubleVectorWithHaloEntries(const DoubleVector &new_vector, DoubleVectorHaloScheme *const &halo_scheme_pt=0)
Copy constructor from any DoubleVector.
Definition: double_vector_with_halo.h:203
DoubleVectorHaloScheme *const & halo_scheme_pt() const
Access function for halo scheme (const version)
Definition: double_vector_with_halo.h:329
DoubleVectorHaloScheme * Halo_scheme_pt
Definition: double_vector_with_halo.h:153
const double & global_value(const unsigned &i) const
Direct access to the global entry (const version)
Definition: double_vector_with_halo.h:268
void synchronise()
Synchronise the halo data.
Definition: double_vector_with_halo.cc:269
void sum_all_halo_and_haloed_values()
Definition: double_vector_with_halo.cc:323
DoubleVectorHaloScheme *& halo_scheme_pt()
Access function for halo scheme.
Definition: double_vector_with_halo.h:323
double & global_value(const unsigned &i)
Direct access to global entry.
Definition: double_vector_with_halo.h:221
DoubleVectorWithHaloEntries(const DoubleVectorWithHaloEntries &new_vector)
Copy constructor from any DoubleVector.
Definition: double_vector_with_halo.h:195
void operator=(const DoubleVectorWithHaloEntries &old_vector)
assignment operator
Definition: double_vector_with_halo.h:213
Vector< double > Halo_value
Vector of the halo values.
Definition: double_vector_with_halo.h:156
~DoubleVectorWithHaloEntries()
Destructor.
Definition: double_vector_with_halo.h:191
Definition: double_vector.h:58
void build(const DoubleVector &old_vector)
Just copys the argument DoubleVector.
Definition: double_vector.cc:35
Definition: linear_algebra_distribution.h:64
Definition: oomph_definitions.h:222
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