#include <specific_node_update_interface_elements.h>
Public Member Functions  
BoundingElementType ()  
Public Member Functions inherited from oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT >  
SpinePointFluidInterfaceBoundingElement ()  
Constructor. 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 Cstyle output function. More...  
void  output (FILE *file_pt, const unsigned &n_plot) 
Cstyle Output function. More...  
void  fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) 
Calculate the elemental residual vector and the Jacobian. More...  
int  kinematic_local_eqn (const unsigned &n) 
Return local equation number associated with the kinematic constraint for local node n. More...  
Public Member Functions inherited from oomph::Hijacked< SpineElement< FaceGeometry< FaceGeometry< ELEMENT > > > >  
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)  
Constructor used for hijacking face elements with specification of ID of additional variables. More...  
Data *  hijack_internal_value (const unsigned &n, const unsigned &i) 
Hijack the ith value stored at internal data n. Return a custommade (copied) data object that contains only the hijacked value. This can be used as the input to other elements. Note that the calling program assumes responsibility for this data object and must clean it up. More...  
Data *  hijack_external_value (const unsigned &n, const unsigned &i) 
Hijack the ith value stored at external data n. Return a custommade (copied) data object that contains only the hijacked value. Note that the calling program assumes responsibility for this data object and must clean it up. More...  
Data *  hijack_nodal_value (const unsigned &n, const unsigned &i) 
Hijack the ith value stored at node n. Return a custommade (copied) data object that contains only the hijacked value. Once again, the calling program must clean up the allocated Data object. More...  
Data *  hijack_nodal_position_value (const unsigned &n, const unsigned &i) 
Hijack the ith positional value stored at node n. Return a custommade (copied) data object that contains only the hijacked value. Again, responsibility for the memory allocated lies with the calling function. More...  
Data *  hijack_nodal_spine_value (const unsigned &n, const unsigned &i) 
Hijack the ith value stored at the spine that affects local node n. Return a custommade (copied) data object that contains only the hijacked value. Deletion must be handled at the higher level. More...  
void  assign_local_eqn_numbers (const bool &store_local_dof_pt) 
Set up the local equation numbers for the underlying element, then set up the local arrays to hold the hijacked variables. If the boolean argument is true then pointers to the associated degrees of freedom are stored in the array Dof_pt. More...  
void  get_residuals (Vector< double > &residuals) 
Get the residuals from the underlying element, but then wipe the entries in the residual vector that correspond to hijacked values – they will be computed by other elements. More...  
void  get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) 
Get the residuals and Jacobian matrix from the underlying element, but then wipe the entries in the residual vector and the rows in the Jacobian matrix that correspond to hijacked values – they will be computed by other elements. More...  
Public Member Functions inherited from oomph::SpineElement< FaceGeometry< FaceGeometry< ELEMENT > > >  
SpineElement ()  
Constructor, call the constructor of the base element. More...  
SpineElement (FiniteElement *const &element_pt, const int &face_index)  
Constructor used for spine face elements. More...  
~SpineElement ()  
Destructor, clean up the storage allocated to the local equation numbers. More...  
int  spine_local_eqn (const unsigned &n) 
Return the local equation number corresponding to the height of the spine at the nth node. More...  
Public Member Functions inherited from oomph::ElementWithSpecificMovingNodes< FaceGeometry< FaceGeometry< ELEMENT > >, SpineNode >  
void  describe_local_dofs (std::ostream &out, const std::string ¤t_string) const 
Function to describe the local dofs of the element. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...) More...  
void  describe_local_dofs (std::ostream &out, std::string &curr_str) 
Unique final overrider for describe_dofs. More...  
ElementWithSpecificMovingNodes ()  
Constructor, call the constructor of the base element. More...  
ElementWithSpecificMovingNodes (FiniteElement *const &element_pt, const int &face_index)  
Constructor used for face elements. More...  
~ElementWithSpecificMovingNodes ()  
Empty Destructor,. More...  
Node *  construct_node (const unsigned &n) 
Overload the node assignment routine to assign nodes of the appropriate type. More...  
Node *  construct_node (const unsigned &n, TimeStepper *const &time_stepper_pt) 
Overloaded node allocation for unsteady problems. More...  
Node *  construct_boundary_node (const unsigned &n) 
Overload the node assignment routine to assign boundary nodes. More...  
Node *  construct_boundary_node (const unsigned &n, TimeStepper *const &time_stepper_pt) 
Overloaded boundary node allocation for unsteady problems. More...  
void  assign_all_generic_local_eqn_numbers (const bool &store_local_dof_pt) 
Assign local equation numbers for the underlying element, then deal with the additional geometric dofs. More...  
void  get_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix) 
Compute the element's residuals vector and jacobian matrix. More...  
Public Member Functions inherited from oomph::ElementWithMovingNodes  
ElementWithMovingNodes ()  
Constructor. More...  
ElementWithMovingNodes (const ElementWithMovingNodes &)  
Broken copy constructor. More...  
void  operator= (const ElementWithMovingNodes &) 
Broken assignment operator. More...  
virtual  ~ElementWithMovingNodes () 
Virtual destructor (clean up and allocated memory) More...  
unsigned  ngeom_dof () const 
Number of geometric dofs. More...  
int  geometric_data_local_eqn (const unsigned &n, const unsigned &i) 
Return the local equation number corresponding to the ith value at the nth geometric data object. More...  
void  assemble_set_of_all_geometric_data (std::set< Data * > &unique_geom_data_pt) 
Return a set of all geometric data associated with the element. More...  
void  identify_geometric_data (std::set< Data * > &geometric_data_pt) 
Specify Data that affects the geometry of the element by adding the element's geometric Data to the set that's passed in. (This functionality is required in FSI problems; set is used to avoid double counting). More...  
bool  are_dresidual_dnodal_coordinates_always_evaluated_by_fd () const 
Return whether shape derivatives are evaluated by fd. More...  
void  enable_always_evaluate_dresidual_dnodal_coordinates_by_fd () 
Insist that shape derivatives are always evaluated by fd (using FiniteElement::get_dresidual_dnodal_coordinates()) More...  
void  disable_always_evaluate_dresidual_dnodal_coordinates_by_fd () 
Insist that shape derivatives are always evaluated using the overloaded version of this function that may have been implemented in a derived class. (The default behaviour will still be finite differences unless the function has actually been overloaded. More...  
void  evaluate_shape_derivs_by_direct_fd () 
Evaluate shape derivatives by direct finite differencing. More...  
void  evaluate_shape_derivs_by_chain_rule (const bool &i_know_what_i_am_doing=false) 
Evaluate shape derivatives by chain rule. Currently disabled by default because it's broken; can reenable use by setting optional boolean to true. More...  
void  evaluate_shape_derivs_by_fastest_method (const bool &i_know_what_i_am_doing=false) 
Evaluate shape derivatives by (anticipated) fastest method. Currently disabled by default because it's broken; can reenable use by setting optional boolean to true. More...  
int &  method_for_shape_derivs () 
Access to method (enumerated flag) for determination of shape derivs. More...  
void  enable_bypass_fill_in_jacobian_from_geometric_data () 
Bypass the call to fill_in_jacobian_from_geometric_data. More...  
void  disable_bypass_fill_in_jacobian_from_geometric_data () 
Do not bypass the call to fill_in_jacobian_from_geometric_data. More...  
bool  is_fill_in_jacobian_from_geometric_data_bypassed () const 
Test whether the call to fill_in_jacobian_from_geometric_data is bypassed. More...  
unsigned  ngeom_data () const 
Return the number of geometric data upon which the shape of the element depends. More...  
Public Member Functions inherited from oomph::FiniteElement  
void  set_dimension (const unsigned &dim) 
Set the dimension of the element and initially set the dimension of the nodes to be the same as the dimension of the element. More...  
void  set_nodal_dimension (const unsigned &nodal_dim) 
Set the dimension of the nodes in the element. This will typically only be required when constructing FaceElements or in beam and shell type elements where a lower dimensional surface is embedded in a higher dimensional space. More...  
void  set_nnodal_position_type (const unsigned &nposition_type) 
Set the number of types required to interpolate the coordinate. More...  
void  set_n_node (const unsigned &n) 
Set the number of nodes in the element to n, by resizing the storage for pointers to the Node objects. More...  
int  nodal_local_eqn (const unsigned &n, const unsigned &i) const 
Return the local equation number corresponding to the ith value at the nth local node. More...  
double  dJ_eulerian_at_knot (const unsigned &ipt, Shape &psi, DenseMatrix< double > &djacobian_dX) const 
Compute the geometric shape functions (psi) at integration point ipt. Return the determinant of the jacobian of the mapping (detJ). Additionally calculate the derivatives of "detJ" w.r.t. the nodal coordinates. More...  
FiniteElement ()  
Constructor. More...  
virtual  ~FiniteElement () 
The destructor cleans up the static memory allocated for shape function storage. Internal and external data get wiped by the GeneralisedElement destructor; nodes get killed in mesh destructor. More...  
FiniteElement (const FiniteElement &)  
Broken copy constructor. More...  
virtual bool  local_coord_is_valid (const Vector< double > &s) 
Broken assignment operator. More...  
virtual bool  local_coord_is_valid (Vector< double > &s, const double &rounding_tolerance) 
Check whether the local coordinate are valid or not, allowing for a rounding tolerance. If the point is outside the element by less than the tolerance, we move it back into the element. More...  
virtual void  local_coordinate_of_node (const unsigned &j, Vector< double > &s) const 
Get local coordinates of node j in the element; vector sets its own size (broken virtual) More...  
virtual void  local_fraction_of_node (const unsigned &j, Vector< double > &s_fraction) 
Get the local fraction of the node j in the element A dumb, but correct default implementation is provided. More...  
virtual double  local_one_d_fraction_of_node (const unsigned &n1d, const unsigned &i) 
Get the local fraction of any node in the nth position in a one dimensional expansion along the ith local coordinate. More...  
virtual void  set_macro_elem_pt (MacroElement *macro_elem_pt) 
Set pointer to macro element – can be overloaded in derived elements to perform additional tasks. More...  
MacroElement *  macro_elem_pt () 
Access function to pointer to macro element. More...  
void  get_x (const Vector< double > &s, Vector< double > &x) const 
Global coordinates as function of local coordinates. Either via FE representation or via macroelement (if Macro_elem_pt!=0) More...  
void  get_x (const unsigned &t, const Vector< double > &s, Vector< double > &x) 
Global coordinates as function of local coordinates at previous time "level" t (t=0: present; t>0: previous). Either via FE representation of QElement or via macroelement (if Macro_elem_pt!=0). More...  
virtual void  get_x_from_macro_element (const Vector< double > &s, Vector< double > &x) const 
Global coordinates as function of local coordinates using macro element representation. (Broken virtual — this must be overloaded in specific geometric element classes) More...  
virtual void  get_x_from_macro_element (const unsigned &t, const Vector< double > &s, Vector< double > &x) 
Global coordinates as function of local coordinates at previous time "level" t (t=0: present; t>0: previous). using macro element representation (Broken virtual – overload in specific geometric element class if you want to use this functionality.) More...  
virtual void  set_integration_scheme (Integral *const &integral_pt) 
Set the spatial integration scheme. More...  
Integral *const &  integral_pt () const 
Return the pointer to the integration scheme (const version) More...  
virtual void  shape (const Vector< double > &s, Shape &psi) const =0 
Calculate the geometric shape functions at local coordinate s. This function must be overloaded for each specific geometric element. More...  
virtual void  shape_at_knot (const unsigned &ipt, Shape &psi) const 
Return the geometric shape function at the iptth integration point. More...  
virtual void  dshape_local (const Vector< double > &s, Shape &psi, DShape &dpsids) const 
Function to compute the geometric shape functions and derivatives w.r.t. local coordinates at local coordinate s. This function must be overloaded for each specific geometric element. (Broken virtual function — specifies the interface) More...  
virtual void  dshape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids) const 
Return the geometric shape function and its derivative w.r.t. the local coordinates at the iptth integration point. More...  
virtual void  d2shape_local (const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const 
Function to compute the geometric shape functions and also first and second derivatives w.r.t. local coordinates at local coordinate s. This function must be overloaded for each specific geometric element (if required). (Broken virtual function — specifies the interface). Numbering: 1D: d2psids(i,0) = 2D: d2psids(i,0) = d2psids(i,1) = d2psids(i,2) = 3D: d2psids(i,0) = d2psids(i,1) = d2psids(i,2) = d2psids(i,3) = d2psids(i,4) = d2psids(i,5) = . More...  
virtual void  d2shape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const 
Return the geometric shape function and its first and second derivatives w.r.t. the local coordinates at the iptth integration point. Numbering: 1D: d2psids(i,0) = 2D: d2psids(i,0) = d2psids(i,1) = d2psids(i,2) = 3D: d2psids(i,0) = d2psids(i,1) = d2psids(i,2) = d2psids(i,3) = d2psids(i,4) = d2psids(i,5) = . More...  
void  check_jacobian (const double &jacobian) const 
Helper function used to check for singular or negative Jacobians in the transform from local to global or Lagrangian coordinates. More...  
double  dshape_eulerian (const Vector< double > &s, Shape &psi, DShape &dpsidx) const 
Compute the geometric shape functions and also first derivatives w.r.t. global coordinates at local coordinate s; Returns Jacobian of mapping from global to local coordinates. More...  
virtual double  dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx) const 
Return the geometric shape functions and also first derivatives w.r.t. global coordinates at the iptth integration point. More...  
virtual double  dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsi, DenseMatrix< double > &djacobian_dX, RankFourTensor< double > &d_dpsidx_dX) const 
Compute the geometric shape functions (psi) and first derivatives w.r.t. global coordinates (dpsidx) at the iptth integration point. Return the determinant of the jacobian of the mapping (detJ). Additionally calculate the derivatives of both "detJ" and "dpsidx" w.r.t. the nodal coordinates. More...  
double  d2shape_eulerian (const Vector< double > &s, Shape &psi, DShape &dpsidx, DShape &d2psidx) const 
Compute the geometric shape functions and also first and second derivatives w.r.t. global coordinates at local coordinate s; Returns Jacobian of mapping from global to local coordinates. Numbering: 1D: d2psidx(i,0) = 2D: d2psidx(i,0) = d2psidx(i,1) = d2psidx(i,2) = 3D: d2psidx(i,0) = d2psidx(i,1) = d2psidx(i,2) = d2psidx(i,3) = d2psidx(i,4) = d2psidx(i,5) = . More...  
virtual double  d2shape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx, DShape &d2psidx) const 
Return the geometric shape functions and also first and second derivatives w.r.t. global coordinates at iptth integration point. Numbering: 1D: d2psidx(i,0) = 2D: d2psidx(i,0) = d2psidx(i,1) = d2psidx(i,2) = 3D: d2psidx(i,0) = d2psidx(i,1) = d2psidx(i,2) = d2psidx(i,3) = d2psidx(i,4) = d2psidx(i,5) = . More...  
virtual void  assign_nodal_local_eqn_numbers (const bool &store_local_dof_pt) 
Assign the local equation numbers for Data stored at the nodes Virtual so that it can be overloaded by RefineableFiniteElements. If the boolean is true then the pointers to the degrees of freedom associated with each equation number are stored in Dof_pt. More...  
virtual void  describe_nodal_local_dofs (std::ostream &out, const std::string ¤t_string) const 
Function to describe the local dofs of the element[s]. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...) More...  
Node *&  node_pt (const unsigned &n) 
Return a pointer to the local node n. More...  
Node *const &  node_pt (const unsigned &n) const 
Return a pointer to the local node n (const version) More...  
unsigned  nnode () const 
Return the number of nodes. More...  
virtual unsigned  nnode_1d () const 
Return the number of nodes along one edge of the element Default is to return zero — must be overloaded by geometric elements. More...  
double  raw_nodal_position (const unsigned &n, const unsigned &i) const 
Return the ith coordinate at local node n. Do not use the hanging node representation. NOTE: Moved to cc file because of a possible compiler bug in gcc (yes, really!). The move to the cc file avoids inlining which appears to cause problems (only) when compiled with gcc and O3; offensive "illegal read" is in optimisedout section of code and data that is allegedly illegal is readily readable (by other means) just before this function is called so I can't really see how we could possibly be responsible for this... More...  
double  raw_nodal_position (const unsigned &t, const unsigned &n, const unsigned &i) const 
Return the ith coordinate at local node n, at time level t (t=0: present; t>0: previous time level). Do not use the hanging node representation. More...  
double  raw_dnodal_position_dt (const unsigned &n, const unsigned &i) const 
Return the ith component of nodal velocity: dx/dt at local node n. Do not use the hanging node representation. More...  
double  raw_dnodal_position_dt (const unsigned &n, const unsigned &j, const unsigned &i) const 
Return the ith component of jth derivative of nodal position: d^jx/dt^j at node n. Do not use the hanging node representation. More...  
double  raw_nodal_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const 
Return the value of the kth type of the ith positional variable at the local node n. Do not use the hanging node representation. More...  
double  raw_nodal_position_gen (const unsigned &t, const unsigned &n, const unsigned &k, const unsigned &i) const 
Return the generalised nodal position (type k, ith variable) at previous timesteps at local node n. Do not use the hanging node representation. More...  
double  raw_dnodal_position_gen_dt (const unsigned &n, const unsigned &k, const unsigned &i) const 
ith component of time derivative (velocity) of the generalised position, dx(k,i)/dt at local node n. `Type': k; Coordinate direction: i. Do not use the hanging node representation. More...  
double  raw_dnodal_position_gen_dt (const unsigned &j, const unsigned &n, const unsigned &k, const unsigned &i) const 
ith component of jth time derivative of the generalised position, dx(k,i)/dt at local node n. `Type': k; Coordinate direction: i. Do not use the hanging node representation. More...  
double  nodal_position (const unsigned &n, const unsigned &i) const 
Return the ith coordinate at local node n. If the node is hanging, the appropriate interpolation is handled by the position function in the Node class. More...  
double  nodal_position (const unsigned &t, const unsigned &n, const unsigned &i) const 
Return the ith coordinate at local node n, at time level t (t=0: present; t>0: previous time level) Returns suitably interpolated version for hanging nodes. More...  
double  dnodal_position_dt (const unsigned &n, const unsigned &i) const 
Return the ith component of nodal velocity: dx/dt at local node n. More...  
double  dnodal_position_dt (const unsigned &n, const unsigned &j, const unsigned &i) const 
Return the ith component of jth derivative of nodal position: d^jx/dt^j at node n. More...  
double  nodal_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const 
Return the value of the kth type of the ith positional variable at the local node n. More...  
double  nodal_position_gen (const unsigned &t, const unsigned &n, const unsigned &k, const unsigned &i) const 
Return the generalised nodal position (type k, ith variable) at previous timesteps at local node n. More...  
double  dnodal_position_gen_dt (const unsigned &n, const unsigned &k, const unsigned &i) const 
ith component of time derivative (velocity) of the generalised position, dx(k,i)/dt at local node n. `Type': k; Coordinate direction: i. More...  
double  dnodal_position_gen_dt (const unsigned &j, const unsigned &n, const unsigned &k, const unsigned &i) const 
ith component of jth time derivative of the generalised position, dx(k,i)/dt at local node n. `Type': k; Coordinate direction: i. More...  
virtual void  get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates) 
Compute derivatives of elemental residual vector with respect to nodal coordinates. Default implementation by FD can be overwritten for specific elements. dresidual_dnodal_coordinates(l,i,j) = d res(l) / dX_{ij}. More...  
virtual void  disable_ALE () 
This is an empty function that establishes a uniform interface for all (derived) elements that involve timederivatives. Such elements are/should be implemented in ALE form to allow mesh motions. The additional expense associated with the computation of the mesh velocities is, of course, superfluous if the elements are used in problems in which the mesh is stationary. This function should therefore be overloaded in all derived elements that are formulated in ALE form to suppress the computation of the mesh velocities. The user disables the ALE functionality at his/her own risk! If the mesh does move after all, then the results will be wrong. Here we simply issue a warning message stating that the empty function has been called. More...  
virtual void  enable_ALE () 
(Re)enable ALE, i.e. take possible mesh motion into account when evaluating the timederivative. This function is empty and simply establishes a common interface for all derived elements that are formulated in ALE form. More...  
virtual unsigned  required_nvalue (const unsigned &n) const 
Number of values that must be stored at local node n by the element. The default is 0, until overridden by a particular element. For example, a Poisson equation requires only one value to be stored at each node; 2D Navier–Stokes equations require two values (velocity components) to be stored at each Node (provided that the pressure interpolation is discontinuous). More...  
unsigned  nnodal_position_type () const 
Return the number of coordinate types that the element requires to interpolate the geometry between the nodes. For Lagrange elements it is 1. More...  
bool  has_hanging_nodes () const 
Return boolean to indicate if any of the element's nodes are geometrically hanging. More...  
unsigned  nodal_dimension () const 
Return the required Eulerian dimension of the nodes in this element. More...  
virtual unsigned  nvertex_node () const 
virtual Node *  vertex_node_pt (const unsigned &j) const 
Pointer to the jth vertex node in the element. Broken virtual function in "pure" finite elements. More...  
int  get_node_number (Node *const &node_pt) const 
Return the number of the node *node_pt if this node is in the element, else return 1;. More...  
virtual Node *  get_node_at_local_coordinate (const Vector< double > &s) const 
If there is a node at this local coordinate, return the pointer to the node. More...  
double  raw_nodal_value (const unsigned &n, const unsigned &i) const 
Return the ith value stored at local node n but do NOT take hanging nodes into account. More...  
double  raw_nodal_value (const unsigned &t, const unsigned &n, const unsigned &i) const 
Return the ith value stored at local node n, at time level t (t=0: present; t>0 previous timesteps), but do NOT take hanging nodes into account. More...  
double  nodal_value (const unsigned &n, const unsigned &i) const 
Return the ith value stored at local node n. Produces suitably interpolated values for hanging nodes. More...  
double  nodal_value (const unsigned &t, const unsigned &n, const unsigned &i) const 
Return the ith value stored at local node n, at time level t (t=0: present; t>0 previous timesteps). Produces suitably interpolated values for hanging nodes. More...  
unsigned  dim () const 
Return the spatial dimension of the element, i.e. the number of local coordinates required to parametrise its geometry. More...  
virtual ElementGeometry::ElementGeometry  element_geometry () const 
Return the geometry type of the element (either Q or T usually). More...  
unsigned  ngeom_data () const 
A standard FiniteElement is fixed, so there are no geometric data when viewed in its GeomObject incarnation. More...  
Data *  geom_data_pt (const unsigned &j) 
A standard FiniteElement is fixed, so there are no geometric data when viewed in its GeomObject incarnation. More...  
void  position (const Vector< double > &zeta, Vector< double > &r) const 
Return the parametrised position of the FiniteElement in its incarnation as a GeomObject, r(zeta). The position is given by the Eulerian coordinate and the intrinsic coordinate (zeta) is the local coordinate of the element (s). More...  
void  position (const unsigned &t, const Vector< double > &zeta, Vector< double > &r) const 
Return the parametrised position of the FiniteElement in its GeomObject incarnation: r(zeta). The position is given by the Eulerian coordinate and the intrinsic coordinate (zeta) is the local coordinate of the element (s) This version of the function returns the position as a function of time t=0: current time; t>0: previous timestep. Works for t=0 but needs to be overloaded if genuine timedependence is required. More...  
void  dposition_dt (const Vector< double > &zeta, const unsigned &t, Vector< double > &drdt) 
Return the tth time derivative of the parametrised position of the FiniteElement in its GeomObject incarnation: . Call the tth time derivative of the FEinterpolated Eulerian coordinate. More...  
void  interpolated_zeta (const Vector< double > &s, Vector< double > &zeta) const 
Calculate the interpolated value of zeta, the intrinsic coordinate of the element when viewed as a compound geometric object within a Mesh as a function of the local coordinate of the element, s. The default assumption is the zeta is interpolated using the shape functions of the element with the values given by zeta_nodal(). More...  
void  locate_zeta (const Vector< double > &zeta, GeomObject *&geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false) 
For a given value of zeta, the "global" intrinsic coordinate of a mesh of FiniteElements represented as a compound geometric object, find the local coordinate in this element that corresponds to the requested value of zeta. If zeta cannot be located in this element, geom_object_pt is set to NULL. If zeta is located in this element, we return its "this" pointer. By default don't use any value passed in to the local coordinate s as the initial guess in the Newton method. More...  
virtual void  node_update () 
Update the positions of all nodes in the element using each node update function. The default implementation may be overloaded so that more efficient versions can be written. More...  
virtual void  identify_field_data_for_interactions (std::set< std::pair< Data *, unsigned > > &paired_field_data) 
The purpose of this function is to identify all possible Data that can affect the fields interpolated by the FiniteElement. The information will typically be used in interaction problems in which the FiniteElement provides a forcing term for an ElementWithExternalElement. The Data must be provided as paired_load data containing. More...  
virtual double  s_min () const 
Min value of local coordinate. More...  
virtual double  s_max () const 
Max. value of local coordinate. More...  
double  size () const 
virtual double  compute_physical_size () const 
Broken virtual function to compute the actual size (taking into account factors such as 2pi or radii the integrand) – such function can only be implemented on an equationbyequation basis. More...  
virtual void  point_output_data (const Vector< double > &s, Vector< double > &data) 
Virtual function to write the double precision numbers that appear in a single line of output into the data vector. Empty virtual, can be overloaded for specific elements; used e.g. by LineVisualiser. More...  
void  point_output (std::ostream &outfile, const Vector< double > &s) 
Output solution (as defined by point_output_data()) at local cordinates s. More...  
virtual unsigned  nplot_points_paraview (const unsigned &nplot) const 
Return the number of actual plot points for paraview plot with parameter nplot. Broken virtual; can be overloaded in specific elements. More...  
virtual unsigned  nsub_elements_paraview (const unsigned &nplot) const 
Return the number of local subelements for paraview plot with parameter nplot. Broken virtual; can be overloaded in specific elements. More...  
void  output_paraview (std::ofstream &file_out, const unsigned &nplot) const 
Paraview output – this outputs the coordinates at the plot points (for parameter nplot) to specified output file. More...  
virtual void  write_paraview_output_offset_information (std::ofstream &file_out, const unsigned &nplot, unsigned &counter) const 
Fill in the offset information for paraview plot. Broken virtual. Needs to be implemented for each new geometric element type; see http://www.vtk.org/VTK/img/fileformats.pdf. More...  
virtual void  write_paraview_type (std::ofstream &file_out, const unsigned &nplot) const 
Return the paraview element type. Broken virtual. Needs to be implemented for each new geometric element type; see http://www.vtk.org/VTK/img/fileformats.pdf. More...  
virtual void  write_paraview_offsets (std::ofstream &file_out, const unsigned &nplot, unsigned &offset_sum) const 
Return the offsets for the paraview subelements. Broken virtual. Needs to be implemented for each new geometric element type; see http://www.vtk.org/VTK/img/fileformats.pdf. More...  
virtual unsigned  nscalar_paraview () const 
Number of scalars/fields output by this element. Broken virtual. Needs to be implemented for each new specific element type. More...  
virtual void  scalar_value_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const 
Write values of the ith scalar field at the plot points. Broken virtual. Needs to be implemented for each new specific element type. More...  
virtual void  scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const 
Write values of the ith scalar field at the plot points. Broken virtual. Needs to be implemented for each new specific element type. More...  
virtual std::string  scalar_name_paraview (const unsigned &i) const 
Name of the ith scalar field. Default implementation returns V1 for the first one, V2 for the second etc. Can (should!) be overloaded with more meaningful names in specific elements. More...  
virtual void  output (const unsigned &t, std::ostream &outfile, const unsigned &n_plot) const 
Output the element data at time step t. This is const because it is newly added and so can be done easily. Really all the output(...) functions should be const! More...  
virtual void  output_fct (std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) 
Output an exact solution over the element. More...  
virtual void  output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) 
Output a timedependent exact solution over the element. More...  
virtual void  output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, const SolutionFunctorBase &exact_soln) const 
Output a timedependent exact solution over the element. More...  
virtual void  get_s_plot (const unsigned &i, const unsigned &nplot, Vector< double > &s) const 
Get cector of local coordinates of plot point i (when plotting nplot points in each "coordinate direction"). More...  
virtual std::string  tecplot_zone_string (const unsigned &nplot) const 
Return string for tecplot zone header (when plotting nplot points in each "coordinate direction") More...  
virtual void  write_tecplot_zone_footer (std::ostream &outfile, const unsigned &nplot) const 
Add tecplot zone "footer" to output stream (when plotting nplot points in each "coordinate direction"). Empty by default – can be used, e.g., to add FE connectivity lists to elements that need it. More...  
virtual void  write_tecplot_zone_footer (FILE *file_pt, const unsigned &nplot) const 
Add tecplot zone "footer" to Cstyle output. (when plotting nplot points in each "coordinate direction"). Empty by default – can be used, e.g., to add FE connectivity lists to elements that need it. More...  
virtual unsigned  nplot_points (const unsigned &nplot) const 
Return total number of plot points (when plotting nplot points in each "coordinate direction") More...  
virtual void  compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm) 
Plot the error when compared against a given exact solution . Also calculates the norm of the error and that of the exact solution. More...  
virtual void  compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm) 
Plot the error when compared against a given timedependent exact solution . Also calculates the norm of the error and that of the exact solution. More...  
virtual void  compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm) 
Plot the error when compared against a given exact solution . Also calculates the norm of the error and that of the exact solution. Version with vectors of norms and errors so that different variables' norms and errors can be returned individually. More...  
virtual void  compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm) 
Plot the error when compared against a given timedependent exact solution . Also calculates the norm of the error and that of the exact solution. Version with vectors of norms and errors so that different variables' norms and errors can be returned individually. More...  
virtual void  compute_abs_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error) 
Plot the error when compared against a given exact solution . Also calculates the maximum absolute error. More...  
void  integrate_fct (FiniteElement::SteadyExactSolutionFctPt integrand_fct_pt, Vector< double > &integral) 
Evaluate integral of a Vectorvalued function over the element. More...  
void  integrate_fct (FiniteElement::UnsteadyExactSolutionFctPt integrand_fct_pt, const double &time, Vector< double > &integral) 
Evaluate integral of a Vectorvalued, timedependent function over the element. More...  
virtual void  build_face_element (const int &face_index, FaceElement *face_element_pt) 
Function for building a lower dimensional FaceElement on the specified face of the FiniteElement. The arguments are the index of the face, an integer whose value depends on the particular element type, and a pointer to the FaceElement. More...  
virtual unsigned  self_test () 
Selftest: Check inversion of element & do selftest for GeneralisedElement. Return 0 if OK. More...  
virtual unsigned  get_bulk_node_number (const int &face_index, const unsigned &i) const 
virtual int  face_outer_unit_normal_sign (const int &face_index) const 
Get the sign of the outer unit normal on the face given by face_index. More...  
virtual unsigned  nnode_on_face () const 
void  face_node_number_error_check (const unsigned &i) const 
Range check for face node numbers. More...  
virtual CoordinateMappingFctPt  face_to_bulk_coordinate_fct_pt (const int &face_index) const 
Get a pointer to the function mapping face coordinates to bulk coordinates. More...  
virtual BulkCoordinateDerivativesFctPt  bulk_coordinate_derivatives_fct_pt (const int &face_index) const 
Public Member Functions inherited from oomph::GeneralisedElement  
GeneralisedElement()  GeneralisedElement (const GeneralisedElement &) 
Constructor: Initialise all pointers and all values to zero. More...  
void  operator= (const GeneralisedElement &) 
Broken assignment operator. More...  
Data *&  internal_data_pt (const unsigned &i) 
Return a pointer to ith internal data object. More...  
Data *const &  internal_data_pt (const unsigned &i) const 
Return a pointer to ith internal data object (const version) More...  
Data *&  external_data_pt (const unsigned &i) 
Return a pointer to ith external data object. More...  
Data *const &  external_data_pt (const unsigned &i) const 
Return a pointer to ith external data object (const version) More...  
unsigned long  eqn_number (const unsigned &ieqn_local) const 
Return the global equation number corresponding to the ieqn_localth local equation number. More...  
int  local_eqn_number (const unsigned long &ieqn_global) const 
Return the local equation number corresponding to the ieqn_globalth global equation number. Returns minus one (1) if there is no local degree of freedom corresponding to the chosen global equation number. More...  
unsigned  add_external_data (Data *const &data_pt, const bool &fd=true) 
bool  external_data_fd (const unsigned &i) const 
Return the status of the boolean flag indicating whether the external data is included in the finite difference loop. More...  
void  exclude_external_data_fd (const unsigned &i) 
Set the boolean flag to exclude the external datum from the the finite difference loop when computing the jacobian matrix. More...  
void  include_external_data_fd (const unsigned &i) 
Set the boolean flag to include the external datum in the the finite difference loop when computing the jacobian matrix. More...  
void  flush_external_data () 
Flush all external data. More...  
void  flush_external_data (Data *const &data_pt) 
Flush the object addressed by data_pt from the external data array. More...  
unsigned  ninternal_data () const 
Return the number of internal data objects. More...  
unsigned  nexternal_data () const 
Return the number of external data objects. More...  
unsigned  ndof () const 
Return the number of equations/dofs in the element. More...  
void  dof_vector (const unsigned &t, Vector< double > &dof) 
Return the vector of dof values at time level t. More...  
void  dof_pt_vector (Vector< double * > &dof_pt) 
Return the vector of pointers to dof values. More...  
void  set_internal_data_time_stepper (const unsigned &i, TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) 
Set the timestepper associated with the ith internal data object. More...  
void  assign_internal_eqn_numbers (unsigned long &global_number, Vector< double * > &Dof_pt) 
Assign the global equation numbers to the internal Data. The arguments are the current highest global equation number (which will be incremented) and a Vector of pointers to the global variables (to which any unpinned values in the internal Data are added). More...  
void  describe_dofs (std::ostream &out, const std::string ¤t_string) const 
Function to describe the dofs of the element. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...) More...  
void  add_internal_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt) 
Add pointers to the internal data values to map indexed by the global equation number. More...  
void  add_internal_data_values_to_vector (Vector< double > &vector_of_values) 
Add all internal data and time history values to the vector in the internal storage order. More...  
void  read_internal_data_values_from_vector (const Vector< double > &vector_of_values, unsigned &index) 
Read all internal data and time history values from the vector starting from index. On return the index will be set to the value at the end of the data that has been read in. More...  
void  add_internal_eqn_numbers_to_vector (Vector< long > &vector_of_eqn_numbers) 
Add all equation numbers associated with internal data to the vector in the internal storage order. More...  
void  read_internal_eqn_numbers_from_vector (const Vector< long > &vector_of_eqn_numbers, unsigned &index) 
Read all equation numbers associated with internal data from the vector starting from index. On return the index will be set to the value at the end of the data that has been read in. More...  
virtual void  get_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix) 
Calculate the residuals and the elemental "mass" matrix, the matrix that multiplies the time derivative terms in a problem. More...  
virtual void  get_dresiduals_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam) 
Calculate the derivatives of the residuals with respect to a parameter. More...  
virtual void  get_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) 
Calculate the derivatives of the elemental Jacobian matrix and residuals with respect to a parameter. More...  
virtual void  get_djacobian_and_dmass_matrix_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam) 
Calculate the derivatives of the elemental Jacobian matrix mass matrix and residuals with respect to a parameter. More...  
virtual void  get_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product) 
Calculate the product of the Hessian (derivative of Jacobian with respect to all variables) an eigenvector, Y, and other specified vectors, C (d(J_{ij})/d u_{k}) Y_{j} C_{k}. More...  
virtual void  get_inner_products (Vector< std::pair< unsigned, unsigned > > const &history_index, Vector< double > &inner_product) 
Return the vector of inner product of the given pairs of history values. More...  
virtual void  get_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double > > &inner_product_vector) 
Compute the vectors that when taken as a dot product with other history values give the inner product over the element. More...  
virtual void  compute_norm (double &norm) 
Compute norm of solution – broken virtual can be overloaded by element writer to implement whatever norm is desired for the specific element. More...  
void  set_halo (const unsigned &non_halo_proc_ID) 
Label the element as halo and specify processor that holds nonhalo counterpart. More...  
void  set_nonhalo () 
Label the element as not being a halo. More...  
bool  is_halo () const 
Is this element a halo? More...  
int  non_halo_proc_ID () 
ID of processor ID that holds nonhalo counterpart of halo element; negative if not a halo. More...  
void  set_must_be_kept_as_halo () 
Insist that this element be kept as a halo element during a distribute? More...  
void  unset_must_be_kept_as_halo () 
Do not insist that this element be kept as a halo element during distribution. More...  
bool  must_be_kept_as_halo () const 
Test whether the element must be kept as a halo element. More...  
virtual unsigned  ndof_types () const 
The number of types of degrees of freedom in this element are subdivided into. More...  
virtual void  get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned > > &dof_lookup_list) const 
Create a list of pairs for the unknowns that this element is "in charge of" – ignore any unknowns associated with external Data . The first entry in each pair must contain the global equation number of the unknown, while the second one contains the number of the DOF type that this unknown is associated with. (The function can obviously only be called if the equation numbering scheme has been set up.) More...  
Public Member Functions inherited from oomph::GeomObject  
GeomObject ()  
Default constructor. More...  
GeomObject (const unsigned &ndim)  
Constructor: Pass dimension of geometric object (# of Eulerian coords = # of Lagrangian coords; no time history available/needed) More...  
GeomObject (const unsigned &nlagrangian, const unsigned &ndim)  
Constructor: pass # of Eulerian and Lagrangian coordinates. No time history available/needed. More...  
GeomObject (const unsigned &nlagrangian, const unsigned &ndim, TimeStepper *time_stepper_pt)  
Constructor: pass # of Eulerian and Lagrangian coordinates and pointer to timestepper which is used to handle the position at previous timesteps and allows the evaluation of veloc/acceleration etc. in cases where the GeomData varies with time. More...  
GeomObject (const GeomObject &dummy)  
Broken copy constructor. More...  
void  operator= (const GeomObject &) 
Broken assignment operator. More...  
virtual  ~GeomObject () 
(Empty) destructor More...  
unsigned  nlagrangian () const 
Access function to # of Lagrangian coordinates. More...  
unsigned  ndim () const 
Access function to # of Eulerian coordinates. More...  
void  set_nlagrangian_and_ndim (const unsigned &n_lagrangian, const unsigned &n_dim) 
Set # of Lagrangian and Eulerian coordinates. More...  
TimeStepper *&  time_stepper_pt () 
Access function for pointer to time stepper: Null if object is not timedependent. More...  
TimeStepper *  time_stepper_pt () const 
Access function for pointer to time stepper: Null if object is not timedependent. Const version. More...  
virtual void  dposition (const Vector< double > &zeta, DenseMatrix< double > &drdzeta) const 
Derivative of position Vector w.r.t. to coordinates: = drdzeta(alpha,i). Evaluated at current time. More...  
virtual void  d2position (const Vector< double > &zeta, RankThreeTensor< double > &ddrdzeta) const 
2nd derivative of position Vector w.r.t. to coordinates: = ddrdzeta(alpha,beta,i). Evaluated at current time. More...  
virtual void  d2position (const Vector< double > &zeta, Vector< double > &r, DenseMatrix< double > &drdzeta, RankThreeTensor< double > &ddrdzeta) const 
Posn Vector and its 1st & 2nd derivatives w.r.t. to coordinates: = drdzeta(alpha,i). = ddrdzeta(alpha,beta,i). Evaluated at current time. More...  
Public Member Functions inherited from oomph::SpineFiniteElement  
SpineFiniteElement ()  
Empty constructor. More...  
virtual  ~SpineFiniteElement () 
Emtpty virtual destructor. More...  
Public Member Functions inherited from oomph::HijackedElementBase  
HijackedElementBase ()  
Constructor, initialise the pointer to the equation numbers for the storage to zero. More...  
virtual  ~HijackedElementBase () 
Destructor, destroy the storage for the equation numbers. More...  
void  unhijack_all_data () 
Reset the hijacked data pt, so that none of the equations in the element are hijacked. More...  
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...  
Public Member Functions inherited from oomph::PointFluidInterfaceBoundingElement  
PointFluidInterfaceBoundingElement ()  
Constructor. More...  
Public Member Functions inherited from oomph::FluidInterfaceBoundingElement  
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  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...  
Public Member Functions inherited from oomph::FaceElement  
FaceElement ()  
Constructor: Initialise all appropriate member data. More...  
virtual  ~FaceElement () 
Empty virtual destructor. More...  
FaceElement (const FaceElement &)  
Broken copy constructor. More...  
const unsigned &  boundary_number_in_bulk_mesh () const 
Broken assignment operator. More...  
void  set_boundary_number_in_bulk_mesh (const unsigned &b) 
Set function for the boundary number in bulk mesh. More...  
double  zeta_nodal (const unsigned &n, const unsigned &k, const unsigned &i) const 
In a FaceElement, the "global" intrinsic coordinate of the element along the boundary, when viewed as part of a compound geometric object is specified using the boundary coordinate defined by the mesh. Note: Boundary coordinates will have been set up when creating the underlying mesh, and their values will have been stored at the nodes. More...  
double  J_eulerian (const Vector< double > &s) const 
Return the Jacobian of mapping from local to global coordinates at local position s. Overloaded from FiniteElement. More...  
double  J_eulerian_at_knot (const unsigned &ipt) const 
Return the Jacobian of the mapping from local to global coordinates at the iptth integration point Overloaded from FiniteElement. More...  
double  interpolated_x (const Vector< double > &s, const unsigned &i) const 
Return FE interpolated coordinate x[i] at local coordinate s. Overloaded to get information from bulk. More...  
double  interpolated_x (const unsigned &t, const Vector< double > &s, const unsigned &i) const 
Return FE interpolated coordinate x[i] at local coordinate s at previous timestep t (t=0: present; t>0: previous timestep). Overloaded to get information from bulk. More...  
void  interpolated_x (const Vector< double > &s, Vector< double > &x) const 
Return FE interpolated position x[] at local coordinate s as Vector Overloaded to get information from bulk. More...  
void  interpolated_x (const unsigned &t, const Vector< double > &s, Vector< double > &x) const 
Return FE interpolated position x[] at local coordinate s at previous timestep t as Vector (t=0: present; t>0: previous timestep). Overloaded to get information from bulk. More...  
double  interpolated_dxdt (const Vector< double > &s, const unsigned &i, const unsigned &t) 
Return tth timederivative of the ith FEinterpolated Eulerian coordinate at local coordinate s. Overloaded to get information from bulk. More...  
void  interpolated_dxdt (const Vector< double > &s, const unsigned &t, Vector< double > &dxdt) 
Compte tth timederivative of the FEinterpolated Eulerian coordinate vector at local coordinate s. Overloaded to get information from bulk. More...  
int &  normal_sign () 
Sign of outer unit normal (relative to crossproducts of tangent vectors in the corresponding "bulk" element. More...  
int  normal_sign () const 
Return sign of outer unit normal (relative to crossproducts of tangent vectors in the corresponding "bulk" element. (const version) More...  
int &  face_index () 
Index of the face (a number that uniquely identifies the face in the element) More...  
int  face_index () const 
Index of the face (a number that uniquely identifies the face in the element) (const version) More...  
const Vector< double > *  tangent_direction_pt () const 
Public access function for the tangent direction pointer. More...  
void  set_tangent_direction (Vector< double > *tangent_direction_pt) 
Set the tangent direction vector. More...  
void  turn_on_warning_for_discontinuous_tangent () 
Turn on warning for when there may be discontinuous tangent vectors from continuous_tangent_and_outer_unit_normal(...) More...  
void  turn_off_warning_for_discontinuous_tangent () 
Turn off warning for when there may be discontinuous tangent vectors from continuous_tangent_and_outer_unit_normal(...) More...  
void  continuous_tangent_and_outer_unit_normal (const Vector< double > &s, Vector< Vector< double > > &tang_vec, Vector< double > &unit_normal) const 
Compute the tangent vector(s) and the outer unit normal vector at the specified local coordinate. In two spatial dimensions, a "tangent direction" is not required. In three spatial dimensions, a tangent direction is required (set via set_tangent_direction(...)), and we project the tanent direction on to the surface. The second tangent vector is taken to be the cross product of the projection and the unit normal. More...  
void  continuous_tangent_and_outer_unit_normal (const unsigned &ipt, Vector< Vector< double > > &tang_vec, Vector< double > &unit_normal) const 
Compute the tangent vector(s) and the outer unit normal vector at the iptth integration point. This is a wrapper around continuous_tangent_and_outer_unit_normal(...) with the integration points converted into local coordinates. More...  
void  outer_unit_normal (const Vector< double > &s, Vector< double > &unit_normal) const 
Compute outer unit normal at the specified local coordinate. More...  
void  outer_unit_normal (const unsigned &ipt, Vector< double > &unit_normal) const 
Compute outer unit normal at iptth integration point. More...  
FiniteElement *&  bulk_element_pt () 
Pointer to higherdimensional "bulk" element. More...  
FiniteElement *  bulk_element_pt () const 
Pointer to higherdimensional "bulk" element (const version) More...  
CoordinateMappingFctPt &  face_to_bulk_coordinate_fct_pt () 
Return the pointer to the function that maps the face coordinate to the bulk coordinate. More...  
CoordinateMappingFctPt  face_to_bulk_coordinate_fct_pt () const 
Return the pointer to the function that maps the face coordinate to the bulk coordinate (const version) More...  
BulkCoordinateDerivativesFctPt &  bulk_coordinate_derivatives_fct_pt () 
Return the pointer to the function that returns the derivatives of the bulk coordinates wrt the face coordinates. More...  
BulkCoordinateDerivativesFctPt  bulk_coordinate_derivatives_fct_pt () const 
Return the pointer to the function that returns the derivatives of the bulk coordinates wrt the face coordinates (const version) More...  
Vector< double >  local_coordinate_in_bulk (const Vector< double > &s) const 
Return vector of local coordinates in bulk element, given the local coordinates in this FaceElement. More...  
void  get_local_coordinate_in_bulk (const Vector< double > &s, Vector< double > &s_bulk) const 
Calculate the vector of local coordinate in the bulk element given the local coordinates in this FaceElement. More...  
void  get_ds_bulk_ds_face (const Vector< double > &s, DenseMatrix< double > &dsbulk_dsface, unsigned &interior_direction) const 
Calculate the derivatives of the local coordinates in the bulk element with respect to the local coordinates in this FaceElement. In addition return the index of a bulk local coordinate that varies away from the face. More...  
unsigned &  bulk_position_type (const unsigned &i) 
Return the position type in the "bulk" element that corresponds to position type i on the FaceElement. More...  
const unsigned &  bulk_position_type (const unsigned &i) const 
Return the position type in the "bulk" element that corresponds to the position type i on the FaceElement. Const version. More...  
void  bulk_node_number_resize (const unsigned &i) 
Resize the storage for the bulk node numbers. More...  
unsigned &  bulk_node_number (const unsigned &n) 
Return the bulk node number that corresponds to the nth local node number. More...  
const unsigned &  bulk_node_number (const unsigned &n) const 
Return the bulk node number that corresponds to the nth local node number (const version) More...  
void  bulk_position_type_resize (const unsigned &i) 
Resize the storage for bulk_position_type to i entries. More...  
unsigned &  nbulk_value (const unsigned &n) 
Return the number of values originally stored at local node n (before the FaceElement added additional values to it (if it did)) More...  
unsigned  nbulk_value (const unsigned &n) const 
Return the number of values originally stored at local node n (before the FaceElement added additional values to it (if it did)) (const version) More...  
void  nbulk_value_resize (const unsigned &i) 
Resize the storage for the number of values originally stored at the local nodes to i entries. More...  
void  resize_nodes (Vector< unsigned > &nadditional_data_values) 
Provide additional storage for a specified number of values at the nodes of the FaceElement. (This is needed, for instance, in freesurface elements, if the nonpenetration condition is imposed by Lagrange multipliers whose values are only stored at the surface nodes but not in the interior of the bulk element). nadditional_data_values [n] specifies the number of additional values required at node n of the FaceElement. Note: Since this function is executed separately for each FaceElement, nodes that are common to multiple elements might be resized repeatedly. To avoid this, we only allow a single resize operation by comparing the number of values stored at each node to the number of values the node had when it was simply a member of the associated "bulk" element. There are cases where this will break! – e.g. if a node is common to two FaceElements which require additional storage for distinct quantities. Such cases need to be handled by "handcrafted" face elements. More...  
void  output_zeta (std::ostream &outfile, const unsigned &nplot) 
Output boundary coordinate zeta. More...  
Additional Inherited Members  
Public Types inherited from oomph::ElementWithMovingNodes  
enum  { Shape_derivs_by_chain_rule, Shape_derivs_by_direct_fd, Shape_derivs_by_fastest_method } 
Public enumeration to choose method for computing shape derivatives. More...  
Public Types inherited from oomph::FiniteElement  
typedef void(*  SteadyExactSolutionFctPt )(const Vector< double > &, Vector< double > &) 
Function pointer for function that computes vectorvalued steady "exact solution" as . More...  
typedef void(*  UnsteadyExactSolutionFctPt )(const double &, const Vector< double > &, Vector< double > &) 
Function pointer for function that computes Vectorvalued timedependent function as . More...  
Static Public Attributes inherited from oomph::FiniteElement  
static double  Tolerance_for_singular_jacobian = 1.0e16 
Tolerance below which the jacobian is considered singular. More...  
static bool  Accept_negative_jacobian = false 
Boolean that if set to true allows a negative jacobian in the transform between global and local coordinates (negative surface area = lefthanded coordinate system). More...  
static bool  Suppress_output_while_checking_for_inverted_elements =false 
Static boolean to suppress output while checking for inverted elements. More...  
Static Public Attributes inherited from oomph::GeneralisedElement  
static bool  Suppress_warning_about_repeated_internal_data =false 
Static boolean to suppress warnings about repeated internal data. Defaults to false. More...  
static bool  Suppress_warning_about_repeated_external_data =true 
Static boolean to suppress warnings about repeated external data. Defaults to true. More...  
static double  Default_fd_jacobian_step =1.0e8 
Double used for the default finite difference step in elemental jacobian calculations. More...  
Protected Member Functions inherited from oomph::ElementWithMovingNodes  
virtual void  get_dnodal_coordinates_dgeom_dofs (RankThreeTensor< double > &dnodal_coordinates_dgeom_dofs) 
Compute derivatives of the nodal coordinates w.r.t. to the geometric dofs. Default implementation by FD can be overwritten for specific elements. dnodal_coordinates_dgeom_dofs(l,i,j) = dX_{ij} / d s_l. More...  
void  fill_in_jacobian_from_geometric_data (Vector< double > &residuals, DenseMatrix< double > &jacobian) 
Calculate the contributions to the Jacobian matrix from the geometric data. This version assumes that the (full) residuals vector has already been calculated and is passed in as the first argument – needed in case the derivatives are computed by FD. More...  
void  fill_in_jacobian_from_geometric_data (DenseMatrix< double > &jacobian) 
Protected Member Functions inherited from oomph::FiniteElement  
virtual void  assemble_local_to_eulerian_jacobian (const DShape &dpsids, DenseMatrix< double > &jacobian) const 
Assemble the jacobian matrix for the mapping from local to Eulerian coordinates, given the derivatives of the shape function w.r.t the local coordinates. More...  
virtual void  assemble_local_to_eulerian_jacobian2 (const DShape &d2psids, DenseMatrix< double > &jacobian2) const 
Assemble the the "jacobian" matrix of second derivatives of the mapping from local to Eulerian coordinates, given the second derivatives of the shape functions w.r.t. local coordinates. More...  
virtual void  assemble_eulerian_base_vectors (const DShape &dpsids, DenseMatrix< double > &interpolated_G) const 
Assemble the covariant Eulerian base vectors, assuming that the derivatives of the shape functions with respect to the local coordinates have already been constructed. More...  
template<unsigned DIM>  
double  invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const 
Take the matrix passed as jacobian and return its inverse in inverse_jacobian. This function is templated by the dimension of the element because matrix inversion cannot be written efficiently in a generic manner. More...  
virtual double  invert_jacobian_mapping (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const 
A templatefree interface that takes the matrix passed as jacobian and return its inverse in inverse_jacobian. By default the function will use the dimension of the element to call the correct invert_jacobian(..) function. This should be overloaded for efficiency (removal of a switch statement) in specific elements. More...  
virtual double  local_to_eulerian_mapping (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const 
Calculate the mapping from local to Eulerian coordinates, given the derivatives of the shape functions w.r.t. local coordinates. Returns the determinant of the jacobian, the jacobian and inverse jacobian. More...  
double  local_to_eulerian_mapping (const DShape &dpsids, DenseMatrix< double > &inverse_jacobian) const 
Calculate the mapping from local to Eulerian coordinates, given the derivatives of the shape functions w.r.t. local coordinates, Return only the determinant of the jacobian and the inverse of the mapping (ds/dx). More...  
virtual double  local_to_eulerian_mapping_diagonal (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const 
Calculate the mapping from local to Eulerian coordinates given the derivatives of the shape functions w.r.t the local coordinates. assuming that the coordinates are aligned in the direction of the local coordinates, i.e. there are no cross terms and the jacobian is diagonal. This function returns the determinant of the jacobian, the jacobian and the inverse jacobian. More...  
virtual void  dJ_eulerian_dnodal_coordinates (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const 
A templatefree interface that calculates the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij. To do this it requires the jacobian matrix and the derivatives of the shape functions w.r.t. the local coordinates. By default the function will use the dimension of the element to call the correct dJ_eulerian_dnodal_coordinates_templated_helper(..) function. This should be overloaded for efficiency (removal of a switch statement) in specific elements. More...  
template<unsigned DIM>  
void  dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const 
Calculate the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij using the jacobian matrix and the derivatives of the shape functions w.r.t. the local coordinates. This function is templated by the dimension of the element. More...  
virtual void  d_dshape_eulerian_dnodal_coordinates (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const 
A templatefree interface that calculates the derivative w.r.t. the nodal coordinates of the derivative of the shape functions w.r.t. the global eulerian coordinates . I.e. this function calculates
To do this it requires the determinant of the jacobian mapping, its derivative w.r.t. the nodal coordinates , the inverse jacobian and the derivatives of the shape functions w.r.t. the local coordinates. The result is returned as a tensor of rank four. Numbering: d_dpsidx_dX(p,q,j,i) = By default the function will use the dimension of the element to call the correct d_dshape_eulerian_dnodal_coordinates_templated_helper(..) function. This should be overloaded for efficiency (removal of a switch statement) in specific elements. More...  
template<unsigned DIM>  
void  d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const 
Calculate the derivative w.r.t. the nodal coordinates of the derivative of the shape functions w.r.t. the global eulerian coordinates , using the determinant of the jacobian mapping, its derivative w.r.t. the nodal coordinates , the inverse jacobian and the derivatives of the shape functions w.r.t. the local coordinates. The result is returned as a tensor of rank four. Numbering: d_dpsidx_dX(p,q,j,i) = This function is templated by the dimension of the element. More...  
virtual void  transform_derivatives (const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const 
Convert derivative w.r.t.local coordinates to derivatives w.r.t the coordinates used to assemble the inverse_jacobian passed in the mapping. On entry, dbasis must contain the basis function derivatives w.r.t. the local coordinates; it will contain the derivatives w.r.t. the new coordinates on exit. This is virtual so that it may be overloaded if desired for efficiency reasons. More...  
void  transform_derivatives_diagonal (const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const 
Convert derivative w.r.t local coordinates to derivatives w.r.t the coordinates used to assemble the inverse jacobian passed in the mapping, assuming that the coordinates are aligned in the direction of the local coordinates. On entry dbasis must contain the derivatives of the basis functions w.r.t. the local coordinates; it will contain the derivatives w.r.t. the new coordinates. are converted into the new using the mapping inverse_jacobian. More...  
virtual void  transform_second_derivatives (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const 
Convert derivatives and second derivatives w.r.t. local coordiantes to derivatives and second derivatives w.r.t. the coordinates used to assemble the jacobian, inverse jacobian and jacobian2 passed to the function. By default this function will call transform_second_derivatives_template<>(...) using the dimension of the element as the template parameter. It is virtual so that it can be overloaded by a specific element to save using a switch statement. Optionally, the element writer may wish to use the transform_second_derivatives_diagonal<>(...) function On entry dbasis and d2basis must contain the derivatives w.r.t. the local coordinates; on exit they will be the derivatives w.r.t. the transformed coordinates. More...  
template<unsigned DIM>  
void  transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const 
Convert derivatives and second derivatives w.r.t. local coordinates to derivatives and second derivatives w.r.t. the coordinates used to asssmble the jacobian, inverse jacobian and jacobian2 passed in the mapping. This is templated by dimension because the method of calculation varies significantly with the dimension. On entry dbasis and d2basis must contain the derivatives w.r.t. the local coordinates; on exit they will be the derivatives w.r.t. the transformed coordinates. More...  
template<unsigned DIM>  
void  transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const 
Convert derivatives and second derivatives w.r.t. local coordinates to derivatives and second derivatives w.r.t. the coordinates used to asssmble the jacobian, inverse jacobian and jacobian2 passed in the mapping. This version of the function assumes that the local coordinates are aligned with the global coordinates, i.e. the jacobians are diagonal On entry dbasis and d2basis must contain the derivatives w.r.t. the local coordinates; on exit they will be the derivatives w.r.t. the transformed coordinates. More...  
virtual void  fill_in_jacobian_from_nodal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian) 
Calculate the contributions to the jacobian from the nodal degrees of freedom using finite differences. This version of the function assumes that the residuals vector has already been calculated. More...  
void  fill_in_jacobian_from_nodal_by_fd (DenseMatrix< double > &jacobian) 
Calculate the contributions to the jacobian from the nodal degrees of freedom using finite differences. This version computes the residuals vector before calculating the jacobian terms. More...  
virtual void  update_before_nodal_fd () 
Function that is called before the finite differencing of any nodal data. This may be overloaded to update any slaved data before finite differencing takes place. More...  
virtual void  reset_after_nodal_fd () 
Function that is call after the finite differencing of the nodal data. This may be overloaded to reset any slaved variables that may have changed during the finite differencing. More...  
virtual void  update_in_nodal_fd (const unsigned &i) 
Function called within the finite difference loop for nodal data after a change in the ith nodal value. More...  
virtual void  reset_in_nodal_fd (const unsigned &i) 
Function called within the finite difference loop for nodal data after the ith nodal values is reset. The default behaviour is to call the update function. More...  
void  fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) 
Add the elemental contribution to the jacobian matrix. and the residuals vector. Note that this function will NOT initialise the residuals vector or the jacobian matrix. It must be called after the residuals vector and jacobian matrix have been initialised to zero. The default is to use finite differences to calculate the jacobian. More...  
template<>  
double  invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const 
Zerod specialisation of function to calculate inverse of jacobian mapping. More...  
template<>  
double  invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const 
Oned specialisation of function to calculate inverse of jacobian mapping. More...  
template<>  
double  invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const 
Twod specialisation of function to calculate inverse of jacobian mapping. More...  
template<>  
double  invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const 
Threed specialisation of function to calculate inverse of jacobian mapping. More...  
template<>  
void  dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const 
template<>  
void  dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const 
template<>  
void  dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const 
template<>  
void  dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const 
template<>  
void  d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const 
template<>  
void  d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const 
template<>  
void  d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const 
template<>  
void  d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const 
template<>  
void  transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const 
template<>  
void  transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const 
template<>  
void  transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const 
template<>  
void  transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const 
Protected Member Functions inherited from oomph::GeneralisedElement  
unsigned  add_internal_data (Data *const &data_pt, const bool &fd=true) 
Add a (pointer to an) internal data object to the element and return the index required to obtain it from the access function internal_data_pt() . The boolean indicates whether the datum should be included in the general finitedifference loop when calculating the jacobian. The default value is true, i.e. the data will be included in the finite differencing. More...  
bool  internal_data_fd (const unsigned &i) const 
Return the status of the boolean flag indicating whether the internal data is included in the finite difference loop. More...  
void  exclude_internal_data_fd (const unsigned &i) 
Set the boolean flag to exclude the internal datum from the finite difference loop when computing the jacobian matrix. More...  
void  include_internal_data_fd (const unsigned &i) 
Set the boolean flag to include the internal datum in the finite difference loop when computing the jacobian matrix. More...  
void  clear_global_eqn_numbers () 
Clear the storage for the global equation numbers and pointers to dofs (if stored) More...  
void  add_global_eqn_numbers (std::deque< unsigned long > const &global_eqn_numbers, std::deque< double * > const &global_dof_pt) 
Add the contents of the queue global_eqn_numbers to the local storage for the localtoglobal translation scheme. It is essential that the entries in the queue are added IN ORDER i.e. from the front. More...  
virtual void  assign_internal_and_external_local_eqn_numbers (const bool &store_local_dof_pt) 
Assign the local equation numbers for the internal and external Data This must be called after the global equation numbers have all been assigned. It is virtual so that it can be overloaded by ElementWithExternalElements so that any external data from the external elements in included in the numbering scheme. If the boolean argument is true then pointers to the dofs will be stored in Dof_pt. More...  
virtual void  assign_additional_local_eqn_numbers () 
Setup any additional lookup schemes for local equation numbers. Examples of use include using local storage to refer to explicit degrees of freedom. The additional memory cost of such storage may or may not be offset by fast local access. More...  
int  internal_local_eqn (const unsigned &i, const unsigned &j) const 
Return the local equation number corresponding to the jth value stored at the ith internal data. More...  
int  external_local_eqn (const unsigned &i, const unsigned &j) 
Return the local equation number corresponding to the jth value stored at the ith external data. More...  
void  fill_in_jacobian_from_internal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false) 
Calculate the contributions to the jacobian from the internal degrees of freedom using finite differences. This version of the function assumes that the residuals vector has already been calculated. If the boolean argument is true, the finite differencing will be performed for all internal data, irrespective of the information in Data_fd. The default value (false) uses the information in Data_fd to selectively difference only certain data. More...  
void  fill_in_jacobian_from_internal_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false) 
Calculate the contributions to the jacobian from the internal degrees of freedom using finite differences. This version computes the residuals vector before calculating the jacobian terms. If the boolean argument is true, the finite differencing will be performed for all internal data, irrespective of the information in Data_fd. The default value (false) uses the information in Data_fd to selectively difference only certain data. More...  
void  fill_in_jacobian_from_external_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false) 
Calculate the contributions to the jacobian from the external degrees of freedom using finite differences. This version of the function assumes that the residuals vector has already been calculated. If the boolean argument is true, the finite differencing will be performed for all external data, irrespective of the information in Data_fd. The default value (false) uses the information in Data_fd to selectively difference only certain data. More...  
void  fill_in_jacobian_from_external_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false) 
Calculate the contributions to the jacobian from the external degrees of freedom using finite differences. This version computes the residuals vector before calculating the jacobian terms. If the boolean argument is true, the finite differencing will be performed for all internal data, irrespective of the information in Data_fd. The default value (false) uses the information in Data_fd to selectively difference only certain data. More...  
virtual void  update_before_internal_fd () 
Function that is called before the finite differencing of any internal data. This may be overloaded to update any slaved data before finite differencing takes place. More...  
virtual void  reset_after_internal_fd () 
Function that is call after the finite differencing of the internal data. This may be overloaded to reset any slaved variables that may have changed during the finite differencing. More...  
virtual void  update_in_internal_fd (const unsigned &i) 
Function called within the finite difference loop for internal data after a change in any values in the ith internal data object. More...  
virtual void  reset_in_internal_fd (const unsigned &i) 
Function called within the finite difference loop for internal data after the values in the ith external data object are reset. The default behaviour is to call the update function. More...  
virtual void  update_before_external_fd () 
Function that is called before the finite differencing of any external data. This may be overloaded to update any slaved data before finite differencing takes place. More...  
virtual void  fill_in_contribution_to_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix) 
Add the elemental contribution to the mass matrix matrix. and the residuals vector. Note that this function should NOT initialise the residuals vector or the mass matrix. It must be called after the residuals vector and jacobian matrix have been initialised to zero. The default is deliberately broken. More...  
virtual void  fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix) 
Add the elemental contribution to the jacobian matrix, mass matrix and the residuals vector. Note that this function should NOT initialise any entries. It must be called after the residuals vector and matrices have been initialised to zero. More...  
virtual void  fill_in_contribution_to_dresiduals_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam) 
Add the elemental contribution to the derivatives of the residuals with respect to a parameter. This function should NOT initialise any entries and must be called after the entries have been initialised to zero The default implementation is to use finite differences to calculate the derivatives. More...  
virtual void  fill_in_contribution_to_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) 
Add the elemental contribution to the derivatives of the elemental Jacobian matrix and residuals with respect to a parameter. This function should NOT initialise any entries and must be called after the entries have been initialised to zero The default implementation is to use finite differences to calculate the derivatives. More...  
virtual void  fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam) 
Add the elemental contribution to the derivative of the jacobian matrix, mass matrix and the residuals vector with respect to the passed parameter. Note that this function should NOT initialise any entries. It must be called after the residuals vector and matrices have been initialised to zero. More...  
virtual void  fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product) 
Fill in contribution to the product of the Hessian (derivative of Jacobian with respect to all variables) an eigenvector, Y, and other specified vectors, C (d(J_{ij})/d u_{k}) Y_{j} C_{k}. More...  
virtual void  fill_in_contribution_to_inner_products (Vector< std::pair< unsigned, unsigned > > const &history_index, Vector< double > &inner_product) 
Fill in the contribution to the inner products between given pairs of history values. More...  
virtual void  fill_in_contribution_to_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double > > &inner_product_vector) 
Fill in the contributions to the vectors that when taken as dot product with other history values give the inner product over the element. More...  
Protected Member Functions inherited from oomph::HijackedElementBase  
void  hijack_global_eqn (long *const &global_eqn_pt) 
Mark the global equation, addressed by global_eqn_pt, as hijacked by this element. More...  
void  unhijack_global_eqn (long *const &global_eqn_pt) 
The global equation, addressed by global_eqn_pt, is no longer hijacked by this element. More...  
Protected Member Functions inherited from oomph::PointFluidInterfaceBoundingElement  
void  fill_in_generic_residual_contribution_interface_boundary (Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned flag) 
Overload the helper function to calculate the residuals and (if flag==1) the Jacobian – this function only deals with the part of the Jacobian that can be handled generically. Specific additional contributions may be provided in add_additional_residual_contributions_interface_boundary(...) More...  
Protected Member Functions inherited from oomph::FluidInterfaceBoundingElement  
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 Member Functions inherited from oomph::FaceElement  
void  add_additional_values (const Vector< unsigned > &nadditional_values, const unsigned &id) 
Helper function adding additional values for the unknowns associated with the FaceElement. This function also sets the map containing the position of the first entry of this face element's additional values.The inputs are the number of additional values and the face element's ID. Note the same number of additonal values are allocated at ALL nodes. More...  
Protected Attributes inherited from oomph::ElementWithMovingNodes  
Vector< Data * >  Geom_data_pt 
Vector that stores pointers to all Data that affect the node update operations, i.e. the variables that can affect the position of the node. More...  
Protected Attributes inherited from oomph::FiniteElement  
MacroElement *  Macro_elem_pt 
Pointer to the element's macro element (NULL by default) More...  
Protected Attributes inherited from oomph::GeneralisedElement  
int  Non_halo_proc_ID 
Nonhalo processor ID for Data; 1 if it's not a halo. More...  
bool  Must_be_kept_as_halo 
Does this element need to be kept as a halo element during a distribute? More...  
Protected Attributes inherited from oomph::GeomObject  
unsigned  NLagrangian 
Number of Lagrangian (intrinsic) coordinates. More...  
unsigned  Ndim 
Number of Eulerian coordinates. More...  
TimeStepper *  Geom_object_time_stepper_pt 
Timestepper (used to handle access to geometry at previous timesteps) More...  
Protected Attributes inherited from oomph::HijackedElementBase  
std::set< long * > *  Hijacked_global_eqn_number_pt 
Vector< int > *  Hijacked_local_eqn_number_pt 
Pointer to a vector of integers containing the local equation numbers of any hijacked variables in the element. More...  
double *  Residual_multiplier_pt 
Pointer to a double that multiplies the contribution to the residuals from the original element. This is usually used as a homotopy parameter to permit a smooth transition between different types of boundary conditions, rather than switching them on or off abruptly. More...  
Protected Attributes inherited from oomph::FluidInterfaceBoundingElement  
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 ith velocity component is stored in the element's nodes. More...  
Protected Attributes inherited from oomph::FaceElement  
unsigned  Boundary_number_in_bulk_mesh 
The boundary number in the bulk mesh to which this element is attached. More...  
bool  Boundary_number_in_bulk_mesh_has_been_set 
Has the Boundary_number_in_bulk_mesh been set? Only included if compiled with PARANOID switched on. More...  
FiniteElement *  Bulk_element_pt 
Pointer to the associated higherdimensional "bulk" element. More...  
Vector< unsigned >  Bulk_node_number 
List of indices of the local node numbers in the "bulk" element that correspond to the local node numbers in the FaceElement. More...  
Vector< unsigned >  Nbulk_value 
A vector that will hold the number of data values at the nodes that are associated with the "bulk" element. i.e. not including any additional degrees of freedom that might be required for extra equations that are being solved by the FaceElement. More...  
Vector< double > *  Tangent_direction_pt 
A general direction pointer for the tangent vectors. This is used in the function continuous_tangent_and_outer_unit_normal() for creating continuous tangent vectors in spatial dimensions. The general direction is projected on to the surface. This technique is not required in two spatial dimensions. More...  
Static Protected Attributes inherited from oomph::FiniteElement  
static const unsigned  Default_Initial_Nvalue = 0 
Default return value for required_nvalue(n) which gives the number of "data" values required by the element at node n; for example, solving a Poisson equation would required only one "data" value at each node. The defaults is set to zero, because a general element is problemless. More...  
static const double  Node_location_tolerance = 1.0e14 
Default value for the tolerance to be used when locating nodes via local coordinates. More...  
static const unsigned  N2deriv [] ={0,1,3,6} 
Static array that holds the number of second derivatives as a function of the dimension of the element. More...  
Static Protected Attributes inherited from oomph::GeneralisedElement  
static DenseMatrix< double >  Dummy_matrix 
Empty dense matrix used as a dummy argument to combined residual and jacobian functions in the case when only the residuals are being assembled. More...  
static std::deque< double * >  Dof_pt_deque 
Static storage for deque used to add_global_equation_numbers when pointers to the dofs in each element are not required. More...  
Static Protected Attributes inherited from oomph::HijackedElementBase  
static double  Default_residual_multiplier =0.0 
Static default value for the double that multiplies the original residuals. More...  
Definition at line 511 of file specific_node_update_interface_elements.h.

inline 
Definition at line 518 of file specific_node_update_interface_elements.h.