oomph::ElementElementConstraintElement Class Reference

#include <element_element_constraint_elements.h>

+ Inheritance diagram for oomph::ElementElementConstraintElement:

Public Member Functions

 ElementElementConstraintElement (Vector< FiniteElement * > elem_pt)
 
- Public Member Functions inherited from oomph::ConstraintElement
 ConstraintElement (Vector< Data * > &data_pt)
 
 ConstraintElement (Vector< Data * > data_pt)
 
virtual void fill_in_contribution_to_residuals (Vector< double > &residuals)
 
virtual void construct_lagrange_multipliers ()
 
- Public Member Functions inherited from oomph::GeneralisedElement
 GeneralisedElement ()
 Constructor: Initialise all pointers and all values to zero. More...
 
virtual ~GeneralisedElement ()
 Virtual destructor to clean up any memory allocated by the object. More...
 
 GeneralisedElement (const GeneralisedElement &)=delete
 Broken copy constructor. More...
 
void operator= (const GeneralisedElement &)=delete
 Broken assignment operator. More...
 
Data *& internal_data_pt (const unsigned &i)
 Return a pointer to i-th internal data object. More...
 
Data *const & internal_data_pt (const unsigned &i) const
 Return a pointer to i-th internal data object (const version) More...
 
Data *& external_data_pt (const unsigned &i)
 Return a pointer to i-th external data object. More...
 
Data *const & external_data_pt (const unsigned &i) const
 Return a pointer to i-th external data object (const version) More...
 
unsigned long eqn_number (const unsigned &ieqn_local) const
 
int local_eqn_number (const unsigned long &ieqn_global) const
 
unsigned add_external_data (Data *const &data_pt, const bool &fd=true)
 
bool external_data_fd (const unsigned &i) const
 
void exclude_external_data_fd (const unsigned &i)
 
void include_external_data_fd (const unsigned &i)
 
void flush_external_data ()
 Flush all external data. More...
 
void flush_external_data (Data *const &data_pt)
 Flush the object addressed by data_pt from the external data array. More...
 
unsigned ninternal_data () const
 Return the number of internal data objects. More...
 
unsigned nexternal_data () const
 Return the number of external data objects. More...
 
unsigned ndof () const
 Return the number of equations/dofs in the element. More...
 
void dof_vector (const unsigned &t, Vector< double > &dof)
 Return the vector of dof values at time level t. More...
 
void dof_pt_vector (Vector< double * > &dof_pt)
 Return the vector of pointers to dof values. More...
 
void set_internal_data_time_stepper (const unsigned &i, TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
void assign_internal_eqn_numbers (unsigned long &global_number, Vector< double * > &Dof_pt)
 
void describe_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void describe_local_dofs (std::ostream &out, const std::string &current_string) const
 
void add_internal_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt)
 
virtual void assign_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void complete_setup_of_dependencies ()
 
virtual void get_residuals (Vector< double > &residuals)
 
virtual void get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
virtual void get_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void get_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void get_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void get_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void get_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void get_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void get_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void get_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 
virtual unsigned self_test ()
 
virtual void compute_norm (Vector< double > &norm)
 
virtual void compute_norm (double &norm)
 
virtual unsigned ndof_types () const
 
virtual void get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
 

Protected Member Functions

FiniteElementelem_pt (const unsigned &i)
 
Datanode_pt (const unsigned &e, const unsigned &i)
 
Dataextern_data_pt (const unsigned &e, const unsigned &i)
 
Dataintern_data_pt (const unsigned &e, const unsigned &i)
 
const int node_eqn (const unsigned &e, const unsigned &i, const unsigned &j)
 
const int extern_data_eqn (const unsigned &e, const unsigned &i, const unsigned &j)
 
const int intern_data_eqn (const unsigned &e, const unsigned &i, const unsigned &j)
 
- Protected Member Functions inherited from oomph::ConstraintElement
virtual void evaluate_constraint_functions (Vector< double > &error)
 
Vector< unsignedget_constrained_data_local_index ()
 
unsigned get_lagrange_multiplier_index ()
 
Datalagrange_multiplier ()
 
const int lagrange_eqn (const unsigned &i)
 
Dataext_data_pt (const unsigned &i)
 
const int ext_eqn (const unsigned &i, const unsigned &j)
 
- Protected Member Functions inherited from oomph::GeneralisedElement
unsigned add_internal_data (Data *const &data_pt, const bool &fd=true)
 
bool internal_data_fd (const unsigned &i) const
 
void exclude_internal_data_fd (const unsigned &i)
 
void include_internal_data_fd (const unsigned &i)
 
void clear_global_eqn_numbers ()
 
