Example codes
and tutorials
The (Not-so) Quick Guide
List of tutorials/demo codes
Single-Physics Problems
Poisson
Adaptivity illustrated for Poisson
Advection-Diffusion
Unsteady heat equation
Linear wave equation
The Young-Laplace equation
Navier-Stokes
Free-surface Navier-Stokes
Axisymmetric Navier-Stokes
Solid mechanics
Beam structures
Shell structures
Multi-physics Problems
Fluid-structure interaction
Boussinesq convection
Steady thermoelasticity
Methods-based example codes and tutorials
Mesh generation
Linear solvers and preconditioners
Visualisation of the results
Parallel processing
How to write a new element
How to write a new refineable element
Default nonlinear solvers -- the sequence of action functions
...
Documentation
FE theory and top-down discussion of the data structure
The (Not-so) Quick Guide
Comprehensive bottom-up discussion of the data structure
List of available structured and unstructured meshes
Linear solvers and preconditioners
Visualisation of the results
Parallel processing
Coding conventions and C++ style
Creating documentation
Optimisation - robustness vs. "raw speed"
Linear vs. nonlinear problems
Storing shape functions
Changing the default "full" integration scheme
Disabling the ALE formulation of unsteady equations
C vs. C++ output
Different sparse assembly techniques and the STL memory pool
Publications
Publications
Talks
Journal publications
Theses
Picture show
Download
Copyright
Download/installation instructions
Download page
FAQ & Contact
FAQ
Change log
Bugs and other known problems
Completeness of the library & our "To-Do List"
Contact the developers
Get involved

 


Beta release!

Please note that the library has not been "officially" released. While we continue to work on the documentation, these web pages are likely to contain broken links and documents in draft form. Please send an email to

oomph-lib AT maths DOT man DOT ac DOT uk

if you wish to be informed of the library's "official" release.

oomph::RefineableNavierStokesEquations< DIM > Class Template Reference

#include <refineable_navier_stokes_elements.h>

Inheritance diagram for oomph::RefineableNavierStokesEquations< DIM >:

oomph::NavierStokesEquations< DIM > oomph::RefineableElement oomph::ElementWithZ2ErrorEstimator oomph::FSIFluidElement oomph::FiniteElement oomph::FiniteElement oomph::FiniteElement oomph::GeneralisedElement oomph::GeomObject oomph::GeneralisedElement oomph::GeomObject oomph::GeneralisedElement oomph::GeomObject oomph::RefineableQCrouzeixRaviartElement< DIM > oomph::RefineableQTaylorHoodElement< DIM > List of all members.

Detailed Description

template<unsigned DIM>
class oomph::RefineableNavierStokesEquations< DIM >

Refineable version of the Navier--Stokes equations

Definition at line 54 of file refineable_navier_stokes_elements.h.


Public Member Functions

 RefineableNavierStokesEquations ()
 Constructor.
unsigned num_Z2_flux_terms ()
 Number of 'flux' terms for Z2 error estimation.
void get_Z2_flux (const Vector< double > &s, Vector< double > &flux)
 Get 'flux' for Z2 error recovery: Upper triangular entries in strain rate tensor.
void further_build ()
 Further build, pass the pointers down to the sons.
void dinterpolated_u_nst_ddata (const Vector< double > &s, const unsigned &i, Vector< double > &du_ddata, Vector< unsigned > &global_eqn_number)
 Compute the derivatives of the i-th component of velocity at point s with respect to all data that can affect its value. In addition, return the global equation numbers corresponding to the data. Overload the non-refineable version to take account of hanging node information.

Static Public Member Functions

static void pin_redundant_nodal_pressures (const Vector< GeneralisedElement * > &element_pt)
 Loop over all elements in Vector (which typically contains all the elements in a fluid mesh) and pin the nodal pressure degrees of freedom that are not being used. Function uses the member function which is empty by default and should be implemented for elements with nodal pressure degrees of freedom (e.g. for refineable Taylor-Hood.).
