70 unsigned n_node = this->
nnode();
73 const unsigned m_index =
M_index;
85 for(
unsigned l=0;l<n_node;l++)
97 unsigned n_node = this->
nnode();
112 for(
unsigned l=0;l<n_node;l++)
131 return (1.0 + Beta*
log(1.0-
C));
139 return (-Beta/(1.0 -
C));
157 const double Bi = this->
bi();
158 const double K = this->
k();
159 return Bi*(
K*C_bulk*(1.0 -
C) -
C);
166 const double Bi = this->
bi();
167 const double K = this->
k();
168 return Bi*
K*(1.0 -
C);
175 const double Bi = this->
bi();
176 const double K = this->
k();
177 return -Bi*(
K*C_bulk + 1.0);
187 const unsigned &flag,
199 residuals,jacobian,flag,psif,dpsifds,dpsifdS, dpsifdS_div,
s,
205 unsigned n_node = this->
nnode();
208 int local_eqn = 0, local_unknown = 0;
219 for(
unsigned l=0;l<n_node;l++)
221 const double psi_ = psif(l);
236 for(
unsigned l=0;l<n_node;l++)
251 for(
unsigned l2=0;l2<n_node;l2++)
256 if(local_unknown >= 0)
258 jacobian(local_eqn,local_unknown) -=
259 Beta_b*dflux_dC_bulk*psif(l2)*psif(l)*
W*
J;
264 if(local_unknown >= 0)
266 jacobian(local_eqn,local_unknown) -=
Beta_b*dflux_dC*psif(l2)*psif(l)*
W*
J;
275 for(
unsigned l=0;l<n_node;l++)
284 residuals[local_eqn] -=
flux*psif(l)*
W*
J;
290 for(
unsigned l2=0;l2<n_node;l2++)
295 if(local_unknown >=0)
298 jacobian(local_eqn,local_unknown) -=
299 dflux_dC*psif(l2)*psif(l)*
W*
J;
305 if(local_unknown >= 0)
307 jacobian(local_eqn,local_unknown) -=
308 dflux_dC_bulk*psif(l2)*psif(l)*
W*
J;
381 const unsigned n_node = this->
nnode();
403 double scale = (this->
node_pt(n_node-1)->
x(0) - this->
node_pt(0)->
x(0))/2.0;
406 for(
unsigned ipt=0;ipt<n_intpt;ipt++)
421 for(
unsigned l=0;l<n_node;l++)
423 const double psi_ = psif(l);
425 for(
unsigned i=0;
i<n_dim;
i++)
444 const unsigned n_node = this->
nnode();
462 double integral = 0.0;
465 for(
unsigned ipt=0;ipt<n_intpt;ipt++)
483 for(
unsigned l=0;l<n_node;l++)
485 const double psi_ = psif(l);
498 void output(std::ostream &outfile,
const unsigned &n_plot)
504 outfile <<
"ZONE I=" << n_plot << std::endl;
507 for(
unsigned l=0;l<n_plot;l++)
509 s[0] = -1.0 + l*2.0/(n_plot-1);
515 outfile << 0.0 <<
" ";
524 << this->
bi()*(this->
k()*C_bulk*(1.0 -
C) -
C) << std::endl;
526 outfile << std::endl;
537 void output(FILE* file_pt,
const unsigned &n_plot)
564 const unsigned n_node = element_pt->
nnode();
566 for(
unsigned n=0;
n<n_node;
n++)
570 ->index_of_first_value_assigned_by_face_element(
id);
575 const unsigned C_bulk_index =
588 template<
class ELEMENT>
591 SolubleSurfactantTransportInterfaceElement,
592 LineDerivatives,ELEMENT>
606 template<
class ELEMENT>
619 template<
class ELEMENT>
622 SolubleSurfactantTransportInterfaceElement,
623 LineDerivatives,ELEMENT>
637 template<
class ELEMENT>
654 template<
class ELEMENT>
678 const unsigned n_node = this->
nnode();
680 const unsigned n_dof = this->
ndof();
693 for(
unsigned n=0;
n<n_node;
n++)
696 unsigned c_index = this->
C_index;
701 if(local_unknown >= 0)
707 double old_var = *value_pt;
710 *value_pt += fd_step;
716 for(
unsigned m=0;
m<n_dof;
m++)
718 double sum = (newres[
m] - residuals[
m])/fd_step;
720 jacobian(
m,local_unknown) = sum;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
Matrix< Scalar, Dynamic, Dynamic > C
Definition: bench_gemm.cpp:49
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Definition: advection_diffusion_reaction_elements.h:53
Definition: specific_node_update_interface_elements.h:55
double * value_pt(const unsigned &i) const
Definition: nodes.h:324
Specialise to the Line geometry.
Definition: soluble_surfactant_transport_equations.h:624
ElasticLineSolubleSurfactantTransportInterfaceElement(FiniteElement *const &element_pt, const int &face_index)
Definition: soluble_surfactant_transport_equations.h:627
Pseudo-elasticity version of the PointFluidInterfaceBoundingElement.
Definition: specific_node_update_interface_elements.h:1042
Definition: specific_node_update_interface_elements.h:676
int & face_index()
Definition: elements.h:4626
FiniteElement *& bulk_element_pt()
Pointer to higher-dimensional "bulk" element.
Definition: elements.h:4735
double interpolated_x(const Vector< double > &s, const unsigned &i) const
Definition: elements.h:4528
double J_eulerian(const Vector< double > &s) const
Definition: elements.cc:5242
Definition: elements.h:1313
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: elements.h:1735
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
double nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2593
virtual void output(std::ostream &outfile)
Definition: elements.h:3050
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 dim() const
Definition: elements.h:2611
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
double nodal_position(const unsigned &n, const unsigned &i) const
Definition: elements.h:2317
virtual void shape_at_knot(const unsigned &ipt, Shape &psi) const
Definition: elements.cc:3220
void setup_equation_indices(SolubleSurfactantTransportInterfaceElement *const &element_pt, const unsigned &id)
Definition: soluble_surfactant_transport_equations.h:560
unsigned nadditional_values(const unsigned &n)
Definition: soluble_surfactant_transport_equations.h:558
Definition: specific_node_update_interface_elements.h:72
double interpolated_u(const Vector< double > &s, const unsigned &i)
Calculate the i-th velocity component at the local coordinate s.
Definition: interface_elements.cc:442
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
void get_residuals(Vector< double > &residuals)
Definition: hijacked_elements.h:377
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
Definition: interface_elements.h:661
Definition: matrices.h:74
double & x(const unsigned &i)
Return the i-th nodal coordinate.
Definition: nodes.h:1060
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
Definition: nodes.h:1054
Definition: soluble_surfactant_transport_equations.h:43
double interpolated_C_bulk(const Vector< double > &s)
Get the bulk concentration.
Definition: soluble_surfactant_transport_equations.h:94
SolubleSurfactantTransportInterfaceElement()
Definition: soluble_surfactant_transport_equations.h:334
double *& ma_pt()
Access function for pointer to the Marangoni number.
Definition: soluble_surfactant_transport_equations.h:364
double dflux_from_bulk_dC_bulk(const double &C, const double &C_bulk)
Definition: soluble_surfactant_transport_equations.h:164
void output(FILE *file_pt)
Overload the C-style output function.
Definition: soluble_surfactant_transport_equations.h:534
void output(std::ostream &outfile)
Overload the output function.
Definition: soluble_surfactant_transport_equations.h:531
double ma()
Return the Marangoni number.
Definition: soluble_surfactant_transport_equations.h:354
double l2_norm_of_height(const double &h0)
Definition: soluble_surfactant_transport_equations.h:378
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: soluble_surfactant_transport_equations.h:320
double *& beta_b_pt()
Access function for pointer.
Definition: soluble_surfactant_transport_equations.h:373
double * Beta_b_pt
Pointer to beta.
Definition: soluble_surfactant_transport_equations.h:56
double flux_from_bulk(const double &C, const double &C_bulk)
Calculate the contribution to the jacobian.
Definition: soluble_surfactant_transport_equations.h:155
void add_additional_residual_contributions_interface(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag, const Shape &psif, const DShape &dpsifds, const DShape &dpsifdS, const DShape &dpsifdS_div, const Vector< double > &s, const Vector< double > &interpolated_x, const Vector< double > &interpolated_n, const double &W, const double &J)
Definition: soluble_surfactant_transport_equations.h:185
double bi()
Return the Biot number.
Definition: soluble_surfactant_transport_equations.h:351
double *& k_pt()
Access function for pointer to the reaction ratios.
Definition: soluble_surfactant_transport_equations.h:370
double k()
Return the reaction ratio.
Definition: soluble_surfactant_transport_equations.h:358
unsigned M_index
Index at which the micelle concentration is stored at the nodes.
Definition: soluble_surfactant_transport_equations.h:62
double integrated_C()
Definition: soluble_surfactant_transport_equations.h:441
double *& bi_pt()
Access function for pointer to the Biot number.
Definition: soluble_surfactant_transport_equations.h:367
double interpolated_M(const Vector< double > &s)
Get the micelle concentration.
Definition: soluble_surfactant_transport_equations.h:67
double dflux_from_bulk_dC(const double &C, const double &C_bulk)
Definition: soluble_surfactant_transport_equations.h:173
double * Ma_pt
Pointer to a Marangoni number.
Definition: soluble_surfactant_transport_equations.h:50
void set_c_bulk_index(const unsigned &c_bulk_index)
Definition: soluble_surfactant_transport_equations.h:347
double beta_b()
Definition: soluble_surfactant_transport_equations.h:361
double * K_pt
Pointer to the reaction ratios.
Definition: soluble_surfactant_transport_equations.h:53
double * Bi_pt
Pointer to a Biot number.
Definition: soluble_surfactant_transport_equations.h:47
double dsigma_dC(const Vector< double > &s)
Definition: soluble_surfactant_transport_equations.h:135
unsigned C_bulk_index
Index at which the bulk concentration is stored at the nodes.
Definition: soluble_surfactant_transport_equations.h:59
void output(std::ostream &outfile, const unsigned &n_plot)
Definition: soluble_surfactant_transport_equations.h:498
double sigma(const Vector< double > &s)
Definition: soluble_surfactant_transport_equations.h:124
Specialise to the Line geometry.
Definition: soluble_surfactant_transport_equations.h:593
SpineLineSolubleSurfactantTransportInterfaceElement(FiniteElement *const &element_pt, const int &face_index)
Definition: soluble_surfactant_transport_equations.h:596
Spine version of the PointFluidInterfaceBoundingElement.
Definition: specific_node_update_interface_elements.h:425
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Calculate the elemental residual vector and the Jacobian.
Definition: specific_node_update_interface_elements.h:459
Old Implementation. Should ultimately be deleted.
Definition: soluble_surfactant_transport_equations.h:658
unsigned C_index
Definition: soluble_surfactant_transport_equations.h:659
SpinePointMarangoniSurfactantFluidInterfaceBoundingElement()
Constructor.
Definition: soluble_surfactant_transport_equations.h:664
unsigned & c_index_interface_boundary()
Definition: soluble_surfactant_transport_equations.h:732
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Calculate the elemental residual vector and the Jacobian.
Definition: soluble_surfactant_transport_equations.h:669
Definition: specific_node_update_interface_elements.h:156
Definition: surfactant_transport_elements.h:49
Vector< unsigned > C_index
Definition: surfactant_transport_elements.h:63
double beta()
Return the Elasticity number.
Definition: surfactant_transport_elements.h:135
double interpolated_C(const Vector< double > &s)
Get the surfactant concentration.
Definition: surfactant_transport_elements.cc:40
void set_c_index(const Vector< unsigned > &c_index)
Definition: surfactant_transport_elements.h:129
void add_additional_residual_contributions_interface(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag, const Shape &psif, const DShape &dpsifds, const DShape &dpsifdS, const DShape &dpsifdS_div, const Vector< double > &s, const Vector< double > &interpolated_x, const Vector< double > &interpolated_n, const double &W, const double &J)
Definition: surfactant_transport_elements.cc:121
static double Default_Physical_Constant_Value
Default value of the physical constants.
Definition: surfactant_transport_elements.h:67
RealScalar s
Definition: level1_cplx_impl.h:130
int * m
Definition: level2_cplx_impl.h:294
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 log(const bfloat16 &a)
Definition: BFloat16.h:618
double Bi
Biot number.
Definition: thermal_fibre.cc:85
double Beta
Definition: ff_step.cc:156
double K
Wave number.
Definition: sphere_scattering.cc:115
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59
double Beta_b
Definition: refineable_two_layer_soluble_surfactant.cc:151
@ W
Definition: quadtree.h:63
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
unsigned el_dim
dimension
Definition: overloaded_cartesian_element_body.h:30