![]() |
|
#include <womersley_elements.h>
Public Member Functions | |
ImposeFluxForWomersleyElement (Mesh *womersley_mesh_pt, double *prescribed_flux_pt) | |
Data * | pressure_gradient_data_pt () |
double | total_volume_flux () |
Get volume flux through all Womersley elements. More... | |
void | get_residuals (Vector< double > &residuals) |
void | get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
![]() | |
GeneralisedElement () | |
Constructor: Initialise all pointers and all values to zero. More... | |
virtual | ~GeneralisedElement () |
Virtual destructor to clean up any memory allocated by the object. More... | |
GeneralisedElement (const GeneralisedElement &)=delete | |
Broken copy constructor. More... | |
void | operator= (const GeneralisedElement &)=delete |
Broken assignment operator. More... | |
Data *& | internal_data_pt (const unsigned &i) |
Return a pointer to i-th internal data object. More... | |
Data *const & | internal_data_pt (const unsigned &i) const |
Return a pointer to i-th internal data object (const version) More... | |
Data *& | external_data_pt (const unsigned &i) |
Return a pointer to i-th external data object. More... | |
Data *const & | external_data_pt (const unsigned &i) const |
Return a pointer to i-th external data object (const version) More... | |
unsigned long | eqn_number (const unsigned &ieqn_local) const |
int | local_eqn_number (const unsigned long &ieqn_global) const |
unsigned | add_external_data (Data *const &data_pt, const bool &fd=true) |
bool | external_data_fd (const unsigned &i) const |
void | exclude_external_data_fd (const unsigned &i) |
void | include_external_data_fd (const unsigned &i) |
void | flush_external_data () |
Flush all external data. More... | |
void | flush_external_data (Data *const &data_pt) |
Flush the object addressed by data_pt from the external data array. More... | |
unsigned | ninternal_data () const |
Return the number of internal data objects. More... | |
unsigned | nexternal_data () const |
Return the number of external data objects. More... | |
unsigned | ndof () const |
Return the number of equations/dofs in the element. More... | |
void | dof_vector (const unsigned &t, Vector< double > &dof) |
Return the vector of dof values at time level t. More... | |
void | dof_pt_vector (Vector< double * > &dof_pt) |
Return the vector of pointers to dof values. More... | |
void | set_internal_data_time_stepper (const unsigned &i, TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
void | assign_internal_eqn_numbers (unsigned long &global_number, Vector< double * > &Dof_pt) |
void | describe_dofs (std::ostream &out, const std::string ¤t_string) const |
virtual void | describe_local_dofs (std::ostream &out, const std::string ¤t_string) const |
void | add_internal_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt) |
virtual void | assign_local_eqn_numbers (const bool &store_local_dof_pt) |
virtual void | complete_setup_of_dependencies () |
virtual void | get_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix) |
virtual void | get_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix) |
virtual void | get_dresiduals_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam) |
virtual void | get_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) |
virtual void | get_djacobian_and_dmass_matrix_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam) |
virtual void | get_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product) |
virtual void | get_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product) |
virtual void | get_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector) |
virtual unsigned | self_test () |
virtual void | compute_norm (Vector< double > &norm) |
virtual void | compute_norm (double &norm) |
virtual unsigned | ndof_types () const |
virtual void | get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const |
Private Attributes | |
Mesh * | Womersley_mesh_pt |
Pointer to mesh that contains the Womersley elements. More... | |
Data * | Pressure_gradient_data_pt |
double * | Prescribed_flux_pt |
Pointer to current value of prescribed flux. More... | |
//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// Element to impose volume flux through collection of Womersley elements, in exchange for treating the pressure gradient as an unknown. The pressure gradient is created (as a single-valued Data item) in the constructor for this element which also takes a pointer to the Mesh containing the Womersley elements whose total flux is being controlled. While doing this we tell them that their pressure gradient is now an unknown and must be treated as external Data.
|
inline |
Constructor: Pass pointer to mesh that contains the Womersley elements whose volume flux is controlled, and pointer to double that contains the instantaneous value of the prescribed flux
References oomph::GeneralisedElement::add_internal_data(), e(), oomph::Mesh::element_pt(), oomph::Mesh::nelement(), oomph::ImposeFluxForWomersleyElement< DIM >::Pressure_gradient_data_pt, oomph::WomersleyEquations< DIM >::set_pressure_gradient_and_add_as_external_data(), oomph::Data::set_value(), and oomph::ImposeFluxForWomersleyElement< DIM >::Womersley_mesh_pt.
|
inlinevirtual |
Compute element residual Vector and element Jacobian matrix Note: Jacobian is zero because the derivatives w.r.t. to velocity dofs are added by the Womersley elements; the current element's internal Data (the pressure gradient) does not feature in the volume constraint.
Reimplemented from oomph::GeneralisedElement.
References oomph::ImposeFluxForWomersleyElement< DIM >::get_residuals(), i, j, and oomph::GeneralisedElement::ndof().
|
inlinevirtual |
Compute residual vector: the volume flux constraint determines this element's one-and-only internal Data which represents the pressure gradient
Reimplemented from oomph::GeneralisedElement.
References oomph::GeneralisedElement::internal_local_eqn(), and oomph::ImposeFluxForWomersleyElement< DIM >::total_volume_flux().
Referenced by oomph::ImposeFluxForWomersleyElement< DIM >::get_jacobian().
|
inline |
Read-only access to the single-valued Data item that stores the pressure gradient (to be determined via the flux control)
References oomph::ImposeFluxForWomersleyElement< DIM >::Pressure_gradient_data_pt.
|
inline |
Get volume flux through all Womersley elements.
References e(), oomph::Mesh::element_pt(), ProblemParameters::flux(), oomph::WomersleyEquations< DIM >::get_volume_flux(), oomph::Mesh::nelement(), and oomph::ImposeFluxForWomersleyElement< DIM >::Womersley_mesh_pt.
Referenced by oomph::ImposeFluxForWomersleyElement< DIM >::get_residuals().
|
private |
Pointer to current value of prescribed flux.
|
private |
Data item whose one and only value contains the pressure gradient
Referenced by oomph::ImposeFluxForWomersleyElement< DIM >::ImposeFluxForWomersleyElement(), and oomph::ImposeFluxForWomersleyElement< DIM >::pressure_gradient_data_pt().
|
private |
Pointer to mesh that contains the Womersley elements.
Referenced by oomph::ImposeFluxForWomersleyElement< DIM >::ImposeFluxForWomersleyElement(), and oomph::ImposeFluxForWomersleyElement< DIM >::total_volume_flux().