30 #ifndef OOMPH_ELEMENT_WITH_EXTERNAL_ELEMENT_HEADER
31 #define OOMPH_ELEMENT_WITH_EXTERNAL_ELEMENT_HEADER
35 #include <oomph-lib-config.h>
113 #ifdef RANGE_CHECKING
122 const unsigned& ipt)
const
127 #ifdef RANGE_CHECKING
137 const unsigned& interaction_index,
const unsigned& ipt)
142 #ifdef RANGE_CHECKING
150 const unsigned& interaction_index,
const unsigned& ipt)
const
155 #ifdef RANGE_CHECKING
166 const unsigned& interaction_index);
192 Vector<std::set<FiniteElement*>>
const& external_elements_pt,
193 std::set<std::pair<Data*, unsigned>>& paired_interaction_data);
198 Vector<std::set<FiniteElement*>>
const& external_elements_pt,
199 std::set<Data*>& external_geometric_data_pt);
215 const unsigned n_external_interaction_field_data =
219 for (
unsigned i = 0;
i < n_external_interaction_field_data;
i++)
254 const unsigned n_external_interaction_geometric_data =
257 Vector<Data*> temp_data(n_external_interaction_geometric_data);
258 for (
unsigned i = 0;
i < n_external_interaction_geometric_data;
i++)
321 const bool& store_local_dof_pt)
337 const bool& store_local_dof_pt);
363 const unsigned n_dof = this->
ndof();
388 const unsigned n_dof = this->
ndof();
414 const unsigned n_dof = this->
ndof();
433 const unsigned n_dof = this->
ndof();
530 std::ostringstream error_stream;
532 <<
"Storage for the external elements has not been allocated.\n"
533 <<
"initialise_external_element_storage() must be called.\n"
534 <<
"This tends to be done automatically during the multi-domain\n"
535 <<
"setup procedures -- you're most likely to get this error\n"
536 <<
"because you have not specified the number of interactions\n"
537 <<
"that your ElementWithExternalElement is involved in.\n"
538 <<
"You ought to specify this with a call to\n\n"
539 <<
" ElementWithExternalElement::set_ninteraction(...)\n\n";
547 const unsigned& ipt)
const
550 bool range_error =
false;
552 std::ostringstream error_message;
556 error_message <<
"Range Error: Interaction " << interaction_index
557 <<
" is not in the range (0," <<
Ninteraction - 1 <<
")";
565 error_message <<
"Range Error: Integration point " << ipt
566 <<
" is not in the range (0," <<
Nintpt - 1 <<
")";
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Definition: element_with_external_element.h:56
virtual void update_before_external_interaction_field_fd()
Definition: element_with_external_element.h:450
void output_external_elements(std::ostream &outfile, const unsigned &interaction_index)
Definition: element_with_external_element.cc:798
ElementWithExternalElement(const ElementWithExternalElement &)=delete
Broken copy constructor.
unsigned Nexternal_interaction_field_data
Number of external interaction field data.
Definition: element_with_external_element.h:591
Vector< double > & external_element_local_coord(const unsigned &interaction_index, const unsigned &ipt)
Definition: element_with_external_element.h:136
FiniteElement *const & external_element_pt(const unsigned &interaction_index, const unsigned &ipt) const
Access function to source element, const version.
Definition: element_with_external_element.h:121
bool storage_has_been_allocated() const
Helper function to check if storage has actually been allocated.
Definition: element_with_external_element.h:90
void set_ninteraction(const unsigned &n_interaction)
Definition: element_with_external_element.h:178
bool external_geometric_data_is_included() const
Definition: element_with_external_element.h:301
void initialise_external_element_storage()
Definition: element_with_external_element.cc:76
void include_external_geometric_data()
Definition: element_with_external_element.h:286
unsigned Nexternal_element_storage
Definition: element_with_external_element.h:588
virtual void update_before_external_interaction_geometric_fd()
Definition: element_with_external_element.h:481
void operator=(const ElementWithExternalElement &)=delete
Broken assignment operator.
void describe_local_dofs(std::ostream &out, const std::string &curr_string) const
Definition: element_with_external_element.cc:205
virtual void reset_in_external_interaction_geometric_fd(const unsigned &i)
Definition: element_with_external_element.h:501
FiniteElement *& external_element_pt(const unsigned &interaction_index, const unsigned &ipt)
Definition: element_with_external_element.h:107
unsigned Nexternal_interaction_geometric_data
Number of external interaction geometric data.
Definition: element_with_external_element.h:594
virtual void reset_after_external_interaction_field_fd()
Definition: element_with_external_element.h:456
virtual void identify_all_geometric_data_for_external_interaction(Vector< std::set< FiniteElement * >> const &external_elements_pt, std::set< Data * > &external_geometric_data_pt)
Definition: element_with_external_element.cc:178
bool add_external_geometric_data()
Are we including external geometric data in the element's Jacobian.
Definition: element_with_external_element.h:238
unsigned nexternal_interaction_geometric_data() const
Definition: element_with_external_element.h:232
unsigned * External_interaction_field_data_index
Definition: element_with_external_element.h:609
void fill_in_jacobian_from_external_interaction_field_by_fd(DenseMatrix< double > &jacobian)
Definition: element_with_external_element.h:385
unsigned nexternal_interaction_field_data() const
Definition: element_with_external_element.h:205
virtual void reset_in_external_interaction_field_fd(const unsigned &i)
Definition: element_with_external_element.h:470
virtual ~ElementWithExternalElement()
The destructor, clean up any allocated memory.
Definition: element_with_external_element.cc:36
void ignore_external_interaction_data()
Definition: element_with_external_element.h:278
void fill_in_jacobian_from_external_interaction_field_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: element_with_external_element.cc:638
void check_storage_allocated() const
Helper function to check that storage has actually been allocated.
Definition: element_with_external_element.h:523
FiniteElement ** External_element_pt
Definition: element_with_external_element.h:600
void range_check(const unsigned &interaction_index, const unsigned &ipt) const
Helper function for range checking in the access functions.
Definition: element_with_external_element.h:546
Data ** External_interaction_field_data_pt
Definition: element_with_external_element.h:515
Vector< Data * > external_interaction_field_data_pt() const
Definition: element_with_external_element.h:212
Vector< double > * External_element_local_coord
Definition: element_with_external_element.h:605
int * External_interaction_field_data_local_eqn
Definition: element_with_external_element.h:613
void fill_in_jacobian_from_external_interaction_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: element_with_external_element.h:345
void fill_in_jacobian_from_external_interaction_by_fd(DenseMatrix< double > &jacobian)
Definition: element_with_external_element.h:360
virtual void reset_after_external_interaction_geometric_fd()
Definition: element_with_external_element.h:487
bool Add_external_geometric_data
Boolean flag to indicate whether to include the external geometric data.
Definition: element_with_external_element.h:511
bool add_external_interaction_data()
Are we including external data in the element's Jacobian.
Definition: element_with_external_element.h:244
void include_external_interaction_data()
Definition: element_with_external_element.h:294
virtual void update_in_external_interaction_geometric_fd(const unsigned &i)
Definition: element_with_external_element.h:492
Data ** External_interaction_geometric_data_pt
Definition: element_with_external_element.h:519
void assign_internal_and_external_local_eqn_numbers(const bool &store_local_dof_pt)
Definition: element_with_external_element.h:320
unsigned * External_interaction_geometric_data_index
Definition: element_with_external_element.h:618
bool Add_external_interaction_data
Boolean flag to indicate whether to include the external data.
Definition: element_with_external_element.h:508
void fill_in_jacobian_from_external_interaction_geometric_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: element_with_external_element.cc:720
virtual void identify_all_field_data_for_external_interaction(Vector< std::set< FiniteElement * >> const &external_elements_pt, std::set< std::pair< Data *, unsigned >> &paired_interaction_data)
Definition: element_with_external_element.cc:152
void ignore_external_geometric_data()
Definition: element_with_external_element.h:271
unsigned ninteraction() const
Return the number of interactions in the element.
Definition: element_with_external_element.h:184
Vector< Data * > external_interaction_geometric_data_pt() const
Definition: element_with_external_element.h:251
void fill_in_jacobian_from_external_interaction_geometric_by_fd(DenseMatrix< double > &jacobian)
Definition: element_with_external_element.h:411
void assign_external_interaction_data_local_eqn_numbers(const bool &store_local_dof_pt)
Definition: element_with_external_element.cc:246
unsigned Nintpt
Number of intergation point in the element.
Definition: element_with_external_element.h:584
unsigned Ninteraction
Number of interactions.
Definition: element_with_external_element.h:581
int * External_interaction_geometric_data_local_eqn
Definition: element_with_external_element.h:622
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: element_with_external_element.h:427
virtual void update_in_external_interaction_field_fd(const unsigned &i)
Definition: element_with_external_element.h:461
ElementWithExternalElement()
Definition: element_with_external_element.h:60
void flush_all_external_element_storage()
Flush the storage for external elements.
Definition: element_with_external_element.cc:125
Vector< double > const & external_element_local_coord(const unsigned &interaction_index, const unsigned &ipt) const
Access function to get source element's coords, const version.
Definition: element_with_external_element.h:149
Definition: elements.h:1313
virtual void fill_in_jacobian_from_nodal_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: elements.cc:3660
virtual void fill_in_contribution_to_residuals(Vector< double > &residuals)
Definition: elements.h:357
unsigned ndof() const
Return the number of equations/dofs in the element.
Definition: elements.h:835
virtual void get_residuals(Vector< double > &residuals)
Definition: elements.h:980
virtual void assign_internal_and_external_local_eqn_numbers(const bool &store_local_dof_pt)
Definition: elements.cc:938
void fill_in_jacobian_from_external_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
Definition: elements.cc:1199
void fill_in_jacobian_from_internal_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
Definition: elements.cc:1102
Definition: oomph_definitions.h:222
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
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
void set(Container &c, Position position, const Value &value)
Definition: stdlist_overload.cpp:36
std::ofstream out("Result.txt")