static void unpin_all_pressure_dofs (const Vector< GeneralisedElement * > &element_pt)
 Unpin all pressure dofs in elements listed in vector.

Protected Member Functions

virtual Nodepressure_node_pt (const unsigned &n_p)
 Pointer to n_p-th pressure node (Default: NULL, indicating that pressure is not based on nodal interpolation).
virtual void unpin_elemental_pressure_dofs ()=0
 Unpin all pressure dofs in the element.
virtual void pin_elemental_redundant_nodal_pressure_dofs ()
 Pin unused nodal pressure dofs (empty by default, because by default pressure dofs are not associated with nodes).
void fill_in_generic_residual_contribution_nst (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, unsigned flag)
 Add element's contribution to elemental residual vector and/or Jacobian matrix flag=1: compute both flag=0: compute only residual vector.
virtual void get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates)
 Compute derivatives of elemental residual vector with respect to nodal coordinates. Overwrites default implementation in FiniteElement base class. dresidual_dnodal_coordinates(l,i,j) = d res(l) / dX_{ij}.

Constructor & Destructor Documentation

template<unsigned DIM>
oomph::RefineableNavierStokesEquations< DIM >::RefineableNavierStokesEquations (  )  [inline]

Constructor.

Definition at line 75 of file refineable_navier_stokes_elements.h.


Member Function Documentation

template<unsigned DIM>
void oomph::RefineableNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata ( const Vector< double > &  s,
const unsigned &  i,
Vector< double > &  du_ddata,
Vector< unsigned > &  global_eqn_number 
) [inline, virtual]

Compute the derivatives of the i-th component of velocity at point s with respect to all data that can affect its value. In addition, return the global equation numbers corresponding to the data. Overload the non-refineable version to take account of hanging node information.

Reimplemented from oomph::NavierStokesEquations< DIM >.

Definition at line 206 of file refineable_navier_stokes_elements.h.

References oomph::Data::eqn_number(), oomph::GeneralisedElement::eqn_number(), oomph::Node::hanging_pt(), oomph::Node::is_hanging(), oomph::HangInfo::master_node_pt(), oomph::HangInfo::master_weight(), oomph::HangInfo::nmaster(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), oomph::FiniteElement::shape(), and oomph::NavierStokesEquations< DIM >::u_index_nst().

template<unsigned DIM>
void oomph::RefineableNavierStokesEquations< DIM >::fill_in_generic_residual_contribution_nst ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  mass_matrix,
unsigned  flag 
) [protected, virtual]

Add element's contribution to elemental residual vector and/or Jacobian matrix flag=1: compute both flag=0: compute only residual vector.

Add element's contribution to the elemental residual vector and/or Jacobian matrix. flag=1: compute both flag=0: compute only residual vector

Reimplemented from oomph::NavierStokesEquations< DIM >.

Definition at line 44 of file refineable_navier_stokes_elements.cc.

References oomph::NavierStokesEquations< DIM >::ALE_is_disabled, oomph::NavierStokesEquations< DIM >::density_ratio(), oomph::NavierStokesEquations< DIM >::dshape_and_dtest_eulerian_at_knot_nst(), oomph::NavierStokesEquations< DIM >::du_dt_nst(), oomph::NavierStokesEquations< DIM >::g(), oomph::NavierStokesEquations< DIM >::Gamma, oomph::NavierStokesEquations< DIM >::get_body_force_nst(), oomph::NavierStokesEquations< DIM >::get_source_nst(), oomph::FiniteElement::integral_pt(), oomph::FiniteElement::interpolated_x(), oomph::HangInfo::master_node_pt(), oomph::HangInfo::master_weight(), oomph::HangInfo::nmaster(), oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_local_eqn(), oomph::FiniteElement::nodal_position(), oomph::FiniteElement::node_pt(), oomph::NavierStokesEquations< DIM >::npres_nst(), oomph::Integral::nweight(), oomph::NavierStokesEquations< DIM >::p_local_eqn(), oomph::NavierStokesEquations< DIM >::p_nodal_index_nst(), oomph::RefineableNavierStokesEquations< DIM >::pressure_node_pt(), oomph::NavierStokesEquations< DIM >::pshape_nst(), oomph::NavierStokesEquations< DIM >::re(), oomph::NavierStokesEquations< DIM >::re_invfr(), oomph::NavierStokesEquations< DIM >::re_st(), oomph::GeneralisedElement::time(), oomph::Data::time_stepper_pt(), oomph::NavierStokesEquations< DIM >::viscosity_ratio(), oomph::QuadTreeNames::W, oomph::TimeStepper::weight(), and oomph::Integral::weight().

