30#ifndef CONSTRAINED_FLUID_VOLUME_ELEMENTS_HEADER
31#define CONSTRAINED_FLUID_VOLUME_ELEMENTS_HEADER
35#include <oomph-lib-config.h>
39#include "generic/Qelements.h"
40#include "generic/spines.h"
41#include "../axisym_navier_stokes/axisym_navier_stokes_elements.h"
368 template<
class ELEMENT>
371 public virtual FaceGeometry<ELEMENT>
404 const unsigned&
i)
const
406 return FaceElement::zeta_nodal(
n, k,
i);
420 template<
class ELEMENT>
423 public virtual SpineElement<FaceGeometry<ELEMENT>>
430 : SpineElement<FaceGeometry<
ELEMENT>>(),
457 const unsigned&
i)
const
459 return FaceElement::zeta_nodal(
n, k,
i);
545 for (
unsigned i = 0;
i < 2;
i++)
571 for (
unsigned k = 0; k < 2; k++)
601 template<
class ELEMENT>
604 public virtual FaceGeometry<ELEMENT>
637 const unsigned&
i)
const
639 return FaceElement::zeta_nodal(
n, k,
i);
654 template<
class ELEMENT>
657 public virtual SpineElement<FaceGeometry<ELEMENT>>
664 : SpineElement<FaceGeometry<
ELEMENT>>(),
691 const unsigned&
i)
const
693 return FaceElement::zeta_nodal(
n, k,
i);
752 template<
class ELEMENT>
755 public virtual FaceGeometry<ELEMENT>
790 const unsigned&
i)
const
792 return FaceElement::zeta_nodal(
n, k,
i);
812 template<
class ELEMENT>
815 public virtual SpineElement<FaceGeometry<ELEMENT>>
822 : SpineElement<FaceGeometry<
ELEMENT>>(),
850 const unsigned&
i)
const
852 return FaceElement::zeta_nodal(
n, k,
i);
Deform the existing cubic spine mesh into a annular section with spines directed radially inwards fro...
Axisymmetric (one-dimensional) interface elements that allow the application of a volume constraint o...
void fill_in_generic_residual_contribution_volume_constraint(Vector< double > &residuals)
Helper function to fill in contributions to residuals (remember that part of the residual is added by...
double contribution_to_enclosed_volume()
Return this element's contribution to the total volume enclosed.
AxisymmetricVolumeConstraintBoundingElement()
Empty Contructor.
double contribution_to_volume_flux()
Return this element's contribution to the volume flux over the boundary.
~AxisymmetricVolumeConstraintBoundingElement()
Empty Destructor.
The axisymmetric (one-dimensional) interface elements that allow imposition of a volume constraint sp...
ElasticAxisymmetricVolumeConstraintBoundingElement(FiniteElement *const &element_pt, const int &face_index)
Contructor: Specify bulk element and index of face to which this face element is to be attached.
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
The "global" intrinsic coordinate of the element when viewed as part of a geometric object should be ...
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Fill in contribution to residuals and Jacobian. This is specific to solid-based elements in which der...
The one-dimensional interface elements that allow imposition of a volume constraint specialised for t...
ElasticLineVolumeConstraintBoundingElement(FiniteElement *const &element_pt, const int &face_index)
Contructor: Specify bulk element and index of face to which this face element is to be attached.
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Fill in contribution to residuals and Jacobian. This is specific to solid-based elements in which der...
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
The "global" intrinsic coordinate of the element when viewed as part of a geometric object should be ...
The Two-dimensional interface elements that allow the application of a volume constraint specialised ...
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Fill in contribution to residuals and Jacobian. This is specific to solid-based elements in which der...
ElasticSurfaceVolumeConstraintBoundingElement(FiniteElement *const &element_pt, const int &face_index)
Contructor: Specify bulk element and index of face to which this face element is to be attached.
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
The "global" intrinsic coordinate of the element when viewed as part of a geometric object should be ...
One-dimensional interface elements that allow the application of a volume constraint on the region bo...
void fill_in_generic_residual_contribution_volume_constraint(Vector< double > &residuals)
Helper function to fill in contributions to residuals (remember that part of the residual is added by...
double contribution_to_enclosed_volume()
Return this element's contribution to the total volume enclosed.
LineVolumeConstraintBoundingElement()
Empty Contructor.
~LineVolumeConstraintBoundingElement()
Empty Destructor.
The axisymmetric (one-dimensional) interface elements that allow imposition of a volume constraint sp...
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Fill in contribution to residuals and Jacobian. This is specific to spine based elements in which the...
SpineAxisymmetricVolumeConstraintBoundingElement(FiniteElement *const &element_pt, const int &face_index)
Contructor: Specify bulk element and index of face to which this face element is to be attached.
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
The "global" intrinsic coordinate of the element when viewed as part of a geometric object should be ...
The one-dimensional interface elements that allow imposition of a volume constraint specialised for t...
SpineLineVolumeConstraintBoundingElement(FiniteElement *const &element_pt, const int &face_index)
Contructor: Specify bulk element and index of face to which this face element is to be attached.
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Fill in contribution to residuals and Jacobian. This is specific to spine based elements in which the...
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
The "global" intrinsic coordinate of the element when viewed as part of a geometric object should be ...
The Two-dimensional interface elements that allow the application of a volume constraint specialised ...
SpineSurfaceVolumeConstraintBoundingElement(FiniteElement *const &element_pt, const int &face_index)
Contructor: Specify bulk element and index of face to which this face element is to be attached.
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Fill in contribution to residuals and Jacobian. This is specific to spine based elements in which the...
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
The "global" intrinsic coordinate of the element when viewed as part of a geometric object should be ...
Two-dimensional interface elements that allow the application of a volume constraint on the region bo...
SurfaceVolumeConstraintBoundingElement()
Empty Contructor.
void fill_in_generic_residual_contribution_volume_constraint(Vector< double > &residuals)
Helper function to fill in contributions to residuals (remember that part of the residual is added by...
~SurfaceVolumeConstraintBoundingElement()
Empty Desctructor.
Base class for interface elements that allow the application of a volume constraint on the region bou...
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Fill in contribution to residuals and Jacobian.
void set_volume_constraint_element(VolumeConstraintElement *const &vol_constraint_el_pt, const bool &check_nodal_data=true)
Set the "master" volume constraint element The setup here is a bit more complicated than one might ex...
unsigned Index_of_traded_pressure_value
Index of the value in traded pressure data that corresponds to the traded pressure.
VolumeConstraintBoundingElement()
Constructor initialise the boolean flag We expect the traded pressure data to be stored externally.
~VolumeConstraintBoundingElement()
Empty Destructor.
virtual void fill_in_generic_residual_contribution_volume_constraint(Vector< double > &residuals)=0
Helper function to fill in contributions to residuals (remember that part of the residual is added by...
bool Traded_pressure_stored_at_node
Boolean to indicate whether the traded pressure is stored externally or at a node (this can happen in...
int ptraded_local_eqn()
The local eqn number for the traded pressure.
unsigned Data_number_of_traded_pressure
The Data that contains the traded pressure is usually stored as external Data for this element,...
A class that is used to implement the constraint that the fluid volume in a region bounded by associa...
void fill_in_generic_contribution_to_residuals_volume_constraint(Vector< double > &residuals)
Fill in the residuals for the volume constraint.
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Fill in the residuals for the volume constraint.
~VolumeConstraintElement()
Empty destructor.
unsigned Index_of_traded_pressure_value
Index of the value in traded pressure data that corresponds to the traded pressure.
unsigned External_or_internal_data_index_of_traded_pressure
The Data that contains the traded pressure is stored as external or internal Data for the element....
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Fill in the residuals and jacobian for the volume constraint.
double p_traded()
Return the traded pressure value.
bool Traded_pressure_stored_as_internal_data
The Data that contains the traded pressure is stored as external or internal Data for the element....
int ptraded_local_eqn()
The local eqn number for the traded pressure.
unsigned index_of_traded_pressure()
Return the index of Data object at which the traded pressure is stored.
double * Prescribed_volume_pt
Pointer to the desired value of the volume.
Data * p_traded_data_pt()
Access to Data that contains the traded pressure.
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Fill in the residuals, jacobian and mass matrix for the volume constraint.