oomph::NetFluxControlElement< ELEMENT > Class Template Reference

#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...
 
Datapressure_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...
 
Datapressure_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
 
unsigneddof_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 &current_string) const
 
virtual void describe_local_dofs (std::ostream &out, const std::string &current_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 &parameter_pt, Vector< double > &dres_dparam)
 
virtual void get_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void get_djacobian_and_dmass_matrix_dparameter (double *const &parameter_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)
 

Protected Member Functions

void fill_in_generic_residual_contribution_flux_control (Vector< double > &residuals)
 
- Protected Member Functions inherited from oomph::GeneralisedElement
unsigned add_internal_data (Data *const &data_pt, const bool &fd=true)
 
bool internal_data_fd (const unsigned &i) const
 
void exclude_internal_data_fd (const unsigned &i)
 
void include_internal_data_fd (const unsigned &i)
 
void clear_global_eqn_numbers ()
 
void add_global_eqn_numbers (std::deque< unsigned long > const &global_eqn_numbers, std::deque< double * > const &global_dof_pt)
 
virtual void assign_internal_and_external_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void assign_all_generic_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void assign_additional_local_eqn_numbers ()
 
int internal_local_eqn (const unsigned &i, const unsigned &j) const
 
int external_local_eqn (const unsigned &i, const unsigned &j)
 
void fill_in_jacobian_from_internal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_internal_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
virtual void update_before_internal_fd ()
 
virtual void reset_after_internal_fd ()
 
virtual void update_in_internal_fd (const unsigned &i)
 
virtual void reset_in_internal_fd (const unsigned &i)
 
virtual void update_before_external_fd ()
 
virtual void reset_after_external_fd ()
 
virtual void update_in_external_fd (const unsigned &i)
 
virtual void reset_in_external_fd (const unsigned &i)
 
virtual void fill_in_contribution_to_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void fill_in_contribution_to_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void fill_in_contribution_to_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void fill_in_contribution_to_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 

Private Attributes

DataPressure_data_pt
 
MeshFlux_control_mesh_pt
 
doublePrescribed_outflow_value_pt
 Pointer to the value that stores the prescribed outflow. More...
 
doublePrescribed_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< doubleDummy_matrix
 
static std::deque< double * > Dof_pt_deque
 

Detailed Description

template<class ELEMENT>
class oomph::NetFluxControlElement< ELEMENT >

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(...)

Constructor & Destructor Documentation

◆ NetFluxControlElement() [1/4]

template<class ELEMENT >
oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement ( Mesh flux_control_mesh_pt,
double prescribed_outflow_value_pt 
)
inline

Constructor, which takes a mesh of the face elements which will impose the pressure to control the flux

60  :
61  Flux_control_mesh_pt(flux_control_mesh_pt),
62  Prescribed_outflow_value_pt(prescribed_outflow_value_pt)
63  {
64  // Construct Pressure_data_pt
65  Pressure_data_pt = new Data(1);
66 
67  // Add the new Data to internal Data for this element
69 
70  // pin pressure data
71  // Pressure_data_pt->pin(0);
72 
73  // Loop over elements in the Flux_control_mesh to add
74  // Data from the elements in the flux control
75  // mesh to the external data for this element
76  unsigned n_el = Flux_control_mesh_pt->nelement();
77  for (unsigned e=0; e<n_el; e++)
78  {
79  // Get pointer to the element
80  FiniteElement * f_el_pt =
82 
83  // Loop over the nodes
84  unsigned n_node = f_el_pt->nnode();
85  for(unsigned n=0;n<n_node;n++)
86  {
87  add_external_data(f_el_pt->node_pt(n));
88  }
89  }
90  }
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
unsigned add_external_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:307
unsigned add_internal_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:62
FiniteElement * finite_element_pt(const unsigned &e) const
Definition: mesh.h:473
unsigned long nelement() const
Return number of elements in the mesh.
Definition: mesh.h:590
double * Prescribed_outflow_value_pt
Pointer to the value that stores the prescribed outflow.
Definition: flux_control_elements_bk.h:189
Data * Pressure_data_pt
Definition: flux_control_elements_bk.h:182
Mesh * Flux_control_mesh_pt
Definition: flux_control_elements_bk.h:186

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.

◆ ~NetFluxControlElement() [1/2]

template<class ELEMENT >
oomph::NetFluxControlElement< ELEMENT >::~NetFluxControlElement ( )
inline

Empty Destructor - Data gets deleted automatically.

93 {}

◆ NetFluxControlElement() [2/4]

template<class ELEMENT >
oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement ( const NetFluxControlElement< ELEMENT > &  )
inline

Broken copy constructor.

97  {
98  BrokenCopy::broken_copy("NetFluxControlElement");
99  }
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
Definition: oomph_utilities.cc:212

References oomph::BrokenCopy::broken_copy().

◆ NetFluxControlElement() [3/4]

template<class ELEMENT >
oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement ( Mesh flux_control_mesh_pt,
double prescribed_flux_value_pt 
)
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