template<unsigned DIM>
void oomph::RefineableNavierStokesEquations< DIM >::further_build (  )  [inline, virtual]

Further build, pass the pointers down to the sons.

Reimplemented from oomph::RefineableElement.

Reimplemented in oomph::RefineableQCrouzeixRaviartElement< DIM >, oomph::RefineableQCrouzeixRaviartElement< DIM >, and oomph::RefineableQCrouzeixRaviartElement< DIM >.

Definition at line 169 of file refineable_navier_stokes_elements.h.

References oomph::NavierStokesEquations< DIM >::ALE_is_disabled, oomph::NavierStokesEquations< DIM >::body_force_fct_pt(), oomph::NavierStokesEquations< DIM >::Body_force_fct_pt, oomph::NavierStokesEquations< DIM >::density_ratio_pt(), oomph::NavierStokesEquations< DIM >::Density_Ratio_pt, oomph::RefineableElement::father_element_pt(), oomph::NavierStokesEquations< DIM >::g_pt(), oomph::NavierStokesEquations< DIM >::G_pt, oomph::NavierStokesEquations< DIM >::re_invfr_pt(), oomph::NavierStokesEquations< DIM >::re_pt(), oomph::NavierStokesEquations< DIM >::Re_pt, oomph::NavierStokesEquations< DIM >::re_st_pt(), oomph::NavierStokesEquations< DIM >::ReInvFr_pt, oomph::NavierStokesEquations< DIM >::ReSt_pt, oomph::NavierStokesEquations< DIM >::source_fct_pt(), oomph::NavierStokesEquations< DIM >::Source_fct_pt, oomph::NavierStokesEquations< DIM >::viscosity_ratio_pt(), and oomph::NavierStokesEquations< DIM >::Viscosity_Ratio_pt.

template<unsigned DIM>
void oomph::RefineableNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates ( RankThreeTensor< double > &  dresidual_dnodal_coordinates  )  [protected, virtual]

Compute derivatives of elemental residual vector with respect to nodal coordinates. Overwrites default implementation in FiniteElement base class. dresidual_dnodal_coordinates(l,i,j) = d res(l) / dX_{ij}.

Compute derivatives of elemental residual vector with respect to nodal coordinates. dresidual_dnodal_coordinates(l,i,j) = d res(l) / dX_{ij} Overloads the FD-based version in the FE base class.

Reimplemented from oomph::NavierStokesEquations< DIM >.

Definition at line 574 of file refineable_navier_stokes_elements.cc.

References oomph::GeneralisedElement::Default_fd_jacobian_step, oomph::NavierStokesEquations< DIM >::density_ratio(), oomph::NavierStokesEquations< DIM >::dshape_and_dtest_eulerian_at_knot_nst(), oomph::NavierStokesEquations< DIM >::du_dt_nst(), oomph::NavierStokesEquations< DIM >::g(), oomph::FiniteElement::integral_pt(), oomph::FiniteElement::interpolated_x(), oomph::GeneralisedElement::ndof(), oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_position(), oomph::FiniteElement::nodal_value(), oomph::NavierStokesEquations< DIM >::npres_nst(), oomph::RefineableElement::nshape_controlling_nodes(), oomph::Integral::nweight(), oomph::NavierStokesEquations< DIM >::p_nodal_index_nst(), oomph::RefineableNavierStokesEquations< DIM >::pressure_node_pt(), oomph::NavierStokesEquations< DIM >::pshape_nst(), oomph::NavierStokesEquations< DIM >::re(), oomph::NavierStokesEquations< DIM >::re_invfr(), oomph::NavierStokesEquations< DIM >::re_st(), oomph::RefineableElement::shape_controlling_node_lookup(), oomph::NavierStokesEquations< DIM >::viscosity_ratio(), and oomph::Integral::weight().