void add_global_eqn_numbers (std::deque< unsigned long > const &global_eqn_numbers, std::deque< double * > const &global_dof_pt)
 
virtual void assign_internal_and_external_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void assign_all_generic_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void assign_additional_local_eqn_numbers ()
 
int internal_local_eqn (const unsigned &i, const unsigned &j) const
 
int external_local_eqn (const unsigned &i, const unsigned &j)
 
void fill_in_jacobian_from_internal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_internal_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
virtual void update_before_internal_fd ()
 
virtual void reset_after_internal_fd ()
 
virtual void update_in_internal_fd (const unsigned &i)
 
virtual void reset_in_internal_fd (const unsigned &i)
 
virtual void update_before_external_fd ()
 
virtual void reset_after_external_fd ()
 
virtual void update_in_external_fd (const unsigned &i)
 
virtual void reset_in_external_fd (const unsigned &i)
 
virtual void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
virtual void fill_in_contribution_to_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void fill_in_contribution_to_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void fill_in_contribution_to_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void fill_in_contribution_to_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 

Private Member Functions

void build (Vector< FiniteElement * > &elem_pt)
 

Private Attributes

unsigned N_Element
 
Vector< FiniteElement * > Element_pt
 
Vector< Vector< unsigned > > Node_Local_Index
 
Vector< unsignedN_Node
 
Vector< Vector< unsigned > > Internal_Data_Local_Index
 
Vector< unsignedN_Internal_Data
 
Vector< Vector< unsigned > > External_Data_Local_Index
 
Vector< unsignedN_External_Data
 

Additional Inherited Members

- Static Public Attributes inherited from oomph::GeneralisedElement
static bool Suppress_warning_about_repeated_internal_data
 
static bool Suppress_warning_about_repeated_external_data = true
 
static double Default_fd_jacobian_step = 1.0e-8
 
- Protected Attributes inherited from oomph::ConstraintElement
Vector< unsignedConstrained_Data_Local_Index
 
unsigned Num_Constrained_Data
 
unsigned Lagrange_Multiplier_Index
 
unsigned Num_Constraints
 
- Static Protected Attributes inherited from oomph::GeneralisedElement
static DenseMatrix< doubleDummy_matrix
 
static std::deque< double * > Dof_pt_deque
 

Constructor & Destructor Documentation

◆ ElementElementConstraintElement()

oomph::ElementElementConstraintElement::ElementElementConstraintElement ( Vector< FiniteElement * >  elem_pt)
inline
28  :
32  {
33  //
34  build(elem_pt);
35  }
ConstraintElement(Vector< Data * > &data_pt)
Definition: constraint_elements.h:85
static Vector< Data * > element_pt_to_data_pt(Vector< FiniteElement * > elem_pt)
Definition: element_element_constraint_elements.cc:14
Vector< FiniteElement * > Element_pt
Definition: element_element_constraint_elements.h:87
unsigned N_Element
Definition: element_element_constraint_elements.h:85
FiniteElement * elem_pt(const unsigned &i)
Definition: element_element_constraint_elements.h:39
void build(Vector< FiniteElement * > &elem_pt)
Definition: element_element_constraint_elements.cc:54
double size() const
Definition: elements.cc:4290

References build(), and elem_pt().

Member Function Documentation

◆ build()