112  : Flux_control_mesh_pt(flux_control_mesh_pt),
113  Prescribed_flux_value_pt(prescribed_flux_value_pt)
114  {
115  // Construct Pressure_data_pt
116  Pressure_data_pt = new Data(1);
117 
118  // Add the new Data to internal Data for this element
120 
121  // There's no need to add the external data for this element since
122  // this elements Jacobian contributions are calculated by the
123  // NavierStokesFluxControlElements
124 
125  // Loop over elements in the Flux_control_mesh to add this element's
126  // Data to the external Data in the elements in the flux control mesh
127  unsigned n_el = Flux_control_mesh_pt->nelement();
128  for (unsigned e = 0; e < n_el; e++)
129  {
130  // Get pointer to the element
132 
133  // Perform cast to TemplateFreeNavierStokesFluxControlElementBase
134  // pointer
135  TemplateFreeNavierStokesFluxControlElementBase* flux_el_pt =
136  dynamic_cast<TemplateFreeNavierStokesFluxControlElementBase*>(el_pt);
137 
138  flux_el_pt->add_pressure_data(Pressure_data_pt);
139  }
140 
141  // Default value for Dof_number_for_unknown, indiating that it's
142  // uninitialised
143  Dof_number_for_unknown = UINT_MAX;
144  }
GeneralisedElement()
Constructor: Initialise all pointers and all values to zero.
Definition: elements.h:596
GeneralisedElement *& element_pt(const unsigned long &e)
Return pointer to element e.
Definition: mesh.h:448
double * Prescribed_flux_value_pt
Pointer to the value that stores the prescribed flux.
Definition: navier_stokes_flux_control_elements.h:319
unsigned Dof_number_for_unknown
Definition: navier_stokes_flux_control_elements.h:326

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.

◆ ~NetFluxControlElement() [2/2]

template<class ELEMENT >
oomph::NetFluxControlElement< ELEMENT >::~NetFluxControlElement ( )
inline

Empty Destructor - Data gets deleted automatically.

148 {}

◆ NetFluxControlElement() [4/4]

template<class ELEMENT >
oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement ( const NetFluxControlElement< ELEMENT > &  dummy)
delete

Broken copy constructor.

Member Function Documentation

◆ dim()

template<class ELEMENT >
unsigned oomph::NetFluxControlElement< ELEMENT >::dim ( ) const
inline

Broken assignment operator.

Spatial dimension of the problem

163  {
164  return Dim;
165  }
unsigned Dim
spatial dim of NS system
Definition: navier_stokes_flux_control_elements.h:329

References oomph::NetFluxControlElement< ELEMENT >::Dim.

◆ dof_number_for_unknown()

template<class ELEMENT >
unsigned& oomph::NetFluxControlElement< ELEMENT >::dof_number_for_unknown ( )
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.

230  {
231  return Dof_number_for_unknown;
232  }

References oomph::NetFluxControlElement< ELEMENT >::Dof_number_for_unknown.

Referenced by CollapsibleChannelProblem< ELEMENT >::setup_outflow_flux_control_elements().

◆ fill_in_contribution_to_jacobian()

template<class ELEMENT >
void oomph::NetFluxControlElement< ELEMENT >::fill_in_contribution_to_jacobian ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian 
)
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.

190  {
191  // Call the generic routine
193  }
void fill_in_generic_residual_contribution_flux_control(Vector< double > &residuals)
Definition: navier_stokes_flux_control_elements.h:273

References oomph::NetFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_flux_control().

◆ fill_in_contribution_to_residuals() [1/2]

template<class ELEMENT >
void oomph::NetFluxControlElement< ELEMENT >::fill_in_contribution_to_residuals ( Vector< double > &  residuals)
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.

111  {
112  // Initialise volume flux
113  double volume_flux = 0.0;
114 
115  // Loop over elements in Flux_control_mesh_pt and calculate flux
116  unsigned n_el = Flux_control_mesh_pt->nelement();
117  for (unsigned e=0; e<n_el; e++)
118  {
119  // Get a pointer to the element
121 
122  // Cast to NavierStokesFluxControlElement
123  NavierStokesFluxControlElement<ELEMENT>* flux_control_el_pt =
124  dynamic_cast<NavierStokesFluxControlElement<ELEMENT>* >(el_pt);
125 
126  // Add the elemental volume flux
127  volume_flux += flux_control_el_pt->get_volume_flux();
128  }
129 
130  residuals[0] = volume_flux - *Prescribed_outflow_value_pt;
131  }

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.

◆ fill_in_contribution_to_residuals() [2/2]

template<class ELEMENT >
void oomph::NetFluxControlElement< ELEMENT >::fill_in_contribution_to_residuals ( Vector< double > &  residuals)
inlinevirtual

Add the element's contribution to its residual vector: i.e. the flux constraint.

Reimplemented from oomph::GeneralisedElement.

179  {
180  // Call the generic routine
182  }

References oomph::NetFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_flux_control().

◆ fill_in_generic_residual_contribution_flux_control()

