32 #include <oomph-lib-config.h> 52 const int &face_index,
const unsigned& b) :
85 unsigned n_node = this->
nnode();
99 for(
unsigned l=0;l<n_node;l++)
101 for (
unsigned d = 0; d < 2; d++)
103 interpolated_dxds_t[d] += this->
node_pt(l)->
x_gen(0,d) * dpsids(l,0,0)
117 double dtds_t = sqrt(interpolated_dxds_t[0]*interpolated_dxds_t[0] +
118 interpolated_dxds_t[1]*interpolated_dxds_t[1]);
135 unsigned n_node = this->
nnode();
161 const unsigned outer_slope_index = 3 - slope_index;
165 for(
unsigned ipt=0;ipt<n_intpt;ipt++)
180 for (
unsigned n = 0; n < n_node; n++)
182 for (
unsigned d = 0; d < 2; d++)
186 dxds_t[d] += dpsi(n,k,0)*
node_pt(n)->
x_gen(slope_index*k,d);
187 dxds_n[d] += psi(n,k)*
node_pt(n)->
x_gen(outer_slope_index+
194 double ds_ndn = -edge_sign*sqrt(dxds_t[0]*dxds_t[0]+dxds_t[1]*dxds_t[1])/
195 (-dxds_n[0]*dxds_t[1]+dxds_t[0]*dxds_n[1]);
198 double ds_tdn = edge_sign*(dxds_t[1]*dxds_n[1]+dxds_t[0]*dxds_n[0])/
199 (sqrt(dxds_t[0]*dxds_t[0]+dxds_t[1]*dxds_t[1])*
200 (-dxds_n[0]*dxds_t[1]+dxds_t[0]*dxds_n[1]));
203 double interpolated_m = 0.0;
205 for (
unsigned n = 0; n < n_node; n++)
210 interpolated_m += psi(n,k)*m[k];
230 for(
unsigned n=0;n<n_node;n++)
239 unsigned bulk_p_type = slope_index*k;
248 residual[local_eqn] += flux1*psi(n,k)*
W;
257 residual[local_eqn] -= flux0*dpsi(n,k,0)*ds_tdn*
W;
263 bulk_p_type = outer_slope_index + slope_index*k;
272 residual[local_eqn] -= flux0*psi(n,k)*ds_ndn*
W;
void get_flux1(const double &s, double &flux)
Function to return the prescribed flux at a given macro element coordinate position.
int & face_index()
Index of the face (a number that uniquely identifies the face in the element)
void fill_in_generic_residual_contribution_biharmonic_flux(Vector< double > &residuals)
Add the element's contribution to its residual vector. Flux elements only make contribution to the re...
A general Finite Element class.
FluxFctPt Flux1_fct_pt
Function pointer to the prescribed flux.
unsigned Nface_nodal_dof
the number of nodal degrees of freedom for the face element basis functions
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
virtual void get_coordinates_on_boundary(const unsigned &b, const unsigned &k, Vector< double > &boundary_zeta)
Return the vector of the k-th generalised boundary coordinates on mesh boundary b. Broken virtual interface provides run-time error checking.
BiharmonicFluxElement()
Broken empty constructor.
int & normal_sign()
Sign of outer unit normal (relative to cross-products of tangent vectors in the corresponding "bulk" ...
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
FluxFctPt Flux0_fct_pt
Function pointer to the prescribed flux.
double J_eulerian(const Vector< double > &s) const
Calculate the Jacobian of the mapping between local and global coordinates at the position s for face...
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 c...
double & x_gen(const unsigned &k, const unsigned &i)
Reference to the generalised position x(k,i).
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
unsigned & bulk_position_type(const unsigned &i)
Return the position type in the "bulk" element that corresponds to position type i on the FaceElement...
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
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...
unsigned nnode() const
Return the number of nodes.
void get_flux0(const double &s, double &flux)
Function to return the prescribed flux at a given macro element coordinate position.
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Return the local equation number corresponding to the i-th value at the n-th local node...