52 const unsigned n_node = 
nnode();
    58  Shape psi(n_node), test(n_node);
    59  DShape dpsidx(n_node,2), dtestdx(n_node,2);
    68 const double scaled_peclet = this->
pe();
    71 const double scaled_peclet_st = this->
pe_st();
    75 int local_eqn=0, local_unknown=0;
    78 HangInfo *hang_info_pt=0, *hang_info2_pt=0;
    84 for(
unsigned ipt=0;ipt<n_intpt;ipt++)
   103   double interpolated_u=0.0;
   114   for(
unsigned l=0;l<n_node;l++) 
   117     double u_value = this->
nodal_value(l,u_nodal_index);
   118     interpolated_u += u_value*psi(l);
   121     for(
unsigned j=0;j<2;j++)
   124       interpolated_dudx[j] += u_value*dpsidx(l,j);
   129   if (!ALE_is_disabled_flag)
   131     for(
unsigned l=0;l<n_node;l++) 
   134       for(
unsigned j=0;j<2;j++)
   153   double r = interpolated_x[0];
   159   for(
unsigned l=0;l<n_node;l++)
   163     unsigned n_master=1; 
double hang_weight=1.0;
   171       n_master = hang_info_pt->
nmaster();
   180     for(
unsigned m=0;m<n_master;m++)
   205         residuals[local_eqn] -= 
   206          (scaled_peclet_st*dudt + source)*r*test(l)*W*hang_weight;
   209        residuals[local_eqn] -= 
   211         (interpolated_dudx[0]*
   212          (scaled_peclet*wind[0]*test(l) + dtestdx(l,0)) +
   214          (interpolated_dudx[1]*
   215           (scaled_peclet*wind[1]*test(l) + dtestdx(l,1))))*r*W*hang_weight;
   220          residuals[local_eqn] += scaled_peclet_st*(
   221           mesh_velocity[0]*interpolated_dudx[0] + 
   222           mesh_velocity[1]*interpolated_dudx[1])*test(l)*r*W*hang_weight;
   231          unsigned n_master2=1; 
double hang_weight2=1.0;
   233          for(
unsigned l2=0;l2<n_node;l2++)
   241              n_master2 = hang_info2_pt->
nmaster();
   250            for(
unsigned m2=0;m2<n_master2;m2++)
   261                hang_weight2 = hang_info2_pt->master_weight(m2);
   273              if(local_unknown >= 0)
   277                jacobian(local_eqn,local_unknown) 
   278                 -= scaled_peclet_st*test(l)*psi(l2)*
   280                 *r*W*hang_weight*hang_weight2;
   285                  mass_matrix(local_eqn,local_unknown) +=
   286                   scaled_peclet_st*test(l)*psi(l2)*r*W*hang_weight*hang_weight2;
   291                jacobian(local_eqn,local_unknown) -= 
   294                  (scaled_peclet*wind[0]*test(l) + dtestdx(l,0)) +
   297                   (scaled_peclet*wind[1]*test(l) + dtestdx(l,1))))*r*W*
   298                 hang_weight*hang_weight2;
   302                  jacobian(local_eqn,local_unknown)
   303                   += scaled_peclet_st*(
   304                    mesh_velocity[0]*dpsidx(l2,0) + 
   305                    mesh_velocity[1]*dpsidx(l2,1))*test(l)*r*W*hang_weight*hang_weight2;
 int local_hang_eqn(Node *const &node_pt, const unsigned &i)
Access function that returns the local equation number for the hanging node variables (values stored ...
double nodal_position(const unsigned &n, const unsigned &i) const
Return the i-th coordinate at local node n. If the node is hanging, the appropriate interpolation is ...
HangInfo *const  & hanging_pt() const
Return pointer to hanging node data (this refers to the geometric hanging node status) (const version...
bool ALE_is_disabled
Boolean flag to indicate whether AlE formulation is disable. 
double const  & master_weight(const unsigned &i) const
Return weight for dofs on i-th master node. 
unsigned nmaster() const
Return the number of master nodes. 
virtual double dshape_and_dtest_eulerian_at_knot_axi_adv_diff(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of ...
const double & pe_st() const
Peclet number multiplied by Strouhal number. 
bool is_hanging() const
Test whether the node is geometrically hanging. 
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point. 
virtual void get_wind_axi_adv_diff(const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, Vector< double > &wind) const
Get wind at (Eulerian) position x and/or local coordinate s. This function is virtual to allow overlo...
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s. 
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. 
Refineable version of QAxisymAdvectionDiffusionElement. Inherit from the standard QAxisymAdvectionDif...
const double & pe() const
Peclet number. 
Node *const  & master_node_pt(const unsigned &i) const
Return a pointer to the i-th master node. 
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n. 
double nodal_value(const unsigned &n, const unsigned &i) const
Return the i-th value stored at local node n. Produces suitably interpolated values for hanging nodes...
Class that contains data for hanging nodes. 
double du_dt_axi_adv_diff(const unsigned &n) const
du/dt at local node n. 
virtual unsigned nweight() const =0
Return the number of integration points of the scheme. 
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper. 
void fill_in_generic_residual_contribution_axi_adv_diff(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, unsigned flag)
Add the element's contribution to the elemental residual vector and/or Jacobian matrix flag=1: comput...
virtual unsigned u_index_axi_adv_diff() const
Broken assignment operator. 
double dnodal_position_dt(const unsigned &n, const unsigned &i) const
Return the i-th component of nodal velocity: dx/dt at local node n. 
virtual void get_source_axi_adv_diff(const unsigned &ipt, const Vector< double > &x, double &source) const
Get source term at (Eulerian) position x. This function is virtual to allow overloading in multi-phys...
unsigned nnode() const
Return the number of nodes. 
virtual double weight(const unsigned &i, const unsigned &j) const
Access function for j-th weight for the i-th derivative. 
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...