29 #ifndef OOMPH_SURFACTANT_TRANSPORT_ELEMENTS_HEADER 
   30 #define OOMPH_SURFACTANT_TRANSPORT_ELEMENTS_HEADER 
   35 #include <oomph-lib-config.h> 
   78     double sigma(
const Vector<double>& s);
 
   91       Vector<double>& residuals,
 
   92       DenseMatrix<double>& jacobian,
 
   95       const DShape& dpsifds,
 
   96       const DShape& dpsifdS,
 
   97       const DShape& dpsifdS_div,
 
   98       const Vector<double>& s,
 
   99       const Vector<double>& interpolated_x,
 
  100       const Vector<double>& interpolated_n,
 
  108       Vector<double>& residuals,
 
  109       DenseMatrix<double>& jacobian,
 
  110       DenseMatrix<double>& mass_matrix)
 
  113       this->fill_in_contribution_to_jacobian(residuals, jacobian);
 
  131       this->C_index = c_index;
 
  174       FiniteElement::output(outfile);
 
  177     void output(std::ostream& outfile, 
const unsigned& n_plot);
 
  182       FiniteElement::output(file_pt);
 
  186     void output(FILE* file_pt, 
const unsigned& n_plot)
 
  188       FiniteElement::output(file_pt, n_plot);
 
  215       const unsigned n_node = element_pt->nnode();
 
  216       Vector<unsigned> c_index(n_node);
 
  217       for (
unsigned n = 0; n < n_node; n++)
 
  219         c_index[n] = 
dynamic_cast<BoundaryNodeBase*
>(element_pt->node_pt(n))
 
  220                        ->index_of_first_value_assigned_by_face_element(
id);
 
  231   template<
class ELEMENT>
 
  234         SurfactantTransportInterfaceElement,
 
  240       FiniteElement* 
const& element_pt, 
const int& face_index)
 
  243                                          ELEMENT>(element_pt, face_index)
 
  250   template<
class ELEMENT>
 
  269   template<
class ELEMENT>
 
  272         SurfactantTransportInterfaceElement,
 
  273         AxisymmetricDerivatives,
 
  278       FiniteElement* 
const& element_pt, 
const int& face_index)
 
  281                                          ELEMENT>(element_pt, face_index)
 
  288   template<
class ELEMENT>
 
  306   template<
class ELEMENT>
 
  309         SurfactantTransportInterfaceElement,
 
  310         AxisymmetricDerivatives,
 
  315       FiniteElement* 
const& element_pt, 
const int& face_index)
 
  318                                            ELEMENT>(element_pt, face_index)
 
  325   template<
class ELEMENT>
 
  344   template<
class ELEMENT>
 
  347         SurfactantTransportInterfaceElement,
 
  353       FiniteElement* 
const& element_pt, 
const int& face_index)
 
  356                                          ELEMENT>(element_pt, face_index)
 
  363   template<
class ELEMENT>
 
Class that establishes the surface derivative functions for AxisymmetricInterfaceElements....
This policy class is used to associate specific bounding elements with specific FluidInterface elemen...
Specialise to the Axisymmetric geometry.
ElasticAxisymmetricSurfactantTransportInterfaceElement(FiniteElement *const &element_pt, const int &face_index)
Pseudo-elasticity version of the PointFluidInterfaceBoundingElement.
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
============================================================================= This is the policy clas...
void setup_equation_indices(SurfactantTransportInterfaceElement *const &element_pt, const unsigned &id)
unsigned nadditional_values(const unsigned &n)
This policy class is used to allow additional values to be added to the nodes from new surface equati...
Base class establishing common interfaces and functions for all Navier-Stokes-like fluid interface el...
Class that establishes the surface derivative functions for LineElements. These are defined in a sepa...
Specialise to the Axisymmetric geometry.
SpineAxisymmetricSurfactantTransportInterfaceElement(FiniteElement *const &element_pt, const int &face_index)
Spine version of the LineFluidInterfaceBoundingElement.
Specialise to the Line geometry.
SpineLineSurfactantTransportInterfaceElement(FiniteElement *const &element_pt, const int &face_index)
Spine version of the PointFluidInterfaceBoundingElement.
Specialise to surface geometry.
SpineSurfaceSurfactantTransportInterfaceElement(FiniteElement *const &element_pt, const int &face_index)
Generic Spine node update interface template class that can be combined with a given surface equation...
Class that establishes the surface derivative functions for SurfaceInterfaceElements (2D surfaces in ...
Generic surfactant transport equations implemented independently of the dimension and then specialise...
double sigma(const Vector< double > &s)
The surface tension function is linear in the concentration with constant of proportionality equal to...
double *& peclet_s_pt()
Access function for pointer to the surface Peclet number.
Vector< unsigned > C_index
Index at which the surfactant concentration is stored at the nodes.
void output(std::ostream &outfile)
Overload the output function.
void output(FILE *file_pt)
Overload the C-style output function.
virtual double dsigma_dC(const Vector< double > &s)
Return the derivative of sigma with respect to C For use in computing the Jacobian.
double * Peclet_Strouhal_S_pt
Pointer to the surface Peclect Strouhal number.
double *& beta_pt()
Access function for pointer to the Elasticity number.
double * Peclet_S_pt
Pointer to Surface Peclet number.
double integrate_c()
Compute the concentration intergated over the surface area.
double beta()
Return the Elasticity number.
double dcdt_surface(const unsigned &l) const
The time derivative of the surface concentration.
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Add the element's contribution to its residuals vector, jacobian matrix and mass matrix.
double *& peclet_strouhal_s_pt()
Access function for pointer to the surface Peclet x Strouhal number.
SurfactantTransportInterfaceElement()
Constructor that passes the bulk element and face index down to the underlying.
double interpolated_C(const Vector< double > &s)
Get the surfactant concentration.
void set_c_index(const Vector< unsigned > &c_index)
double * Beta_pt
Pointer to an Elasticity number.
double peclet_s()
Return the surface peclect number.
double peclet_strouhal_s()
Return the surface peclect strouhal number.
void output(FILE *file_pt, const unsigned &n_plot)
C-style Output function.
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)
Overload the Helper function to calculate the residuals and jacobian entries. This particular functio...
static double Default_Physical_Constant_Value
Default value of the physical constants.