28 #ifndef OOMPH_INTERFACE_ELEMENTS_HEADER
29 #define OOMPH_INTERFACE_ELEMENTS_HEADER
33 #include <oomph-lib-config.h>
36 #include "../generic/elements.h"
37 #include "../generic/spines.h"
38 #include "../generic/shape.h"
39 #include "../generic/hijacked_elements.h"
96 (*Wall_unit_normal_fct_pt)(
x,
normal);
102 "FluidInterfaceBoundingElement::wall_unit_normal()",
190 "FluidInterfaceBoundingElement::ca()",
203 std::string error_message =
"Contact angle not set\n";
205 "Please use FluidInterfaceBoundingElement::set_contact_angle()\n";
238 const unsigned& flag,
253 void output(std::ostream& outfile,
const unsigned& n_plot)
265 void output(FILE* file_pt,
const unsigned& n_plot)
429 const unsigned& flag,
433 const DShape& dpsifdS_div,
473 const double&
ca()
const
485 "FluidInterfaceElement::ca()",
498 const double&
st()
const
510 double u(
const unsigned&
j,
const unsigned&
i)
542 if (external_pressure_data_pt->
nvalue() != 1)
544 std::ostringstream error_message;
546 <<
"External pressure Data must only contain a single value!\n"
547 <<
"This one contains " << external_pressure_data_pt->
nvalue()
568 Index_of_external_pressure_value = 0;
579 Data* external_pressure_data_pt,
580 const unsigned& index_of_external_pressure_value)
586 if (index_of_external_pressure_value >=
587 external_pressure_data_pt->
nvalue())
589 std::ostringstream error_message;
590 error_message <<
"External pressure Data only contains "
591 << external_pressure_data_pt->
nvalue() <<
" values\n"
592 <<
"You have declared value "
593 << index_of_external_pressure_value
594 <<
" to be the value representing the pressure\n"
642 void output(std::ostream& outfile,
const unsigned& n_plot);
651 void output(FILE* file_pt,
const unsigned& n_plot);
674 DShape& surface_divergence);
698 DShape& surface_divergence);
722 DShape& surface_divergence);
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
Definition: interface_elements.h:685
double compute_surface_derivatives(const Shape &psi, const DShape &dpsids, const DenseMatrix< double > &interpolated_t, const Vector< double > &interpolated_x, DShape &surface_gradient, DShape &surface_divergence)
Fill in the specific surface derivative calculations.
Definition: interface_elements.cc:798
AxisymmetricDerivatives()
Definition: interface_elements.h:688
unsigned nvalue() const
Return number of values stored in data object (incl pinned ones).
Definition: nodes.h:483
double value(const unsigned &i) const
Definition: nodes.h:293
Definition: elements.h:4338
int & face_index()
Definition: elements.h:4626
FiniteElement *& bulk_element_pt()
Pointer to higher-dimensional "bulk" element.
Definition: elements.h:4735
double interpolated_x(const Vector< double > &s, const unsigned &i) const
Definition: elements.h:4528
unsigned & bulk_node_number(const unsigned &n)
Definition: elements.h:4825
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
virtual void output(std::ostream &outfile)
Definition: elements.h:3050
virtual void node_update()
Definition: elements.cc:5072
Definition: interface_elements.h:54
double *& contact_angle_pt()
Access function to the pointer specifying the prescribed contact angle.
Definition: interface_elements.h:166
Vector< unsigned > U_index_interface_boundary
Definition: interface_elements.h:81
void(* WallUnitNormalFctPt)(const Vector< double > &x, Vector< double > &unit_normal)
Definition: interface_elements.h:58
virtual int kinematic_local_eqn(const unsigned &n)=0
void wall_unit_normal(const Vector< double > &x, Vector< double > &normal)
Definition: interface_elements.h:90
double * Contact_angle_pt
Pointer to the desired value of the contact angle (if any)
Definition: interface_elements.h:67
WallUnitNormalFctPt wall_unit_normal_fct_pt() const
Access function: Pointer to wall unit normal function. Const version.
Definition: interface_elements.h:147
WallUnitNormalFctPt & wall_unit_normal_fct_pt()
Access function: Pointer to wall unit normal function.
Definition: interface_elements.h:141
virtual void add_additional_residual_contributions_interface_boundary(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag, const Shape &psif, const DShape &dpsifds, const Vector< double > &interpolated_n, const double &W)
Definition: interface_elements.h:235
double & contact_angle()
Return value of the contact angle.
Definition: interface_elements.h:198
virtual void fill_in_generic_residual_contribution_interface_boundary(Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned flag)=0
Calculate the generic residuals contribution.
void reset_after_external_fd()
Definition: interface_elements.h:124
void reset_in_external_fd(const unsigned &i)
Definition: interface_elements.h:120
double *& ca_pt()
Access function to the pointer specifying the capillary number.
Definition: interface_elements.h:172
void output(std::ostream &outfile)
Overload the output function.
Definition: interface_elements.h:247
void set_contact_angle(double *const &angle_pt, const bool &strong=true)
Definition: interface_elements.cc:47
void output(FILE *file_pt)
Overload the C-style output function.
Definition: interface_elements.h:259
void update_in_external_fd(const unsigned &i)
Definition: interface_elements.h:111
FluidInterfaceBoundingElement()
Constructor.
Definition: interface_elements.h:132
WallUnitNormalFctPt Wall_unit_normal_fct_pt
Definition: interface_elements.h:64
double * Ca_pt
Pointer to the desired value of the capillary number.
Definition: interface_elements.h:70
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Calculate the residuals.
Definition: interface_elements.h:214
Vector< unsigned > & u_index_interface_boundary()
Access for nodal index at which the velocity components are stored.
Definition: interface_elements.h:153
double ca()
Return the value of the capillary number.
Definition: interface_elements.h:178
void output(FILE *file_pt, const unsigned &n_plot)
C-style Output function.
Definition: interface_elements.h:265
void output(std::ostream &outfile, const unsigned &n_plot)
Output function.
Definition: interface_elements.h:253
unsigned Contact_angle_flag
Definition: interface_elements.h:77
Definition: interface_elements.h:321
virtual double compute_surface_derivatives(const Shape &psi, const DShape &dpsids, const DenseMatrix< double > &interpolated_t, const Vector< double > &interpolated_x, DShape &dpsidS, DShape &dpsidS_div)=0
virtual 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)
Definition: interface_elements.h:426
const double & st() const
The value of the Strouhal number.
Definition: interface_elements.h:498
double *& ca_pt()
Pointer to the Capillary number.
Definition: interface_elements.h:492
unsigned Index_of_external_pressure_value
Which of the values in Pext_data_pt stores the external pressure.
Definition: interface_elements.h:350
int External_data_number_of_external_pressure
Definition: interface_elements.h:344
virtual FluidInterfaceBoundingElement * make_bounding_element(const int &face_index)
Definition: interface_elements.h:617
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Calculate the residuals by calling the generic residual contribution.
Definition: interface_elements.h:464
FluidInterfaceElement()
Constructor, set the default values of the booleans and pointers (null)
Definition: interface_elements.h:444
double u(const unsigned &j, const unsigned &i)
Return the i-th velocity component at local node j.
Definition: interface_elements.h:510
double *& st_pt()
The pointer to the Strouhal number.
Definition: interface_elements.h:504
virtual int kinematic_local_eqn(const unsigned &n)=0
Vector< unsigned > U_index_interface
Nodal index at which the i-th velocity component is stored.
Definition: interface_elements.h:338
void set_external_pressure_data(Data *external_pressure_data_pt)
Definition: interface_elements.h:539
double pext() const
Return the value of the external pressure.
Definition: interface_elements.h:519
virtual double sigma(const Vector< double > &s_local)
Definition: interface_elements.h:458
virtual void hijack_kinematic_conditions(const Vector< unsigned > &bulk_node_number)=0
void set_external_pressure_data(Data *external_pressure_data_pt, const unsigned &index_of_external_pressure_value)
Definition: interface_elements.h:578
double interpolated_u(const Vector< double > &s, const unsigned &i)
Calculate the i-th velocity component at the local coordinate s.
Definition: interface_elements.cc:442
Data * Pext_data_pt
Pointer to the Data item that stores the external pressure.
Definition: interface_elements.h:347
void output(std::ostream &outfile)
Overload the output function.
Definition: interface_elements.h:636
const double & ca() const
The value of the Capillary number.
Definition: interface_elements.h:473
int pext_local_eqn()
Definition: interface_elements.h:360
void output(FILE *file_pt)
Overload the C-style output function.
Definition: interface_elements.h:645
double * Ca_pt
Pointer to the Capillary number.
Definition: interface_elements.h:327
static double Default_Physical_Constant_Value
Default value for physical constants.
Definition: interface_elements.h:333
double * St_pt
Pointer to the Strouhal number.
Definition: interface_elements.h:330
virtual void fill_in_generic_residual_contribution_interface(Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned flag)
Definition: interface_elements.cc:471
unsigned nexternal_data() const
Return the number of external data objects.
Definition: elements.h:829
unsigned add_external_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:307
static DenseMatrix< double > Dummy_matrix
Definition: elements.h:227
int external_local_eqn(const unsigned &i, const unsigned &j)
Definition: elements.h:311
Definition: interface_elements.h:661
double compute_surface_derivatives(const Shape &psi, const DShape &dpsids, const DenseMatrix< double > &interpolated_t, const Vector< double > &interpolated_x, DShape &surface_gradient, DShape &surface_divergence)
Fill in the specific surface derivative calculations.
Definition: interface_elements.cc:757
LineDerivatives()
Definition: interface_elements.h:664
Specialisation of the interface boundary constraint to a line.
Definition: interface_elements.h:297
LineFluidInterfaceBoundingElement()
Constructor.
Definition: interface_elements.h:309
void fill_in_generic_residual_contribution_interface_boundary(Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned flag)
Add contribution to element's residual vector and Jacobian.
Definition: interface_elements.cc:224
double value(const unsigned &i) const
Definition: nodes.cc:2408
Definition: oomph_definitions.h:222
Specialisation of the interface boundary constraint to a point.
Definition: interface_elements.h:277
PointFluidInterfaceBoundingElement()
Constructor.
Definition: interface_elements.h:289
void fill_in_generic_residual_contribution_interface_boundary(Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned flag)
Add contribution to element's residual vector and Jacobian.
Definition: interface_elements.cc:86
Definition: interface_elements.h:709
double compute_surface_derivatives(const Shape &psi, const DShape &dpsids, const DenseMatrix< double > &interpolated_t, const Vector< double > &interpolated_x, DShape &surface_gradient, DShape &surface_divergence)
Fill in the specific surface derivative calculations.
Definition: interface_elements.cc:847
SurfaceDerivatives()
Definition: interface_elements.h:712
RealScalar s
Definition: level1_cplx_impl.h:130
void normal(const Vector< double > &x, Vector< double > &normal)
Definition: free_surface_rotation.cc:65
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
@ W
Definition: quadtree.h:63
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
list x
Definition: plotDoE.py:28
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2