void oomph::ElementElementConstraintElement::build ( Vector< FiniteElement * > &  elem_pt)
private
55  {
56  // Calculate where the various bits of data are stored in the external data
57  // We know how ElementElementConstraintElementHelper orders the data so we just need to match it
58 
62  N_Node.resize(N_Element);
63  N_Internal_Data.resize(N_Element);
64  N_External_Data.resize(N_Element);
65 
66  // Get the first index by taking the difference between the total number of external data and the number of constrained data
67  unsigned data_index = nexternal_data() - Num_Constrained_Data;
68  for(unsigned e=0; e<N_Element; e++)
69  {
70  const unsigned n_node = Element_pt[e]->nnode();
71  Node_Local_Index[e].resize(n_node);
72  N_Node[e] = n_node;
73  for(unsigned i=0; i<n_node; i++)
74  {
75  Node_Local_Index[e][i] = data_index++;
76  }
77 
78  const unsigned n_internal = Element_pt[e]->ninternal_data();
80  N_Internal_Data[e] = n_internal;
81  for(unsigned i=0; i<n_internal; i++)
82  {
83  Internal_Data_Local_Index[e][i] = data_index++;
84  }
85 
86  const unsigned n_external = Element_pt[e]->nexternal_data();
88  N_External_Data[e] = n_external;
89  for(unsigned i=0; i<n_external; i++)
90  {
91  External_Data_Local_Index[e][i] = data_index++;
92  }
93  }
94  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
unsigned Num_Constrained_Data
Definition: constraint_elements.h:176
Vector< unsigned > N_External_Data
Definition: element_element_constraint_elements.h:99
Vector< unsigned > N_Node
Definition: element_element_constraint_elements.h:91
Vector< Vector< unsigned > > Internal_Data_Local_Index
Definition: element_element_constraint_elements.h:93
Vector< unsigned > N_Internal_Data
Definition: element_element_constraint_elements.h:95
Vector< Vector< unsigned > > Node_Local_Index
Definition: element_element_constraint_elements.h:89
Vector< Vector< unsigned > > External_Data_Local_Index
Definition: element_element_constraint_elements.h:97
unsigned nexternal_data() const
Return the number of external data objects.
Definition: elements.h:829
unsigned ninternal_data() const
Return the number of internal data objects.
Definition: elements.h:823

References e(), Element_pt, External_Data_Local_Index, i, Internal_Data_Local_Index, N_Element, N_External_Data, N_Internal_Data, N_Node, oomph::GeneralisedElement::nexternal_data(), oomph::GeneralisedElement::ninternal_data(), Node_Local_Index, and oomph::ConstraintElement::Num_Constrained_Data.

Referenced by ElementElementConstraintElement().

◆ elem_pt()

FiniteElement* oomph::ElementElementConstraintElement::elem_pt ( const unsigned i)
inlineprotected
40  {
41  #ifdef RANGE_CHECKING
42  if(i>=N_Element)
43  {
44  throw OomphLibError(std::to_string(i) + " is greater than the number of elements " + std::to_string(N_Element),
47  }
48  #endif
49  return Element_pt[i];
50  }
std::string to_string(T object, unsigned float_precision=8)
Definition: oomph_utilities.h:189
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References Element_pt, i, N_Element, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::StringConversion::to_string().

Referenced by ElementElementConstraintElement(), and oomph::ElementElementMortaringElement::evaluate_constraint_functions().

◆ extern_data_eqn()

const int oomph::ElementElementConstraintElement::extern_data_eqn ( const unsigned e,
const unsigned i,
const unsigned j 
)
inlineprotected
73  {
75  }
int external_local_eqn(const unsigned &i, const unsigned &j)
Definition: elements.h:311
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References e(), oomph::GeneralisedElement::external_local_eqn(), i, Internal_Data_Local_Index, and j.

◆ extern_data_pt()

Data* oomph::ElementElementConstraintElement::extern_data_pt ( const unsigned e,
const unsigned i 
)
inlineprotected
59  {
61  }
Data *& external_data_pt(const unsigned &i)
Return a pointer to i-th external data object.
Definition: elements.h:659

References e(), oomph::GeneralisedElement::external_data_pt(), i, and Internal_Data_Local_Index.

◆ intern_data_eqn()

const int oomph::ElementElementConstraintElement::intern_data_eqn ( const unsigned e,
const unsigned i,
const unsigned j 
)
inlineprotected

◆ intern_data_pt()

Data* oomph::ElementElementConstraintElement::intern_data_pt ( const unsigned e,
const unsigned i 
)
inlineprotected

◆ node_eqn()

const int oomph::ElementElementConstraintElement::node_eqn ( const unsigned e,
const unsigned i,
const unsigned j 
)
inlineprotected

◆ node_pt()

Data* oomph::ElementElementConstraintElement::node_pt ( const unsigned e,
const unsigned i 
)
inlineprotected

Member Data Documentation

◆ Element_pt

Vector<FiniteElement*> oomph::ElementElementConstraintElement::Element_pt
private

Referenced by build(), and elem_pt().

◆ External_Data_Local_Index

Vector<Vector<unsigned> > oomph::ElementElementConstraintElement::External_Data_Local_Index
private

◆ Internal_Data_Local_Index

Vector<Vector<unsigned> > oomph::ElementElementConstraintElement::Internal_Data_Local_Index
private

◆ N_Element

unsigned oomph::ElementElementConstraintElement::N_Element
private

Referenced by build(), and elem_pt().

◆ N_External_Data

Vector<unsigned> oomph::ElementElementConstraintElement::N_External_Data
private

Referenced by build().

◆ N_Internal_Data

Vector<unsigned> oomph::ElementElementConstraintElement::N_Internal_Data
private

Referenced by build().

◆ N_Node

Vector<unsigned> oomph::ElementElementConstraintElement::N_Node
private

Referenced by build().

◆ Node_Local_Index

Vector<Vector<unsigned> > oomph::ElementElementConstraintElement::Node_Local_Index
private

Referenced by build(), node_eqn(), and node_pt().


The documentation for this class was generated from the following files: