Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Attributes | List of all members
oomph::FluidInterfaceBoundingElement Class Referenceabstract

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>

Inheritance diagram for oomph::FluidInterfaceBoundingElement:
oomph::LineFluidInterfaceBoundingElement oomph::PointFluidInterfaceBoundingElement oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT > oomph::SpineLineFluidInterfaceBoundingElement< ELEMENT > oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT > oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT > oomph::BoundingElementType< ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT > > oomph::BoundingElementType< SpineUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT > > oomph::BoundingElementType< SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, SurfaceDerivatives, ELEMENT > > oomph::BoundingElementType< ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT > > oomph::BoundingElementType< ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT > > oomph::BoundingElementType< ElasticUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT > > oomph::BoundingElementType< SpineUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT > > oomph::BoundingElementType< SpineUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT > > oomph::BoundingElementType< SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT > > oomph::BoundingElementType< SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, LineDerivatives, ELEMENT > >

Public Member Functions

 FluidInterfaceBoundingElement ()
 Constructor. More...
 
WallUnitNormalFctPtwall_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...
 

Detailed Description

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.

Member Typedef Documentation

◆ WallUnitNormalFctPt

typedef void(* oomph::FluidInterfaceBoundingElement::WallUnitNormalFctPt) (const Vector< double > &x, Vector< double > &unit_normal)
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.

Constructor & Destructor Documentation

◆ FluidInterfaceBoundingElement()

oomph::FluidInterfaceBoundingElement::FluidInterfaceBoundingElement ( )
inline

Constructor.

Definition at line 132 of file interface_elements.h.

Member Function Documentation

◆ add_additional_residual_contributions_interface_boundary()

virtual void oomph::FluidInterfaceBoundingElement::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 
)
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().

◆ ca()

double oomph::FluidInterfaceBoundingElement::ca ( )
inline

◆ ca_pt()

double*& oomph::FluidInterfaceBoundingElement::ca_pt ( )
inline

Access function to the pointer specifying the capillary number.

Definition at line 172 of file interface_elements.h.

References Ca_pt.

◆ contact_angle()

double& oomph::FluidInterfaceBoundingElement::contact_angle ( )
inline

◆ contact_angle_pt()

double*& oomph::FluidInterfaceBoundingElement::contact_angle_pt ( )
inline

Access function to the pointer specifying the prescribed contact angle.

Definition at line 166 of file interface_elements.h.

References Contact_angle_pt.

◆ fill_in_contribution_to_residuals()

void oomph::FluidInterfaceBoundingElement::fill_in_contribution_to_residuals ( Vector< double > &  residuals)
inline

Calculate the residuals.

Definition at line 214 of file interface_elements.h.

References fill_in_generic_residual_contribution_interface_boundary().

◆ fill_in_generic_residual_contribution_interface_boundary()

virtual void oomph::FluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian,
unsigned  flag 
)
pure virtual

Calculate the generic residuals contribution.

Implemented in oomph::LineFluidInterfaceBoundingElement, and oomph::PointFluidInterfaceBoundingElement.

Referenced by fill_in_contribution_to_residuals().

◆ kinematic_local_eqn()

virtual int oomph::FluidInterfaceBoundingElement::kinematic_local_eqn ( const unsigned &  n)
protectedpure virtual

◆ output() [1/4]

void oomph::FluidInterfaceBoundingElement::output ( FILE *  file_pt)
inline

Overload the C-style output function.

Definition at line 259 of file interface_elements.h.

◆ output() [2/4]

void oomph::FluidInterfaceBoundingElement::output ( FILE *  file_pt,
const unsigned &  n_plot 
)
inline

C-style Output function.

Definition at line 265 of file interface_elements.h.

◆ output() [3/4]

void oomph::FluidInterfaceBoundingElement::output ( std::ostream &  outfile)
inline

◆ output() [4/4]

void oomph::FluidInterfaceBoundingElement::output ( std::ostream &  outfile,
const unsigned &  n_plot 
)
inline

Output function.

Definition at line 253 of file interface_elements.h.

◆ reset_after_external_fd()

void oomph::FluidInterfaceBoundingElement::reset_after_external_fd ( )
inlineprotected

We require a final node update in the bulk element after all finite differencing.

Definition at line 124 of file interface_elements.h.

◆ reset_in_external_fd()

void oomph::FluidInterfaceBoundingElement::reset_in_external_fd ( const unsigned &  i)
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.

◆ set_contact_angle()

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.

◆ u_index_interface_boundary()

Vector<unsigned>& oomph::FluidInterfaceBoundingElement::u_index_interface_boundary ( )
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.

◆ update_in_external_fd()

void oomph::FluidInterfaceBoundingElement::update_in_external_fd ( const unsigned &  i)
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.

◆ wall_unit_normal()

void oomph::FluidInterfaceBoundingElement::wall_unit_normal ( const Vector< double > &  x,
Vector< double > &  normal 
)
inlineprotected

◆ wall_unit_normal_fct_pt() [1/2]

WallUnitNormalFctPt& oomph::FluidInterfaceBoundingElement::wall_unit_normal_fct_pt ( )
inline

Access function: Pointer to wall unit normal function.

Definition at line 141 of file interface_elements.h.

References Wall_unit_normal_fct_pt.

◆ wall_unit_normal_fct_pt() [2/2]

WallUnitNormalFctPt oomph::FluidInterfaceBoundingElement::wall_unit_normal_fct_pt ( ) const
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.

Member Data Documentation

◆ Ca_pt

double* oomph::FluidInterfaceBoundingElement::Ca_pt
private

Pointer to the desired value of the capillary number.

Definition at line 70 of file interface_elements.h.

Referenced by ca(), and ca_pt().

◆ Contact_angle_flag

unsigned oomph::FluidInterfaceBoundingElement::Contact_angle_flag
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().

◆ Contact_angle_pt

double* oomph::FluidInterfaceBoundingElement::Contact_angle_pt
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().

◆ U_index_interface_boundary

Vector<unsigned> oomph::FluidInterfaceBoundingElement::U_index_interface_boundary
protected

◆ Wall_unit_normal_fct_pt

WallUnitNormalFctPt oomph::FluidInterfaceBoundingElement::Wall_unit_normal_fct_pt
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().


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