template<class ELEMENT >
void oomph::NetFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_flux_control ( Vector< double > &  residuals)
inlineprotected

This function returns the residuals for the flux control master element.

275  {
276  // Initialise volume flux
277  double volume_flux = 0.0;
278 
279  // Loop over elements in Flux_control_mesh_pt and calculate flux
280  unsigned n_el = Flux_control_mesh_pt->nelement();
281  for (unsigned e = 0; e < n_el; e++)
282  {
283  // Get a pointer to the element
285 
286  // Cast to NavierStokesFluxControlElement
287  TemplateFreeNavierStokesFluxControlElementBase* flux_control_el_pt = 0;
288  flux_control_el_pt =
289  dynamic_cast<TemplateFreeNavierStokesFluxControlElementBase*>(el_pt);
290 
291 #ifdef PARANOID
292  if (flux_control_el_pt == 0)
293  {
294  throw OomphLibError("Element must be used with a mesh of "
295  "NavierStokesFluxControlElements",
298  }
299 #endif
300 
301  // Add the elemental volume flux
302  volume_flux += flux_control_el_pt->get_volume_flux();
303  }
304 
305  residuals[0] += *Prescribed_flux_value_pt - volume_flux;
306  }
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

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().

◆ get_dof_numbers_for_unknowns()

template<class ELEMENT >
void oomph::NetFluxControlElement< ELEMENT >::get_dof_numbers_for_unknowns ( std::list< std::pair< unsigned long, unsigned >> &  dof_lookup_list) const
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.

246  {
247 #ifdef PARANOID
248  if (Dof_number_for_unknown == UINT_MAX)
249  {
250  std::ostringstream error_message;
251  error_message << "Dof_number_for_unknown hasn't been set yet!\n"
252  << "Please do so using the dof_number_for_unknown()\n"
253  << "access function\n";
254  throw OomphLibError(error_message.str(),
257  }
258 #endif
259 
260  // pair to store dof lookup prior to being added to list
261  std::pair<unsigned, unsigned> dof_lookup;
262 
263  dof_lookup.first = this->eqn_number(0);
264  dof_lookup.second = Dof_number_for_unknown;
265 
266  // add to list
267  dof_lookup_list.push_front(dof_lookup);
268  }
unsigned long eqn_number(const unsigned &ieqn_local) const
Definition: elements.h:704

References oomph::NetFluxControlElement< ELEMENT >::Dof_number_for_unknown, oomph::GeneralisedElement::eqn_number(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ ndof_types()

template<class ELEMENT >
unsigned oomph::NetFluxControlElement< ELEMENT >::ndof_types ( ) const
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.

201  {
202 #ifdef PARANOID
203  if (Dof_number_for_unknown == UINT_MAX)
204  {
205  std::ostringstream error_message;
206  error_message << "Dof_number_for_unknown hasn't been set yet!\n"
207  << "Please do so using the dof_number_for_unknown()\n"
208  << "access function\n";
209  throw OomphLibError(error_message.str(),
212  }
213 #endif
214  return Dof_number_for_unknown + 1;
215  }

References oomph::NetFluxControlElement< ELEMENT >::Dof_number_for_unknown, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ pressure_data_pt() [1/2]

◆ pressure_data_pt() [2/2]

template<class ELEMENT >
Data* oomph::NetFluxControlElement< ELEMENT >::pressure_data_pt ( ) const
inline

Function to return a pointer to the Data object whose single value is the pressure applied by the NavierStokesFluxControlElement elements

171  {
172  return Pressure_data_pt;
173  }

References oomph::NetFluxControlElement< ELEMENT >::Pressure_data_pt.

Member Data Documentation

◆ Dim

template<class ELEMENT >
unsigned oomph::NetFluxControlElement< ELEMENT >::Dim
private

spatial dim of NS system

Referenced by oomph::NetFluxControlElement< ELEMENT >::dim().

◆ Dof_number_for_unknown

template<class ELEMENT >
unsigned oomph::NetFluxControlElement< ELEMENT >::Dof_number_for_unknown
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().

◆ Flux_control_mesh_pt

template<class ELEMENT >
Mesh * oomph::NetFluxControlElement< ELEMENT >::Flux_control_mesh_pt
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().

◆ Prescribed_flux_value_pt

template<class ELEMENT >
double* oomph::NetFluxControlElement< ELEMENT >::Prescribed_flux_value_pt
private

Pointer to the value that stores the prescribed flux.

Referenced by oomph::NetFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_flux_control().

◆ Prescribed_outflow_value_pt

template<class ELEMENT >
double* oomph::NetFluxControlElement< ELEMENT >::Prescribed_outflow_value_pt
private

Pointer to the value that stores the prescribed outflow.

Referenced by oomph::NetFluxControlElement< ELEMENT >::fill_in_contribution_to_residuals().

◆ Pressure_data_pt

template<class ELEMENT >
Data * oomph::NetFluxControlElement< ELEMENT >::Pressure_data_pt
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().


The documentation for this class was generated from the following files: