![]() |
|
#include <navier_stokes_elements_with_singularity.h>
Public Member Functions | |
NavierStokesElementWithSingularity () | |
Constructor. More... | |
void | impose_velocity_dirichlet_bc_on_node (const unsigned &j, const unsigned &d) |
void | undo_velocity_dirichlet_bc_on_node (const unsigned &j, const unsigned &d) |
void | set_velocity_dirichlet_value_on_node (const unsigned &j, const unsigned &d, const double &value) |
void | impose_dirichlet_bc_on_pressure_dof (const unsigned &j) |
Impose Dirichlet BC at the j-th pressure dof. More... | |
void | undo_dirichlet_bc_on_pressure_dof (const unsigned &j) |
Undo Dirichlet BC at the j-th pressure dof. More... | |
void | set_dirichlet_value_on_pressure_dof (const unsigned &j, const double &value) |
Specify Dirichlet boundary value for the j-th pressure dof. More... | |
Vector< SingularNavierStokesSolutionElement< NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT > > * > | c_equation_elements_pt () |
Access function to vector of pointers to SingularNavierStokesSolutionElements. More... | |
void | add_c_equation_element_pt (SingularNavierStokesSolutionElement< NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT > > *c_pt) |
double | dpdx_fe_only (Vector< double > s, const unsigned *direction_pt) |
Derivative of pressure in direction indicated by pointer to unsigned. More... | |
void | fill_in_contribution_to_residuals (Vector< double > &residuals) |
Add the element's contribution to its residual vector (wrapper) More... | |
void | fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
void | output (std::ostream &outfile, const unsigned &nplot) |
void | compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, const bool &include_pressure, double &error, double &norm) |
Overloaded compute error function; uses FE+singular parts. More... | |
Vector< double > | interpolated_u_nst (const Vector< double > &s) const |
double | interpolated_p_nst (const Vector< double > &s) const |
Version of interpolated pressure including the singular contributions. More... | |
Private Attributes | |
Vector< SingularNavierStokesSolutionElement< NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT > > * > | C_equation_elements_pt |
Vector of pointers to SingularNavierStokesSolutionElement objects. More... | |
Vector< std::vector< bool > > | Node_is_subject_to_velocity_dirichlet_bcs |
Vector< Vector< double > > | Imposed_velocity_values_at_node |
std::vector< bool > | Pressure_dof_is_subject_to_dirichlet_bc |
Vector< double > | Imposed_value_at_pressure_dof |
///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// Templated wrapper to add handling of singularities to the underlying Navier-Stokes element (specified via the template argument). Slightly inefficient because the integration loop is repeated here. The only alternative is to add the additional functionality into the Navier-Stokes elements. Not pretty either! NOTE Element ia assumed to be of Taylor Hood type with pressures stored at nodes.
Dirichlet BCs are applied in hijacking manner and must be imposed from each element that shares a boundary node that is subject to a Dirichlet condition.
|
inline |
Constructor.
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Imposed_value_at_pressure_dof, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Imposed_velocity_values_at_node, j, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Node_is_subject_to_velocity_dirichlet_bcs, and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Pressure_dof_is_subject_to_dirichlet_bc.
|
inline |
Add pointer to associated SingularNavierStokesSolutionElement that determines the value of the amplitude of the singular functions (and gives access to the singular functions). The unknown amplitude becomes external Data for this element so assign_eqn_numbers() must be called after this function has been called.
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt.
inline |
Access function to vector of pointers to SingularNavierStokesSolutionElements.
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt.
|
inline |
Overloaded compute error function; uses FE+singular parts.
References calibrate::error, ProblemParameters::exact_soln(), i, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_p_nst(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_u_nst(), J, s, w, oomph::QuadTreeNames::W, and plotDoE::x.
|
inline |
Derivative of pressure in direction indicated by pointer to unsigned.
|
inline |
Add the element's contribution to its residual vector and element Jacobian matrix (wrapper)
|
inline |
Add the element's contribution to its residual vector (wrapper)
References oomph::GeneralisedElement::Dummy_matrix, and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst().
|
inlineprivate |
Overloaded fill-in function.
References oomph::ALE_is_disabled, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, oomph::GeneralisedElement::Dummy_matrix, GlobalPhysicalVariables::Gamma, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::grad_u_bar(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::grad_velocity_singular_function(), i, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Imposed_value_at_pressure_dof, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Imposed_velocity_values_at_node, J, j, k, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Node_is_subject_to_velocity_dirichlet_bcs, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::p_bar(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Pressure_dof_is_subject_to_dirichlet_bc, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::pressure_singular_function(), s, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::u_bar(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::velocity_singular_function(), w, oomph::QuadTreeNames::W, and oomph::Node::x().
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_contribution_to_jacobian(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_contribution_to_residuals().
|
inlineprivate |
Evaluate i-th grad_u_bar (i-th gradient of velocity singular fct incl. the amplitude) function at Eulerian position x; grad[i][j] = du_i/dx_j
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, and plotDoE::x.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst().
|
inlineprivate |
Evaluate gradient of sum of all velocity singular fcts (incl. the amplitudes) at Eulerian position x: grad[i][j] = du_i/dx_j
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, j, s, and plotDoE::x.
|
inlineprivate |
Evaluate gradient of i-th "raw" velocity singular function at Eulerian position x
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, and plotDoE::x.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst().
|
inline |
Impose Dirichlet BC at the j-th pressure dof.
References j, and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Pressure_dof_is_subject_to_dirichlet_bc.
|
inline |
Impose Dirichlet BC on the d-th component of the velocity (including the singular contribution) at the j-th node
References j, and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Node_is_subject_to_velocity_dirichlet_bcs.
|
inline |
Version of interpolated pressure including the singular contributions.
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_p_nst_fe_only(), j, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::p_bar(), s, oomph::OneDimLagrange::shape(), and plotDoE::x.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::compute_error(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::output().
|
inlineprivate |
Return FE representation of pressure solution WITHOUT singular contributions at local coordinate s
References s.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_p_nst(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::output().
|
inline |
Overloaded version of the interpolated velocity solution including the singular contributions
References j, oomph::OneDimLagrange::shape(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::u_bar(), and plotDoE::x.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::compute_error(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::output().
|
inlineprivate |
Return FE representation of velocity solution WITHOUT singular contributions at local coordinate s
References j, and oomph::OneDimLagrange::shape().
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::output().
|
inline |
Overload the output function x, y, [z,] u, v, [w], p, u_fe, v_fe, [w_fe], p_fe,
References i, oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_p_nst(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_p_nst_fe_only(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_u_nst(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_u_nst_fe_only(), s, Jeffery_Solution::velocity(), and plotDoE::x.
|
inlineprivate |
Evaluate i-th p_bar (i-th pressure singular fct (incl. the amplitude) at Eulerian position x
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, and plotDoE::x.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_p_nst().
|
inlineprivate |
Evaluate sum of all pressure singular fcts (incl. the amplitudes) at Eulerian position x
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, and plotDoE::x.
|
inlineprivate |
Evaluate i-th pressure singular fct (without the amplitude) at Eulerian position x
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, and plotDoE::x.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst().
|
inline |
Specify Dirichlet boundary value for the j-th pressure dof.
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Imposed_value_at_pressure_dof, j, and Eigen::value.
|
inline |
Specify Dirichlet boundary value for the d-th velocity component (including the singular contribution) at the j-th local node
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Imposed_velocity_values_at_node, j, and Eigen::value.
|
inlineprivate |
Evaluate i-th u_bar (i-th velocity singular function incl. the amplitudes) function at Eulerian position x
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, and plotDoE::x.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::interpolated_u_nst().
|
inlineprivate |
Evaluate sum of all velocity singular fcts (incl. the amplitude) at Eulerian position x
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, s, and plotDoE::x.
|
inline |
Undo Dirichlet BC at the j-th pressure dof.
References j, and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Pressure_dof_is_subject_to_dirichlet_bc.
|
inline |
Undo Dirichlet BC on the d-th velocity component (including the singular contribution) of the jth node
References j, and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::Node_is_subject_to_velocity_dirichlet_bcs.
|
inlineprivate |
Evaluate i-th "raw" velocity singular function at Eulerian position x.
References oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::C_equation_elements_pt, i, and plotDoE::x.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst().
private |
Vector of pointers to SingularNavierStokesSolutionElement objects.
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::add_c_equation_element_pt(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::c_equation_elements_pt(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::grad_u_bar(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::grad_velocity_singular_function(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::p_bar(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::pressure_singular_function(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::u_bar(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::velocity_singular_function().
|
private |
Imposed value at pressure dofs that are subject to Dirichlet BC [size = number of pressure dof; initialised to zero]
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::NavierStokesElementWithSingularity(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::set_dirichlet_value_on_pressure_dof().
|
private |
Imposed values of velocity component at nodes that are subject to Dirichlet BC [size = number of nodes; initialised to zero]
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::NavierStokesElementWithSingularity(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::set_velocity_dirichlet_value_on_node().
|
private |
Vector indicating which velocity component of which node is subject to Dirichlet BC [size = number of nodes; initialised to false]
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::impose_velocity_dirichlet_bc_on_node(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::NavierStokesElementWithSingularity(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::undo_velocity_dirichlet_bc_on_node().
|
private |
Vector indicating which pressure dof is subject to Dirichlet BC [size = number of pressure dofs; initialised to false]
Referenced by oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::fill_in_generic_residual_contribution_wrapped_nst(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::impose_dirichlet_bc_on_pressure_dof(), oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::NavierStokesElementWithSingularity(), and oomph::NavierStokesElementWithSingularity< BASIC_NAVIER_STOKES_ELEMENT >::undo_dirichlet_bc_on_pressure_dof().