|
| ElasticUpdateFluidInterfaceElement (FiniteElement *const &element_pt, const int &face_index, const unsigned &id=0) |
|
double | zeta_nodal (const unsigned &n, const unsigned &k, const unsigned &i) const |
|
double & | lagrange (const unsigned &n) |
| Return the lagrange multiplier at local node n. More...
|
|
void | fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
| Fill in contribution to residuals and Jacobian. More...
|
|
void | output (std::ostream &outfile) |
| Overload the output function. More...
|
|
void | output (std::ostream &outfile, const unsigned &n_plot) |
| Output the element. More...
|
|
void | output (FILE *file_pt) |
| Overload the C-style output function. More...
|
|
void | output (FILE *file_pt, const unsigned &n_plot) |
| C-style Output function. More...
|
|
void | add_additional_residual_contributions_interface (Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag, const Shape &psif, const DShape &dpsifds, const DShape &dpsifdS, const DShape &dpsifdS_div, const Vector< double > &s, const Vector< double > &interpolated_x, const Vector< double > &interpolated_n, const double &W, const double &J) |
|
virtual FluidInterfaceBoundingElement * | make_bounding_element (const int &face_index) |
|
| Hijacked () |
| Constructor, call the constructors of the base elements. More...
|
|
| Hijacked (FiniteElement *const &element_pt, const int &face_index) |
| Constructor used for hijacking face elements. More...
|
|
| Hijacked (FiniteElement *const &element_pt, const int &face_index, const unsigned &id=0) |
|
Data * | hijack_internal_value (const unsigned &n, const unsigned &i, const bool &return_data=true) |
|
Data * | hijack_external_value (const unsigned &n, const unsigned &i, const bool &return_data=true) |
|
Data * | hijack_nodal_value (const unsigned &n, const unsigned &i, const bool &return_data=true) |
|
Data * | hijack_nodal_position_value (const unsigned &n, const unsigned &i, const bool &return_data=true) |
|
Data * | hijack_nodal_spine_value (const unsigned &n, const unsigned &i, const bool &return_data=true) |
|
void | assign_local_eqn_numbers (const bool &store_local_dof_pt) |
|
void | get_residuals (Vector< double > &residuals) |
|
void | get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
|
| HijackedElementBase () |
|
virtual | ~HijackedElementBase () |
| Destructor, destroy the storage for the equation numbers. More...
|
|
void | unhijack_all_data () |
|
const double & | residual_multiplier () const |
| Return the value of the residual multiplier. More...
|
|
double *& | residual_multiplier_pt () |
| Return the pointer to the residual multiplier. More...
|
|
template<class EQUATION_CLASS, class DERIVATIVE_CLASS, class ELEMENT>
class oomph::ElasticUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >
//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Generic Elastic node update interface template class that can be combined with a given surface equations class and surface derivative class to provide a concrete implementation of any surface element that uses elastic node updates.
template<class EQUATION_CLASS , class DERIVATIVE_CLASS , class ELEMENT >
Constructor, pass a pointer to the bulk element and the face index of the bulk element to which the element is to be attached to. The optional identifier can be used to distinguish the additional nodal value (Lagr mult) created by this element from those created by other FaceElements.
747 element_pt->build_face_element(face_index,
this);
751 RefineableElement* ref_el_pt =
752 dynamic_cast<RefineableElement*
>(element_pt);
755 if (this->has_hanging_nodes())
758 "This flux element will not work correctly if nodes are hanging\n",
767 ELEMENT* cast_element_pt =
dynamic_cast<ELEMENT*
>(element_pt);
768 const unsigned n_u_index = cast_element_pt->n_u_nst();
769 this->U_index_interface.resize(n_u_index);
770 for (
unsigned i = 0;
i < n_u_index;
i++)
772 this->U_index_interface[
i] = cast_element_pt->u_index_nst(
i);
776 unsigned n_node_face = this->nnode();
780 FluidInterfaceAdditionalValues<EQUATION_CLASS>*
781 interface_additional_values_pt =
782 new FluidInterfaceAdditionalValues<EQUATION_CLASS>();
787 Vector<unsigned> additional_data_values(n_node_face);
788 for (
unsigned n = 0;
n < n_node_face;
n++)
791 additional_data_values[
n] =
792 interface_additional_values_pt->nadditional_values(
n) + 1;
798 this->add_additional_values(additional_data_values,
id);
803 for (
unsigned n = 0;
n < n_node_face; ++
n)
806 additional_data_values[
n] - 1 +
807 dynamic_cast<BoundaryNodeBase*
>(this->node_pt(
n))
808 ->index_of_first_value_assigned_by_face_element(
id);
812 interface_additional_values_pt->setup_equation_indices(
this,
id);
815 delete interface_additional_values_pt;
816 interface_additional_values_pt = 0;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Vector< unsigned > Lagrange_index
Definition: specific_node_update_interface_elements.h:681
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
References oomph::FiniteElement::build_face_element(), i, oomph::ElasticUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::Lagrange_index, n, oomph::FluidInterfaceAdditionalValues< ELEMENT >::nadditional_values(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::FluidInterfaceAdditionalValues< ELEMENT >::setup_equation_indices().
template<class EQUATION_CLASS , class DERIVATIVE_CLASS , class ELEMENT >
void oomph::ElasticUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::add_additional_residual_contributions_interface |
( |
Vector< double > & |
residuals, |
|
|
DenseMatrix< double > & |
jacobian, |
|
|
const unsigned & |
flag, |
|
|
const Shape & |
psif, |
|
|
const DShape & |
dpsifds, |
|
|
const DShape & |
dpsifdS, |
|
|
const DShape & |
dpsifdS_div, |
|
|
const Vector< double > & |
s, |
|
|
const Vector< double > & |
interpolated_x, |
|
|
const Vector< double > & |
interpolated_n, |
|
|
const double & |
W, |
|
|
const double & |
J |
|
) |
| |
|
inline |
Helper function to calculate the additional contributions to be added at each integration point. This deals with Lagrange multiplier contribution, as well as any additional contributions by the other equations.
891 EQUATION_CLASS::add_additional_residual_contributions_interface(
906 const unsigned n_node = this->nnode();
908 const unsigned nodal_dimension = this->nodal_dimension();
910 double interpolated_lagrange = 0.0;
911 for (
unsigned l = 0; l < n_node; l++)
914 interpolated_lagrange +=
lagrange(l) * psif(l);
917 int local_eqn = 0, local_unknown = 0;
920 for (
unsigned l = 0; l < n_node; l++)
923 for (
unsigned i = 0;
i < nodal_dimension;
i++)
927 local_eqn = this->position_local_eqn(l, 0,
i);
931 residuals[local_eqn] -=
932 interpolated_lagrange * interpolated_n[
i] * psif(l) *
J *
W;
938 for (
unsigned l2 = 0; l2 < n_node; l2++)
943 if (local_unknown >= 0)
945 jacobian(local_eqn, local_unknown) -=
946 psif(l2) * interpolated_n[
i] * psif(l) *
J *
W;
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
double & lagrange(const unsigned &n)
Return the lagrange multiplier at local node n.
Definition: specific_node_update_interface_elements.h:830
int kinematic_local_eqn(const unsigned &n)
Definition: specific_node_update_interface_elements.h:692
RealScalar s
Definition: level1_cplx_impl.h:130
@ W
Definition: quadtree.h:63
References i, J, oomph::ElasticUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::kinematic_local_eqn(), oomph::ElasticUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::lagrange(), s, and oomph::QuadTreeNames::W.