27 #ifndef OOMPH_YOUNGLAPLACE_ELEMENTS_HEADER
28 #define OOMPH_YOUNGLAPLACE_ELEMENTS_HEADER
33 #include <oomph-lib-config.h>
38 #include "../generic/nodes.h"
39 #include "../generic/Qelements.h"
84 virtual inline double u(
const unsigned&
n)
const
98 void output(std::ostream& outfile,
const unsigned& n_plot);
103 const unsigned& n_plot,
111 std::ostream& outfile,
112 const unsigned& n_plot,
116 throw OomphLibError(
"These equations are steady => no time dependence",
135 throw OomphLibError(
"These equations are steady => no time dependence",
211 unsigned n_node =
nnode();
221 for (
unsigned j = 0;
j < 2;
j++)
227 for (
unsigned l = 0; l < n_node; l++)
230 for (
unsigned j = 0;
j < 2;
j++)
232 flux[
j] +=
u(l) * dpsidx(l,
j);
250 for (
unsigned i = 0;
i < 3;
i++)
252 spine_base[
i] =
x[
i];
253 for (
unsigned j = 0;
j < 2;
j++)
255 dspine_base[
i][
j] = 0.0;
262 (*Spine_base_fct_pt)(
x, spine_base, dspine_base);
278 for (
unsigned i = 0;
i < 3;
i++)
281 for (
unsigned j = 0;
j < 2;
j++)
292 (*Spine_fct_pt)(
x, spine, dspine);
312 unsigned n_node =
nnode();
324 for (
unsigned l = 0; l < n_node; l++)
344 for (
unsigned i = 0;
i < n_rows;
i++)
347 for (
unsigned j = 0;
j < n_cols;
j++)
359 unsigned n =
v.size();
360 for (
unsigned i = 0;
i <
n;
i++)
371 unsigned n =
v.size();
372 for (
unsigned i = 0;
i <
n;
i++)
385 unsigned n =
v1.size();
386 for (
unsigned i = 0;
i <
n;
i++)
399 if ((
v1.size() !=
v2.size()) || (
v1.size() != 3))
401 throw OomphLibError(
"Vectors must be of dimension 3 for cross-product!",
406 v_cross[0] =
v1[1] *
v2[2] -
v1[2] *
v2[1];
407 v_cross[1] =
v1[2] *
v2[0] -
v1[0] *
v2[2];
408 v_cross[2] =
v1[0] *
v2[1] -
v1[1] *
v2[0];
416 unsigned n =
v1.size();
417 for (
unsigned i = 0;
i <
n;
i++)
459 template<
unsigned NNODE_1D>
494 void output(std::ostream& outfile,
const unsigned& n_plot)
502 const unsigned& n_plot,
512 const unsigned& n_plot,
532 template<
unsigned NNODE_1D>
534 :
public virtual QElement<1, NNODE_1D>
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
cout<< "The eigenvalues of A are:"<< endl<< ces.eigenvalues()<< endl;cout<< "The matrix of eigenvectors, V, is:"<< endl<< ces.eigenvectors()<< endl<< endl;complex< float > lambda
Definition: ComplexEigenSolver_compute.cpp:9
Map< RowVectorXf > v2(M2.data(), M2.size())
M1<< 1, 2, 3, 4, 5, 6, 7, 8, 9;Map< RowVectorXf > v1(M1.data(), M1.size())
unsigned nvalue() const
Return number of values stored in data object (incl pinned ones).
Definition: nodes.h:483
double value(const unsigned &i) const
Definition: nodes.h:293
FaceGeometry()
Definition: young_laplace_elements.h:539
Definition: elements.h:4998
Definition: elements.h:1313
double nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2593
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
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Definition: elements.h:1759
void(* UnsteadyExactSolutionFctPt)(const double &, const Vector< double > &, Vector< double > &)
Definition: elements.h:1765
double dshape_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3298
Definition: elements.h:73
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
Definition: elements.h:622
unsigned add_external_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:307
int internal_local_eqn(const unsigned &i, const unsigned &j) const
Definition: elements.h:267
unsigned add_internal_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:62
Definition: young_laplace_elements.h:556
void assign_additional_local_eqn_numbers()
Setup local equation number for the height-control equation.
Definition: young_laplace_elements.h:588
unsigned Curvature_data_index
Definition: young_laplace_elements.h:616
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Definition: young_laplace_elements.h:601
Node * Control_node_pt
Pointer to node at which the height is controlled.
Definition: young_laplace_elements.h:612
double * Prescribed_height_pt
Pointer to value that stores the controlled height.
Definition: young_laplace_elements.h:609
HeightControlElement(Node *control_node_pt, double *prescribed_height_pt)
Definition: young_laplace_elements.h:561
Data *& kappa_pt()
Definition: young_laplace_elements.h:582
unsigned Height_ctrl_local_eqn
Local equation number of the height-control equation.
Definition: young_laplace_elements.h:619
double value(const unsigned &i) const
Definition: nodes.cc:2408
Definition: oomph_definitions.h:222
Definition: Qelements.h:459
Definition: young_laplace_elements.h:462
QYoungLaplaceElement()
Definition: young_laplace_elements.h:471
QYoungLaplaceElement(const QYoungLaplaceElement< NNODE_1D > &dummy)=delete
Broken copy constructor.
void output(std::ostream &outfile, const unsigned &n_plot)
Output function at n_plot^2 plot points.
Definition: young_laplace_elements.h:494
void output_fct(std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output function for an exact solutio at n_plot^2 plot points.
Definition: young_laplace_elements.h:501
static const unsigned Initial_Nvalue[]
Definition: young_laplace_elements.h:466
void operator=(const QYoungLaplaceElement< NNODE_1D > &)=delete
Broken assignment operator.
unsigned required_nvalue(const unsigned &n) const
Definition: young_laplace_elements.h:481
void output(std::ostream &outfile)
Output function.
Definition: young_laplace_elements.h:487
void output_fct(std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
Definition: young_laplace_elements.h:511
Definition: young_laplace_elements.h:58
SpineBaseFctPt & spine_base_fct_pt()
Definition: young_laplace_elements.h:158
static double two_norm(const Vector< double > &v)
2-norm of a vector
Definition: young_laplace_elements.h:368
static void scalar_times_vector(const double &lambda, const Vector< double > &v, Vector< double > &lambda_times_v)
Multiply a vector by a scalar.
Definition: young_laplace_elements.h:355
void(* SpineBaseFctPt)(const Vector< double > &x, Vector< double > &spine_base, Vector< Vector< double >> &dspine_base)
Function pointer to "spine base" function.
Definition: young_laplace_elements.h:61
void set_kappa(Data *kappa_pt)
Set curvature data (and add it to the element's external Data)
Definition: young_laplace_elements.h:172
static double scalar_product(const Vector< double > &v1, const Vector< double > &v2)
Scalar product between two vectors.
Definition: young_laplace_elements.h:381
double interpolated_u(const Vector< double > &s) const
Return FE representation of function value u(s) at local coordinate s.
Definition: young_laplace_elements.h:309
void compute_error(std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
Dummy, time dependent error checker.
Definition: young_laplace_elements.h:129
virtual void output_fct(std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
Definition: young_laplace_elements.h:110
unsigned self_test()
Self-test: Return 0 for OK.
Definition: young_laplace_elements.cc:367
static void allocate_vector_of_vectors(unsigned n_rows, unsigned n_cols, Vector< Vector< double >> &v)
Definition: young_laplace_elements.h:339
virtual int u_local_eqn(const unsigned &n)
Definition: young_laplace_elements.h:427
void output_fct(std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output exact soln at n_plot^2 plot points.
Definition: young_laplace_elements.cc:489
void compute_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
Get error against and norm of exact solution.
Definition: young_laplace_elements.cc:542
SpineFctPt & spine_fct_pt()
Definition: young_laplace_elements.h:166
void output(std::ostream &outfile)
Output with default number of plot points.
Definition: young_laplace_elements.h:90
void exact_position(const Vector< double > &s, Vector< double > &r, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Get exact position vector to meniscus at local coordinate s.
Definition: young_laplace_elements.cc:48
void(* SpineFctPt)(const Vector< double > &x, Vector< double > &spine, Vector< Vector< double >> &dspine)
Function pointer to "spine" function.
Definition: young_laplace_elements.h:66
YoungLaplaceEquations()
Definition: young_laplace_elements.h:72
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Add the element's contribution to its residual vector.
Definition: young_laplace_elements.cc:136
virtual void get_spine_base(const Vector< double > &x, Vector< double > &spine_base, Vector< Vector< double >> &dspine_base) const
Definition: young_laplace_elements.h:241
virtual double u(const unsigned &n) const
Definition: young_laplace_elements.h:84
double get_kappa() const
Get curvature.
Definition: young_laplace_elements.h:192
void get_spine(const Vector< double > &x, Vector< double > &spine, Vector< Vector< double >> &dspine) const
Definition: young_laplace_elements.h:269
bool use_spines() const
Definition: young_laplace_elements.h:151
void position(const Vector< double > &s, Vector< double > &r) const
Get position vector to meniscus at local coordinate s.
Definition: young_laplace_elements.cc:93
unsigned Kappa_index
Index of Kappa_pt in the element's storage of external Data.
Definition: young_laplace_elements.h:433
static void cross_product(const Vector< double > &v1, const Vector< double > &v2, Vector< double > &v_cross)
Cross-product: v_cross= v1 x v2.
Definition: young_laplace_elements.h:394
Data * Kappa_pt
Definition: young_laplace_elements.h:446
SpineFctPt Spine_fct_pt
Pointer to spine function:
Definition: young_laplace_elements.h:439
void operator=(const YoungLaplaceEquations &)=delete
Broken assignment operator.
void get_flux(const Vector< double > &s, Vector< double > &flux) const
Get flux: flux[i] = du/dx_i: Mainly used for error estimation.
Definition: young_laplace_elements.h:208
SpineBaseFctPt Spine_base_fct_pt
Pointer to spine base function:
Definition: young_laplace_elements.h:436
Data * kappa_pt()
Definition: young_laplace_elements.h:144
YoungLaplaceEquations(const YoungLaplaceEquations &dummy)=delete
Broken copy constructor.
static void vector_sum(const Vector< double > &v1, const Vector< double > &v2, Vector< double > &vs)
Vectorial sum of two vectors.
Definition: young_laplace_elements.h:412
RealScalar s
Definition: level1_cplx_impl.h:130
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59
int error
Definition: calibrate.py:297
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
list x
Definition: plotDoE.py:28
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2