26 #ifndef DOUBLE_BUOYANT_NAVIER_STOKES_ELEMENTS_HEADER
27 #define DOUBLE_BUOYANT_NAVIER_STOKES_ELEMENTS_HEADER
57 template<
unsigned DIM>
58 class DoubleBuoyantQCrouzeixRaviartElement :
59 public virtual QAdvectionDiffusionReactionElement<2,DIM,3>,
60 public virtual QCrouzeixRaviartElement<DIM>
136 void output(std::ostream &outfile,
const unsigned &nplot)
146 for (
unsigned iplot=0;iplot<num_plot_points;iplot++)
152 for(
unsigned i=0;
i<
DIM;
i++)
156 for(
unsigned i=0;
i<
DIM;
i++)
163 for(
unsigned i=0;
i<2;
i++)
169 outfile << std::endl;
181 void output(FILE* file_pt,
const unsigned &n_plot)
185 void output_fct(std::ostream &outfile,
const unsigned &Nplot,
193 void output_fct(std::ostream &outfile,
const unsigned &Nplot,
222 double&
error,
double& norm)
233 double&
error,
double& norm)
263 for(
unsigned r=0;
r<2;
r++)
267 const unsigned n_node = this->
nnode();
274 for(
unsigned l=0;l<n_node;l++)
276 for(
unsigned r=0;
r<2;
r++)
283 for(
unsigned i=0;
i<
DIM;
i++)
288 (interpolated_c[0]*
ra_t() + interpolated_c[1]*
ra_s());
308 #ifdef USE_FD_JACOBIAN_FOR_BUOYANT_Q_CROZIER_RAVIART_ELEMENT
329 unsigned u_nodal_nst[
DIM];
330 for(
unsigned i=0;
i<
DIM;
i++)
335 unsigned C_nodal_adv_diff_react[2];
336 for(
unsigned r=0;
r<2;
r++)
341 unsigned n_dof = this->
ndof();
347 int local_unknown =0, local_eqn = 0;
353 unsigned n_node = this->
nnode();
359 for(
unsigned n=0;
n<n_node;
n++)
362 for(
unsigned i=0;
i<
DIM;
i++)
368 if(local_unknown >= 0)
374 double old_var = *value_pt;
377 *value_pt += fd_step;
383 for(
unsigned m=0;
m<n_dof;
m++) {newres[
m] = 0.0;}
389 for(
unsigned m=0;
m<n_node;
m++)
391 for(
unsigned r=0;
r<2;
r++)
399 double sum = (newres[local_eqn] - residuals[local_eqn])/fd_step;
400 jacobian(local_eqn,local_unknown) = sum;
413 for(
unsigned r=0;
r<2;
r++)
419 if(local_unknown >= 0)
426 double old_var = *value_pt;
429 *value_pt += fd_step;
435 for(
unsigned m=0;
m<n_dof;
m++) {newres[
m] = 0.0;}
439 for(
unsigned m=0;
m<n_node;
m++)
442 for(
unsigned j=0;
j<
DIM;
j++)
448 double sum = (newres[local_eqn] - residuals[local_eqn])/fd_step;
449 jacobian(local_eqn,local_unknown) = sum;
492 residuals,jacobian,mass_matrix);
496 residuals,jacobian,mass_matrix);
514 template<
unsigned int DIM>
526 class FaceGeometry<FaceGeometry<DoubleBuoyantQCrouzeixRaviartElement<2> > >:
527 public virtual PointElement
int i
Definition: BiCGSTAB_step_by_step.cpp:9
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Add the element's contribution to its residual vector (wrapper)
Definition: advection_diffusion_reaction_elements.h:519
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: advection_diffusion_reaction_elements.h:533
void enable_ALE()
Definition: advection_diffusion_reaction_elements.h:189
double interpolated_c_adv_diff_react(const Vector< double > &s, const unsigned &i) const
Return FE representation of function value c_i(s) at local coordinate s.
Definition: advection_diffusion_reaction_elements.h:556
void disable_ALE()
Definition: advection_diffusion_reaction_elements.h:180
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: advection_diffusion_reaction_elements.h:544
void unpin(const unsigned &i)
Unpin the i-th stored variable.
Definition: nodes.h:391
double * value_pt(const unsigned &i) const
Definition: nodes.h:324
Definition: db_navier_st_elements.h:61
void get_body_force_nst(const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, Vector< double > &result)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:253
void compute_norm(double &norm)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:210
static double Default_Physical_Constant_Value
The static default value of the Rayleigh number.
Definition: db_navier_st_elements.h:72
void fill_in_off_diagonal_jacobian_blocks_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:324
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: db_navier_st_elements.h:464
void compute_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:231
void compute_error(std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:219
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:486
double * Ra_T_pt
Pointer to a private data member, the thermal Rayleigh number.
Definition: db_navier_st_elements.h:66
void output_fct(std::ostream &outfile, const unsigned &Nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output function for an exact solution: Broken default.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:185
void output(std::ostream &outfile)
Overload the standard output function with the broken default.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:131
const double & n() const
Access function for the number of monomers in the micelle.
Definition: two_layer_soluble_surfactant/double_buoyant_navier_stokes_elements.h:110
const double & ra_s() const
Access function for the solutal Rayleigh number (const version)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:108
void unfix_pressure(const unsigned &p_dof)
UnPin p_dof-th pressure dof.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:88
double *& ra_s_pt()
Access function for the pointer to the solutal Rayleigh number.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:111
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:297
unsigned c_index_adv_diff_react(const unsigned &i) const
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:205
void output(std::ostream &outfile, const unsigned &nplot)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:136
void output_fct(std::ostream &outfile, const unsigned &Nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:193
void enable_ALE()
Final override for enable ALE.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:122
const double & ra_t() const
Access function for the thermal Rayleigh number (const version)
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:102
void output(FILE *file_pt, const unsigned &n_plot)
C-style output function: Broken default.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:181
double * Ra_S_pt
Pointer to privare data member, the solutal Rayleigh number.
Definition: db_navier_st_elements.h:69
DoubleBuoyantQCrouzeixRaviartElement()
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:79
double *& ra_t_pt()
Access function for the pointer to the thermal Rayleigh number.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:105
void disable_ALE()
Final override for disable ALE.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:114
void output(FILE *file_pt)
C-style output function: Broken default.
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:177
unsigned required_nvalue(const unsigned &n) const
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:97
void get_wind_adv_diff_react(const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, Vector< double > &wind) const
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:239
FaceGeometry()
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:519
FaceGeometry()
Definition: soluble_surfactant/double_buoyant_navier_stokes_elements.h:530
Definition: elements.h:4998
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: elements.h:1735
virtual void output_fct(std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output an exact solution over the element.
Definition: elements.h:3104
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
virtual void output(std::ostream &outfile)
Definition: elements.h:3050
virtual std::string tecplot_zone_string(const unsigned &nplot) const
Definition: elements.h:3161
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
Definition: elements.cc:3962
virtual void shape(const Vector< double > &s, Shape &psi) const =0
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
virtual void compute_error(FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
Calculate the norm of the error and that of the exact solution.
Definition: elements.h:3198
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Definition: elements.h:1759
virtual void get_s_plot(const unsigned &i, const unsigned &nplot, Vector< double > &s, const bool &shifted_to_interior=false) const
Definition: elements.h:3148
virtual unsigned nplot_points(const unsigned &nplot) const
Definition: elements.h:3186
double raw_nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2576
virtual void write_tecplot_zone_footer(std::ostream &outfile, const unsigned &nplot) const
Definition: elements.h:3174
void(* UnsteadyExactSolutionFctPt)(const double &, const Vector< double > &, Vector< double > &)
Definition: elements.h:1765
static double Default_fd_jacobian_step
Definition: elements.h:1198
unsigned ndof() const
Return the number of equations/dofs in the element.
Definition: elements.h:835
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
Definition: elements.h:622
Definition: navier_stokes_elements.h:395
void disable_ALE()
Definition: navier_stokes_elements.h:909
virtual unsigned u_index_nst(const unsigned &i) const
Definition: navier_stokes_elements.h:866
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Compute the element's residual Vector.
Definition: navier_stokes_elements.h:1260
void interpolated_u_nst(const Vector< double > &s, Vector< double > &veloc) const
Compute vector of FE interpolated velocity u at local coordinate s.
Definition: navier_stokes_elements.h:1505
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: navier_stokes_elements.h:1283
void enable_ALE()
Definition: navier_stokes_elements.h:918
void compute_norm(double &norm)
Compute norm of solution: square of the L2 norm of the velocities.
Definition: navier_stokes_elements.cc:186
virtual double interpolated_p_nst(const Vector< double > &s) const
Return FE interpolated pressure at local coordinate s.
Definition: navier_stokes_elements.h:1639
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: navier_stokes_elements.h:1273
Definition: elements.h:3439
Definition: advection_diffusion_reaction_elements.h:664
Definition: navier_stokes_elements.h:1749
unsigned P_nst_internal_index
Definition: navier_stokes_elements.h:1757
Definition: Qelements.h:459
RealScalar s
Definition: level1_cplx_impl.h:130
int * m
Definition: level2_cplx_impl.h:294
#define DIM
Definition: linearised_navier_stokes_elements.h:44
void gravity(const double &t, const Vector< double > &xi, Vector< double > &b)
Definition: ConstraintElementsUnitTest.cpp:20
int error
Definition: calibrate.py:297
Definition: MortaringCantileverCompareToNonMortaring.cpp:176
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
list x
Definition: plotDoE.py:28
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2