Base class for elements at the boundary of free surfaces or interfaces, used typically to impose contact angle boundary conditions. The elemental dimensions are one less than those of the surface elements, or two less than those of the original bulk elements. Thus in two-dimensional and axi-symmetric problems, are points, but in three-dimensional problems, they are lines. These boundaries may be in contact with a solid surface, in which case the normal to that surface must be provided. More...
#include <interface_elements.h>
Public Member Functions | |
FluidInterfaceBoundingElement () | |
Constructor. More... | |
WallUnitNormalFctPt & | wall_unit_normal_fct_pt () |
Access function: Pointer to wall unit normal function. More... | |
WallUnitNormalFctPt | wall_unit_normal_fct_pt () const |
Access function: Pointer to wall unit normal function. Const version. More... | |
Vector< unsigned > & | u_index_interface_boundary () |
Access for nodal index at which the velocity components are stored. More... | |
void | set_contact_angle (double *const &angle_pt, const bool &strong=true) |
Set a pointer to the desired contact angle. Optional boolean (defaults to true) chooses strong imposition via hijacking (true) or weak imposition via addition to momentum equation (false). The default strong imposition is appropriate for static contact angle problems. More... | |
double *& | contact_angle_pt () |
Access function to the pointer specifying the prescribed contact angle. More... | |
double *& | ca_pt () |
Access function to the pointer specifying the capillary number. More... | |
double | ca () |
Return the value of the capillary number. More... | |
double & | contact_angle () |
Return value of the contact angle. More... | |
void | fill_in_contribution_to_residuals (Vector< double > &residuals) |
Calculate the residuals. More... | |
virtual void | fill_in_generic_residual_contribution_interface_boundary (Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned flag)=0 |
Calculate the generic residuals contribution. More... | |
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) |
Empty helper function to calculate the additional contributions arising from the node update strategy to the Jacobian within the integration loop. This will be overloaded by elements that require contributions to their underlying equations from boundary integrals. The shape functions, their derivatives w.r.t. to the local coordinates, the unit normal and integral weight are passed in so that they do not have to be recalculated. More... | |
void | output (std::ostream &outfile) |
Overload the output function. More... | |
void | output (std::ostream &outfile, const unsigned &n_plot) |
Output function. 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... | |
Protected Member Functions | |
virtual int | kinematic_local_eqn (const unsigned &n)=0 |
Function that is used to determine the local equation number of the kinematic equation associated with the nodes of the element This must be overloaded depending on the node update scheme. More... | |
void | wall_unit_normal (const Vector< double > &x, Vector< double > &normal) |
Function that returns the unit normal of the bounding wall directed out of the fluid. More... | |
void | update_in_external_fd (const unsigned &i) |
The geometric data of the parent element is included as external data and so a (bulk) node update must take place after the variation of any of this external data. More... | |
void | reset_in_external_fd (const unsigned &i) |
The only external data are these geometric data so We can omit the reset function (relying on the next update. More... | |
void | reset_after_external_fd () |
We require a final node update in the bulk element after all finite differencing. More... | |
Protected Attributes | |
unsigned | Contact_angle_flag |
Flag used to determine whether the contact angle is to be used (0 if not), and whether it will be applied weakly as a force term in the momentum equations (1) or by hijacking the kinematic condition (2). More... | |
Vector< unsigned > | U_index_interface_boundary |
Index at which the i-th velocity component is stored in the element's nodes. More... | |
Private Types | |
typedef void(* | WallUnitNormalFctPt) (const Vector< double > &x, Vector< double > &unit_normal) |
Function pointer to a wall unit normal function. Returns the unit normal on the wall, at the specified Eulerian coordinate. More... | |
Private Attributes | |
WallUnitNormalFctPt | Wall_unit_normal_fct_pt |
Pointer to a wall normal function that returns the wall unit normal as a function of position in global Eulerian coordinates. More... | |
double * | Contact_angle_pt |
Pointer to the desired value of the contact angle (if any) More... | |
double * | Ca_pt |
Pointer to the desired value of the capillary number. More... | |
Base class for elements at the boundary of free surfaces or interfaces, used typically to impose contact angle boundary conditions. The elemental dimensions are one less than those of the surface elements, or two less than those of the original bulk elements. Thus in two-dimensional and axi-symmetric problems, are points, but in three-dimensional problems, they are lines. These boundaries may be in contact with a solid surface, in which case the normal to that surface must be provided.
Definition at line 53 of file interface_elements.h.
|
private |
Function pointer to a wall unit normal function. Returns the unit normal on the wall, at the specified Eulerian coordinate.
Definition at line 58 of file interface_elements.h.
|
inline |
Constructor.
Definition at line 132 of file interface_elements.h.
|
inlinevirtual |
Empty helper function to calculate the additional contributions arising from the node update strategy to the Jacobian within the integration loop. This will be overloaded by elements that require contributions to their underlying equations from boundary integrals. The shape functions, their derivatives w.r.t. to the local coordinates, the unit normal and integral weight are passed in so that they do not have to be recalculated.
Definition at line 235 of file interface_elements.h.
Referenced by oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), and oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary().
|
inline |
Return the value of the capillary number.
Definition at line 178 of file interface_elements.h.
References Ca_pt.
Referenced by oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), and oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary().
|
inline |
Access function to the pointer specifying the capillary number.
Definition at line 172 of file interface_elements.h.
References Ca_pt.
|
inline |
Return value of the contact angle.
Definition at line 198 of file interface_elements.h.
References Contact_angle_pt.
Referenced by oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), and oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary().
|
inline |
Access function to the pointer specifying the prescribed contact angle.
Definition at line 166 of file interface_elements.h.
References Contact_angle_pt.
|
inline |
Calculate the residuals.
Definition at line 214 of file interface_elements.h.
References fill_in_generic_residual_contribution_interface_boundary().
|
pure virtual |
Calculate the generic residuals contribution.
Implemented in oomph::LineFluidInterfaceBoundingElement, and oomph::PointFluidInterfaceBoundingElement.
Referenced by fill_in_contribution_to_residuals().
|
protectedpure virtual |
Function that is used to determine the local equation number of the kinematic equation associated with the nodes of the element This must be overloaded depending on the node update scheme.
Implemented in oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >, oomph::SpineLineFluidInterfaceBoundingElement< ELEMENT >, and oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT >.
Referenced by oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), and oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary().
|
inline |
Overload the C-style output function.
Definition at line 259 of file interface_elements.h.
|
inline |
C-style Output function.
Definition at line 265 of file interface_elements.h.
|
inline |
Overload the output function.
Definition at line 247 of file interface_elements.h.
Referenced by oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT >::output(), oomph::SpineLineFluidInterfaceBoundingElement< ELEMENT >::output(), oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >::output(), and oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >::output().
|
inline |
Output function.
Definition at line 253 of file interface_elements.h.
|
inlineprotected |
We require a final node update in the bulk element after all finite differencing.
Definition at line 124 of file interface_elements.h.
|
inlineprotected |
The only external data are these geometric data so We can omit the reset function (relying on the next update.
Definition at line 120 of file interface_elements.h.
void oomph::FluidInterfaceBoundingElement::set_contact_angle | ( | double *const & | angle_pt, |
const bool & | strong = true |
||
) |
Set a pointer to the desired contact angle. Optional boolean (defaults to true) chooses strong imposition via hijacking (true) or weak imposition via addition to momentum equation (false). The default strong imposition is appropriate for static contact angle problems.
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
Set a pointer to the desired contact angle. Optional boolean (defaults to true) chooses strong imposition via hijacking (true) or weak imposition via addition to momentum equation (false). The default strong imposition is appropriate for static contact problems.
Definition at line 47 of file interface_elements.cc.
References Contact_angle_flag, and Contact_angle_pt.
|
inline |
Access for nodal index at which the velocity components are stored.
Definition at line 153 of file interface_elements.h.
References U_index_interface_boundary.
|
inlineprotected |
The geometric data of the parent element is included as external data and so a (bulk) node update must take place after the variation of any of this external data.
Definition at line 111 of file interface_elements.h.
|
inlineprotected |
Function that returns the unit normal of the bounding wall directed out of the fluid.
Definition at line 90 of file interface_elements.h.
References Wall_unit_normal_fct_pt.
Referenced by oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), and oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary().
|
inline |
Access function: Pointer to wall unit normal function.
Definition at line 141 of file interface_elements.h.
References Wall_unit_normal_fct_pt.
|
inline |
Access function: Pointer to wall unit normal function. Const version.
Definition at line 147 of file interface_elements.h.
References Wall_unit_normal_fct_pt.
|
private |
Pointer to the desired value of the capillary number.
Definition at line 70 of file interface_elements.h.
|
protected |
Flag used to determine whether the contact angle is to be used (0 if not), and whether it will be applied weakly as a force term in the momentum equations (1) or by hijacking the kinematic condition (2).
Definition at line 77 of file interface_elements.h.
Referenced by oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), and set_contact_angle().
|
private |
Pointer to the desired value of the contact angle (if any)
Definition at line 67 of file interface_elements.h.
Referenced by contact_angle(), contact_angle_pt(), and set_contact_angle().
|
protected |
Index at which the i-th velocity component is stored in the element's nodes.
Definition at line 81 of file interface_elements.h.
Referenced by oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), and u_index_interface_boundary().
|
private |
Pointer to a wall normal function that returns the wall unit normal as a function of position in global Eulerian coordinates.
Definition at line 64 of file interface_elements.h.
Referenced by wall_unit_normal(), and wall_unit_normal_fct_pt().