template<unsigned DIM>
void oomph::RefineableNavierStokesEquations< DIM >::get_Z2_flux ( const Vector< double > &  s,
Vector< double > &  flux 
) [inline, virtual]

Get 'flux' for Z2 error recovery: Upper triangular entries in strain rate tensor.

Implements oomph::ElementWithZ2ErrorEstimator.

Definition at line 127 of file refineable_navier_stokes_elements.h.

References OOMPH_EXCEPTION_LOCATION, and oomph::NavierStokesEquations< DIM >::strain_rate().

template<unsigned DIM>
unsigned oomph::RefineableNavierStokesEquations< DIM >::num_Z2_flux_terms (  )  [inline, virtual]

Number of 'flux' terms for Z2 error estimation.

Implements oomph::ElementWithZ2ErrorEstimator.

Definition at line 119 of file refineable_navier_stokes_elements.h.

template<unsigned DIM>
virtual void oomph::RefineableNavierStokesEquations< DIM >::pin_elemental_redundant_nodal_pressure_dofs (  )  [inline, protected, virtual]

Pin unused nodal pressure dofs (empty by default, because by default pressure dofs are not associated with nodes).

Reimplemented in oomph::RefineableQTaylorHoodElement< DIM >.

Definition at line 70 of file refineable_navier_stokes_elements.h.

Referenced by oomph::RefineableNavierStokesEquations< DIM >::pin_redundant_nodal_pressures().

template<unsigned DIM>
static void oomph::RefineableNavierStokesEquations< DIM >::pin_redundant_nodal_pressures ( const Vector< GeneralisedElement * > &  element_pt  )  [inline, static]

Loop over all elements in Vector (which typically contains all the elements in a fluid mesh) and pin the nodal pressure degrees of freedom that are not being used. Function uses the member function

which is empty by default and should be implemented for elements with nodal pressure degrees of freedom (e.g. for refineable Taylor-Hood.).

Definition at line 91 of file refineable_navier_stokes_elements.h.

References oomph::RefineableNavierStokesEquations< DIM >::pin_elemental_redundant_nodal_pressure_dofs().

template<unsigned DIM>
virtual Node* oomph::RefineableNavierStokesEquations< DIM >::pressure_node_pt ( const unsigned &  n_p  )  [inline, protected, virtual]

Pointer to n_p-th pressure node (Default: NULL, indicating that pressure is not based on nodal interpolation).

Reimplemented in oomph::RefineableQTaylorHoodElement< DIM >.

Definition at line 63 of file refineable_navier_stokes_elements.h.

Referenced by oomph::RefineableNavierStokesEquations< DIM >::fill_in_generic_residual_contribution_nst(), and oomph::RefineableNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates().

template<unsigned DIM>
static void oomph::RefineableNavierStokesEquations< DIM >::unpin_all_pressure_dofs ( const Vector< GeneralisedElement * > &  element_pt  )  [inline, static]

Unpin all pressure dofs in elements listed in vector.

Definition at line 105 of file refineable_navier_stokes_elements.h.

References oomph::RefineableNavierStokesEquations< DIM >::unpin_elemental_pressure_dofs().

template<unsigned DIM>
virtual void oomph::RefineableNavierStokesEquations< DIM >::unpin_elemental_pressure_dofs (  )  [protected, pure virtual]

Unpin all pressure dofs in the element.

Implemented in oomph::RefineableQTaylorHoodElement< DIM >, and oomph::RefineableQCrouzeixRaviartElement< DIM >.

Referenced by oomph::RefineableNavierStokesEquations< DIM >::unpin_all_pressure_dofs().


The documentation for this class was generated from the following files:
Generated on Mon Aug 10 11:24:06 2009 by  doxygen 1.4.7