![]() |
|
#include <nodes.h>
Public Member Functions | |
virtual void | assign_additional_values_with_face_id (const unsigned &n_additional_value, const unsigned &face_id=0)=0 |
std::map< unsigned, unsigned > *& | index_of_first_value_assigned_by_face_element_pt () |
unsigned | index_of_first_value_assigned_by_face_element (const unsigned &face_id=0) const |
unsigned | index_of_first_value_assigned_by_face_element (const bool &throw_if_no_value_assigned_by_face_element, const bool &throw_quietly, const unsigned &face_id=0) const |
virtual unsigned | nvalue_assigned_by_face_element (const unsigned &face_id=0) const =0 |
BoundaryNodeBase () | |
Default constructor, set the pointers to the storage to NULL. More... | |
virtual | ~BoundaryNodeBase () |
Destructor, clean up any allocated storage for the boundaries. More... | |
BoundaryNodeBase (const BoundaryNodeBase &boundary_node_base)=delete | |
Broken copy constructor. More... | |
void | operator= (const BoundaryNodeBase &)=delete |
Broken assignment operator. More... | |
bool | boundary_coordinates_have_been_set_up () |
Have boundary coordinates been set up? More... | |
void | get_boundaries_pt (std::set< unsigned > *&boundaries_pt) |
void | add_to_boundary (const unsigned &b) |
Add the node to the mesh boundary b. More... | |
void | remove_from_boundary (const unsigned &b) |
Remove the node from the mesh boundary b. More... | |
bool | is_on_boundary () const |
Test whether the node lies on a boundary. More... | |
bool | is_on_boundary (const unsigned &b) const |
Test whether the node lies on mesh boundary b. More... | |
unsigned | ncoordinates_on_boundary (const unsigned &b) |
Get the number of boundary coordinates on mesh boundary b. More... | |
void | get_coordinates_on_boundary (const unsigned &b, Vector< double > &boundary_zeta) |
Return the vector of boundary coordinates on mesh boundary b. More... | |
void | set_coordinates_on_boundary (const unsigned &b, const Vector< double > &boundary_zeta) |
Set the vector of boundary coordinates on mesh boundary b. More... | |
void | get_coordinates_on_boundary (const unsigned &b, const unsigned &k, Vector< double > &boundary_zeta) |
void | set_coordinates_on_boundary (const unsigned &b, const unsigned &k, const Vector< double > &boundary_zeta) |
Protected Member Functions | |
void | make_node_periodic (Node *const &node_pt, Node *const &original_node_pt) |
void | make_nodes_periodic (Node *const &node_pt, Vector< Node * > const &periodic_copies_pt) |
Protected Attributes | |
std::map< unsigned, unsigned > * | Index_of_first_value_assigned_by_face_element_pt |
Node * | Copied_node_pt |
Private Attributes | |
std::map< unsigned, DenseMatrix< double > * > * | Boundary_coordinates_pt |
std::set< unsigned > * | Boundaries_pt |
A class that contains the information required by Nodes that are located on Mesh boundaries. A BoundaryNode of a particular type is obtained by combining a given Node with this class. By differentiating between Nodes and BoundaryNodes we avoid a lot of un-necessary storage in the bulk Nodes.
|
inline |
Default constructor, set the pointers to the storage to NULL.
|
virtual |
Destructor, clean up any allocated storage for the boundaries.
Destructor to clean up any memory that might have been allocated.
References Boundaries_pt, Boundary_coordinates_pt, and Index_of_first_value_assigned_by_face_element_pt.
|
delete |
Broken copy constructor.
void oomph::BoundaryNodeBase::add_to_boundary | ( | const unsigned & | b | ) |
Add the node to the mesh boundary b.
References b, and Boundaries_pt.
Referenced by oomph::BoundaryNode< NODE_TYPE >::add_to_boundary().
|
pure virtual |
Member function that allocates storage for a given number of additional degrees of freedom, n_additional_value, associated with a particular face_id to the Node node_pt
Implemented in oomph::BoundaryNode< NODE_TYPE >.
|
inline |
Have boundary coordinates been set up?
References Boundary_coordinates_pt.
Referenced by oomph::BoundaryNode< NODE_TYPE >::boundary_coordinates_have_been_set_up().
Access to pointer to set of mesh boundaries that this node occupies; NULL if the node is not on any boundary
References Boundaries_pt.
Referenced by oomph::BoundaryNode< NODE_TYPE >::get_boundaries_pt().
void oomph::BoundaryNodeBase::get_coordinates_on_boundary | ( | const unsigned & | b, |
const unsigned & | k, | ||
Vector< double > & | boundary_zeta | ||
) |
Return the vector of the k-th generalised boundary coordinates on mesh boundary b.
Given the mesh boundary b, return the k-th generalised boundary coordinates of the node in the vector boundary_zeta
References b, Boundaries_pt, Boundary_coordinates_pt, i, is_on_boundary(), k, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inline |
Return the vector of boundary coordinates on mesh boundary b.
References b.
Referenced by oomph::BoundaryNode< NODE_TYPE >::get_coordinates_on_boundary().
|
inline |
Return the index of the first value associated with the i-th face element value. If no argument id is specified we return the index associated with the first (and assumed to be only) face element attached to this node. If no values have been set by any FaceElements and throw_if_no_value_assigned_by_face_element is set to true, this is caught gracefully in all circumstances (there are examples with complex unstructured 3D meshes where it's not clear a priori if a node has been resized by FaceElements) by throwing an OomphLibError that can be caught gracefully. If throw_quietly is set to true we throw an OomphLibQuietException instead. You can catch either by catching the underlying std::runtime_error. In PARANOID mode we check regardless of the setting of throw_if_no_value_assigned_by_face_element (but respect the request for quietness). Returns UINT_MAX if error.
References Index_of_first_value_assigned_by_face_element_pt, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inline |
Return the index of the first value associated with the i-th face element value. If no argument is specified we return the index associated with the first (and assumed to be only) face element attached to this node. Throws error only in paranoid mode if no values have been set by any FaceElements. If you want to catch such cases gracefully in all circumstances (there are examples with complex unstructured 3D meshes where it's not clear a priori if a node has been resized by FaceElements) use alternative version (with leading bool arguments) that always checks and throws so exceptions can be caught gracefully. Returns UINT_MAX if error.
References Index_of_first_value_assigned_by_face_element_pt, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
Referenced by ContactProblem< ELEMENT >::complete_problem_setup(), oomph::SurfaceMeltElement< ELEMENT >::disable_melting(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::disable_melting(), oomph::NonlinearSurfaceContactElement< ELEMENT >::fill_in_contribution_to_residuals_surface_contact(), oomph::LinearSurfaceContactElement< ELEMENT >::fill_in_contribution_to_residuals_surface_contact(), oomph::HeatedLinearSurfaceContactElement< ELEMENT >::fill_in_contribution_to_residuals_surface_contact(), oomph::SurfaceMeltElement< ELEMENT >::fill_in_contribution_to_residuals_surface_melt(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::ImposeImpenetrabilityElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::ImposeParallelOutflowElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::fill_in_generic_residual_contribution_axisym_poroelastic_fsi(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::fill_in_generic_residual_contribution_fsi_no_slip_axisym(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::fill_in_generic_residual_contribution_ust_heat_flux(), oomph::ImposeImpenetrabilityElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeParallelOutflowElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::SurfaceContactElementBase< ELEMENT >::get_interpolated_lagrange_p(), oomph::SurfaceMeltElement< ELEMENT >::get_interpolated_lagrange_p(), oomph::HeatedLinearSurfaceContactElement< ELEMENT >::heat_flux(), oomph::SurfaceMeltElement< ELEMENT >::interpolated_melt_rate(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::plot_residual_landscape(), PressureWaveFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::PressureWaveFSIProblem(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::NonlinearSurfaceContactElement< ELEMENT >::resulting_contact_force(), oomph::LinearSurfaceContactElement< ELEMENT >::resulting_contact_force(), oomph::SurfaceMeltElement< ELEMENT >::set_lagrange_multiplier_pressure_to_zero(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::square_of_l2_norm_of_error(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), and UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::UnstructuredFSIProblem().
|
inline |
Return pointer to the map giving the index of the first face element value.
References Index_of_first_value_assigned_by_face_element_pt.
Referenced by oomph::BoundaryNode< NODE_TYPE >::clear_additional_copied_pointers(), and oomph::BoundaryNode< NODE_TYPE >::reset_copied_pointers().
|
inline |
Test whether the node lies on a boundary.
References Boundaries_pt.
Referenced by get_coordinates_on_boundary(), oomph::BoundaryNode< NODE_TYPE >::is_on_boundary(), ncoordinates_on_boundary(), PressureWaveFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::PressureWaveFSIProblem(), remove_from_boundary(), and set_coordinates_on_boundary().
Test whether the node lies on mesh boundary b.
Test whether the node lies on the mesh boundary b.
References b, and Boundaries_pt.
|
protected |
Helper function that is used to turn BoundaryNodes into peridic boundary nodes by setting the data values of copied_node_pt to those of original_node_pt.
Helper function that is used to turn BoundaryNodes into peridic boundary nodes by setting the data values of copy_of_node_pt to those of copied_node_pt.
References oomph::Data::add_copy(), oomph::Node::copied_node_pt(), Copied_node_pt, oomph::Data::delete_value_storage(), oomph::Data::Eqn_number, oomph::Data::is_a_copy(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Data::Value.
Referenced by oomph::BoundaryNode< NODE_TYPE >::make_periodic().
|
protected |
Helper function that is used to turn BoundaryNodes into periodic boundary nodes by setting the data values of the nodes in the vector periodic_copies_pt to be the same as those in node_pt.
////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// Helper function that is used to turn BoundaryNodes into periodic boundary nodes by setting the data values of the nodes in the vector periodic_copies_pt to be the same as those in copied_node_pt. This function should be used when making doubly periodic sets of nodes.
References oomph::Data::add_copy(), Copied_node_pt, oomph::Data::delete_value_storage(), oomph::Data::Eqn_number, oomph::Data::is_a_copy(), n, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Data::Value.
Referenced by oomph::BoundaryNode< NODE_TYPE >::make_periodic_nodes().
Get the number of boundary coordinates on mesh boundary b.
References b, Boundaries_pt, Boundary_coordinates_pt, is_on_boundary(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
Referenced by oomph::BoundaryNode< NODE_TYPE >::ncoordinates_on_boundary().
|
pure virtual |
Return the number of values associated with the i-th face element field. If no argument is specified we return the value associated with the first (and assumed to be only) face element attached to this node. Throws error only in paranoid mode if no values have been set by any FaceElements. If you want to catch such cases gracefully in all circumstances (there are examples with complex unstructured 3D meshes where it's not clear a priori if a node has been resized by FaceElements) use alternative version (with leading bool arguments) that always checks and throws so exceptions can be caught gracefully. Returns UINT_MAX if error.
Implemented in oomph::BoundaryNode< NODE_TYPE >.
|
delete |
Broken assignment operator.
void oomph::BoundaryNodeBase::remove_from_boundary | ( | const unsigned & | b | ) |
Remove the node from the mesh boundary b.
References b, Boundaries_pt, Boundary_coordinates_pt, is_on_boundary(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
Referenced by oomph::BoundaryNode< NODE_TYPE >::remove_from_boundary().
void oomph::BoundaryNodeBase::set_coordinates_on_boundary | ( | const unsigned & | b, |
const unsigned & | k, | ||
const Vector< double > & | boundary_zeta | ||
) |
Set the vector of the k-th generalised boundary coordinates on mesh boundary b.
Given the mesh boundary b, set the k-th generalised boundary coordinates of the node from the vector boundary_zeta
References b, Boundaries_pt, Boundary_coordinates_pt, i, is_on_boundary(), k, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inline |
Set the vector of boundary coordinates on mesh boundary b.
References b.
Referenced by oomph::BoundaryNode< NODE_TYPE >::set_coordinates_on_boundary().
Pointer to set of mesh boundaries occupied by the Node; NULL if the Node is not on any boundaries
Referenced by add_to_boundary(), get_boundaries_pt(), get_coordinates_on_boundary(), is_on_boundary(), ncoordinates_on_boundary(), remove_from_boundary(), set_coordinates_on_boundary(), and ~BoundaryNodeBase().
|
private |
Pointer to a map of pointers to intrinsic boundary coordinates of the Node, indexed by the boundary number. If the Node does not lie on a boundary this map should never be queried because unnecessary storage will then be allocated. Hence, it can only be accessed via the appropriate set and get functions.
Referenced by boundary_coordinates_have_been_set_up(), get_coordinates_on_boundary(), ncoordinates_on_boundary(), remove_from_boundary(), set_coordinates_on_boundary(), and ~BoundaryNodeBase().
|
protected |
If the BoundaryNode is periodic, this pointer is set to the BoundaryNode whose data it shares
Referenced by oomph::BoundaryNode< NODE_TYPE >::assign_eqn_numbers(), oomph::BoundaryNode< NODE_TYPE >::clear_additional_copied_pointers(), oomph::BoundaryNode< NODE_TYPE >::clear_copied_pointers(), oomph::BoundaryNode< NODE_TYPE >::copied_node_pt(), oomph::BoundaryNode< NODE_TYPE >::is_a_copy(), make_node_periodic(), make_nodes_periodic(), oomph::BoundaryNode< NODE_TYPE >::reset_copied_pointers(), oomph::BoundaryNode< NODE_TYPE >::resize(), and oomph::BoundaryNode< NODE_TYPE >::~BoundaryNode().
|
protected |
Pointer to a map, indexed by the face element identifier it returns the position of the first face element value. If the Node does not lie on a face element this map should never be queried.
Referenced by oomph::BoundaryNode< NODE_TYPE >::assign_additional_values_with_face_id(), index_of_first_value_assigned_by_face_element(), index_of_first_value_assigned_by_face_element_pt(), oomph::BoundaryNode< NODE_TYPE >::nvalue_assigned_by_face_element(), oomph::BoundaryNode< NODE_TYPE >::~BoundaryNode(), and ~BoundaryNodeBase().