![]() |
|
#include <flux_control_elements_bk.h>
Inheritance diagram for oomph::NetFluxControlElement< ELEMENT >:Public Member Functions | |
| NetFluxControlElement (Mesh *flux_control_mesh_pt, double *prescribed_outflow_value_pt) | |
| ~NetFluxControlElement () | |
| Empty Destructor - Data gets deleted automatically. More... | |
| NetFluxControlElement (const NetFluxControlElement &) | |
| Broken copy constructor. More... | |
| Data * | pressure_data_pt () const |
| void | fill_in_contribution_to_residuals (Vector< double > &residuals) |
| NetFluxControlElement (Mesh *flux_control_mesh_pt, double *prescribed_flux_value_pt) | |
| ~NetFluxControlElement () | |
| Empty Destructor - Data gets deleted automatically. More... | |
| NetFluxControlElement (const NetFluxControlElement &dummy)=delete | |
| Broken copy constructor. More... | |
| unsigned | dim () const |
| Broken assignment operator. More... | |
| Data * | pressure_data_pt () const |
| void | fill_in_contribution_to_residuals (Vector< double > &residuals) |
| void | fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
| unsigned | ndof_types () const |
| unsigned & | dof_number_for_unknown () |
| void | get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const |
Public Member Functions inherited from oomph::GeneralisedElement | |
| 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_residuals (Vector< double > &residuals) |
| virtual void | get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
| 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) |
Private Attributes | |
| Data * | Pressure_data_pt |
| Mesh * | Flux_control_mesh_pt |
| double * | Prescribed_outflow_value_pt |
| Pointer to the value that stores the prescribed outflow. More... | |
| double * | Prescribed_flux_value_pt |
| Pointer to the value that stores the prescribed flux. More... | |
| unsigned | Dof_number_for_unknown |
| unsigned | Dim |
| spatial dim of NS system More... | |
Additional Inherited Members | |
Static Public Attributes inherited from oomph::GeneralisedElement | |
| static bool | Suppress_warning_about_repeated_internal_data |
| static bool | Suppress_warning_about_repeated_external_data = true |
| static double | Default_fd_jacobian_step = 1.0e-8 |
Static Protected Attributes inherited from oomph::GeneralisedElement | |
| static DenseMatrix< double > | Dummy_matrix |
| static std::deque< double * > | Dof_pt_deque |
A class for the elements that applies a net fluid flux across a boundary by the imposition of an applied traction to the Navier–Stokes equations
/////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// A class for an element that controls the net fluid flux across a boundary by the imposition of an unknown applied pressure to the Navier-Stokes equations. This element is used with a mesh of NavierStokesFluxControlElement elements which are attached to the boundary. Note: fill_in_contribution_to_jacobian() does not calculate Jacobian contributions for this element as they are calculated by NavierStokesFluxControlElement::fill_in_contribution_to_jacobian(...)
|
inline |
Constructor, which takes a mesh of the face elements which will impose the pressure to control the flux
References oomph::GeneralisedElement::add_external_data(), oomph::GeneralisedElement::add_internal_data(), e(), oomph::Mesh::finite_element_pt(), oomph::NetFluxControlElement< ELEMENT >::Flux_control_mesh_pt, n, oomph::Mesh::nelement(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), and oomph::NetFluxControlElement< ELEMENT >::Pressure_data_pt.
|
inline |
|
inline |
Broken copy constructor.
References oomph::BrokenCopy::broken_copy().
|
inline |
Constructor takes a mesh of TemplateFreeNavierStokesFluxControlElementBase elements that impose the pressure to control the flux, plus a pointer to the double which contains the desired flux value
References oomph::GeneralisedElement::add_internal_data(), oomph::TemplateFreeNavierStokesFluxControlElementBase::add_pressure_data(), oomph::NetFluxControlElement< ELEMENT >::Dof_number_for_unknown, e(), oomph::Mesh::element_pt(), oomph::NetFluxControlElement< ELEMENT >::Flux_control_mesh_pt, oomph::Mesh::nelement(), and oomph::NetFluxControlElement< ELEMENT >::Pressure_data_pt.
|
inline |
|
delete |
Broken copy constructor.
|
inline |
Broken assignment operator.
Spatial dimension of the problem
References oomph::NetFluxControlElement< ELEMENT >::Dim.
|
inline |
Function to set / get the nodal value of the "DOF type" to which the degree of freedom in this element (the pressure that enforces the required volume flux!) is added to. This should be set to the Navier-Stokes pressure DOF type (usually the dimension of the problem, for example, in 3D, the DOF types for single-physics Navier-Stokes elements are usually labelled 0, 1, 2, 3 for u, v and w velocities and pressure respectively. It is important to note that this is dimension dependent, so should not be hard coded in!! In particularly, this should not simply be set to the dimension of the problem if there is further splitting of the velocity DOF types) if this element is added to a fluid mesh containing Navier-Stokes elements.
References oomph::NetFluxControlElement< ELEMENT >::Dof_number_for_unknown.
Referenced by CollapsibleChannelProblem< ELEMENT >::setup_outflow_flux_control_elements().
|
inlinevirtual |
This function returns the residuals, but adds nothing to the Jacobian as this element's Jacobian contributions are calculated by the NavierStokesFluxControlElements which impose the traction used to control the flux.
Reimplemented from oomph::GeneralisedElement.
References oomph::NetFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_flux_control().
|
inlinevirtual |
Add the element's contribution to its residual vector: The flow constraint. [Note: Jacobian is computed automatically by finite-differencing]
Reimplemented from oomph::GeneralisedElement.
References e(), oomph::Mesh::element_pt(), oomph::NetFluxControlElement< ELEMENT >::Flux_control_mesh_pt, oomph::NavierStokesFluxControlElement< ELEMENT >::get_volume_flux(), oomph::Mesh::nelement(), and oomph::NetFluxControlElement< ELEMENT >::Prescribed_outflow_value_pt.
|
inlinevirtual |
Add the element's contribution to its residual vector: i.e. the flux constraint.
Reimplemented from oomph::GeneralisedElement.
References oomph::NetFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_flux_control().
|
inlineprotected |
This function returns the residuals for the flux control master element.
References e(), oomph::Mesh::element_pt(), oomph::NetFluxControlElement< ELEMENT >::Flux_control_mesh_pt, oomph::TemplateFreeNavierStokesFluxControlElementBase::get_volume_flux(), oomph::Mesh::nelement(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::NetFluxControlElement< ELEMENT >::Prescribed_flux_value_pt.
Referenced by oomph::NetFluxControlElement< ELEMENT >::fill_in_contribution_to_jacobian(), and oomph::NetFluxControlElement< ELEMENT >::fill_in_contribution_to_residuals().
|
inlinevirtual |
Create a list of pairs for all unknowns in this element, so that the first entry in each pair contains the global equation number of the unknown, while the second one contains the number of the "DOF type" that this unknown is associated with. (Function can obviously only be called if the equation numbering scheme has been set up.) The single degree of freedom is given the DOF type number of Dof_number_for_unknown since it's expected this unknown is added to the Navier-Stokes pressure DOF block (it is also assumed that the user has set the Dof_number_for_unknown variable to the velocity DOF type using the function dof_number_for_unknown()).
Reimplemented from oomph::GeneralisedElement.
Reimplemented in oomph::NetFluxControlElementForWomersleyPressureControl.
References oomph::NetFluxControlElement< ELEMENT >::Dof_number_for_unknown, oomph::GeneralisedElement::eqn_number(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inlinevirtual |
The number of "DOF types" that degrees of freedom in this element are sub-divided into - it's set to Dof_number_for_unknown+1 because it's expected this element is added to a fluid mesh containing navier stokes elements
Reimplemented from oomph::GeneralisedElement.
Reimplemented in oomph::NetFluxControlElementForWomersleyPressureControl.
References oomph::NetFluxControlElement< ELEMENT >::Dof_number_for_unknown, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inline |
Function return pointer to the Data object whose single value is the pressure applied by the elements in Flux_control_mesh_pt
References oomph::NetFluxControlElement< ELEMENT >::Pressure_data_pt.
Referenced by UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_parallel_flow_lagrange_elements(), oomph::NetFluxControlElementForWomersleyPressureControl::NetFluxControlElementForWomersleyPressureControl(), and CollapsibleChannelProblem< ELEMENT >::setup_outflow_flux_control_elements().
|
inline |
Function to return a pointer to the Data object whose single value is the pressure applied by the NavierStokesFluxControlElement elements
References oomph::NetFluxControlElement< ELEMENT >::Pressure_data_pt.
|
private |
spatial dim of NS system
Referenced by oomph::NetFluxControlElement< ELEMENT >::dim().
|
private |
The id number of the "DOF type" to which the degree of freedom in this element is added to. This should be set to the number id of the Navier-Stokes pressure DOF block (which is dimension dependent!) if this element is added to a fluid mesh containing navier stokes elements
Referenced by oomph::NetFluxControlElement< ELEMENT >::dof_number_for_unknown(), oomph::NetFluxControlElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::NetFluxControlElement< ELEMENT >::ndof_types(), and oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement().
|
private |
Mesh of elements which impose a pressure which controls the net flux
Mesh of elements which impose the pressure which controls the net flux
Referenced by oomph::NetFluxControlElement< ELEMENT >::fill_in_contribution_to_residuals(), oomph::NetFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_flux_control(), and oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement().
|
private |
Pointer to the value that stores the prescribed flux.
Referenced by oomph::NetFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_flux_control().
|
private |
Pointer to the value that stores the prescribed outflow.
Referenced by oomph::NetFluxControlElement< ELEMENT >::fill_in_contribution_to_residuals().
|
private |
The number of "blocks" that degrees of freedom in this element are sub-divided into
IMPORTANT: This is not even the correct function name! Because this appears to be untested (it will break if tested!), I will comment this out. Please re-implement if required in the future. The correct function signature is: unsigned ndof_types() const Create a list of pairs for all unknowns in this element, so that the first entry in each pair contains the global equation number of the unknown, while the second one contains the number of the "block" that this unknown is associated with. (Function can obviously only be called if the equation numbering scheme has been set up.) Pressure=1 since we expect to add this unknown to the pressure block
IMPORTANT: This is not even the correct function name I have no self tests for this, because it appears to be not tested, I will comment this out, the correct function signature is: void get_dof_numbers_for_unknowns( std::list<std::pair<unsigned long, unsigned> >& block_lookup_list) const Data object whose single value is the pressure applied by the elements in the Flux_control_mesh_pt
Data object whose single value is the pressure applied by the elements in the Flux_control_mesh_pt
Referenced by oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement(), and oomph::NetFluxControlElement< ELEMENT >::pressure_data_pt().