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::Node Class Reference

#include <nodes.h>

Inheritance diagram for oomph::Node:

oomph::Data oomph::AlgebraicNode oomph::MacroElementNodeUpdateNode oomph::SolidNode oomph::SpineNode List of all members.

Detailed Description

Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a given dimension.

The nodal coordinates are used in the elements' mapping between local and global coordinates and in the simplest case (stationary nodes in Lagrange-type elements) this mapping is given by

\[ x_i = \sum_{j=1}^{N_{node}} X_{ij} \psi_{j}(s_k) \]

so we need only access to the nodal coordinates $ X_{ij}\ (i=1..DIM) $ of all nodes $ j $ : provided by the Node member function.

 Node::x(i) 


If the nodal positions are time-dependent, the mapping becomes

\[ x_i(t) = \sum_{j=1}^{N_{node}} X_{ij}(t) \ \psi_{j}(s_k). \]

Within the computation (where time is only evaluated at discrete levels) this becomes

\[ x_{ti} = \sum_{j=1}^{N_{node}} X_{ijt} \ \psi_{j}(s_k). \]

and we need access to the nodal coordinates $ X_{ijt} \ (i=1..DIM) $ of all nodes $ j $ at the present (t=0) and previous (t>0) timesteps: provided by the Node member function

 Node::x(t,i) 
Note: The interpretation of the history values is slightly more subtle than that. Depending on the positional TimeStepper used, only a limited number of the positional history values accessed Node::x(t,i) represent previous nodal positions; the others are generalised history values that the TimeStepper uses to determine approximations for the time-derivatives of the nodal positions.

Finally, some elements employ mappings that involve additional, generalised coordinates. For instance, in Hermite elements the mapping between local and global coordinates is based on an independent interpolation for the global coordinates and their derivative w.r.t. to the local coordinates. In such elements, the mapping becomes

\[ x_i = \sum_{j=1}^{N_{node}} \sum_{k=1}^{N_{type}} X_{ijk} /// \psi_{jk}(s_k) \]

where $ N_{type} $ is the number of the different types of generalised coordinates involved in the mapping. For instance, in 1D Hermite elements $ N_{type}=2 $ and k=0 corresponds to the global coordinates while k=1 corresponds to the derivative of the global coordinates w.r.t. to the local coordinate. In such cases we need access to the generalised nodal coordinates $ X_{ijk} \ (i=1..DIM, \ k=1..N_{type}) $ of all nodes $ j $. Access is provided by the Node member function

 Node::x_gen(k,i) 
and the corresponding time-dependent version
 Node::x_gen(t,k,i) 
While this is all pretty straightforward, it does make the argument list of the Node constructors rather lengthy.

Definition at line 757 of file nodes.h.


Public Types

typedef void(*) AuxNodeUpdateFctPt (Node *)
 Function pointer to auxiliary node update function.

Public Member Functions

 Node ()
 Default constructor.
 Node (const unsigned &n_dim, const unsigned &n_position_type, const unsigned &initial_n_value, const bool &allocate_x_position=true)
 Steady constructor, for a Node of spatial dimension n_dim. Allocates storage for initial_n_value values. NPosition_type is the number of coordinate types needed in the mapping between local and global coordinates (e.g. 1 for Lagrange-type elements; 2 for 1D Hermite elements; 4 for 2D Hermite elements, etc).
 Node (TimeStepper *const &time_stepper_pt, const unsigned &n_dim, const unsigned &n_position_type, const unsigned &initial_n_value, const bool &allocate_x_position=true)
 Unsteady constructor for a node of spatial dimension n_dim. Allocates storage for initial_n_value values with history values as required by the timestepper. n_position_type: # of coordinate types needed in the mapping between local and global coordinates (e.g. 1 for Lagrange-type elements; 2 for 1D Hermite elements; 4 for 2D Hermite elements).
virtual ~Node ()
 Destructor to clean up the memory allocated for nodal position.
 Node (const Node &node)
 Broken copy constructor.
void operator= (const Node &)
 Broken assignment operator.
unsigned nposition_type () const
 Number of coordinate types needed in the mapping between local and global coordinates.
TimeStepper *& position_time_stepper_pt ()
 Return a pointer to the position timestepper.
TimeStepper *const & position_time_stepper_pt () const
 Return a pointer to the position timestepper (const version).
unsigned ndim () const
 Return (Eulerian) spatial dimension of the node.
double & x (const unsigned &i)
 Return the i-th nodal coordinate.
const double & x (const unsigned &i) const
 Return the i-th nodal coordinate (const version).
double & x (const unsigned &t, const unsigned &i)
 Return the position x(i) at previous timestep t (t=0: present; t>0 previous timestep).
const double & x (const unsigned &t, const unsigned &i) const
 Return the position x(i) at previous timestep t (t=0: present; t>0 previous timestep) (const version).
double dx_dt (const unsigned &i) const
 Return the i-th component of nodal velocity: dx/dt.
double dx_dt (const unsigned &j, const unsigned &i) const
 Return the i-th component of j-th derivative of nodal position: d^jx/dt^j.
virtual bool position_is_a_copy () const
 Return whether any position coordinate has been copied (always false).
virtual bool position_is_a_copy (const unsigned &i) const
 Return whether the position coordinate i has been copied (always false).
double & x_gen (const unsigned &k, const unsigned &i)
 `Type': k; Coordinate direction: i.
const double & x_gen (const unsigned &k, const unsigned &i) const
 Reference to the generalised position x(k,i). `Type': k; Coordinate direction: i (const version).
double & x_gen (const unsigned &t, const unsigned &k, const unsigned &i)
 Reference to the generalised position x(k,i) at the previous timestep [t=0: present]. `Type': k; Coordinate direction: i.
const double & x_gen (const unsigned &t, const unsigned &k, const unsigned &i) const
 Reference to the generalised position x(k,i) at the previous timestep [t=0: present]. `Type': k; Coordinate direction: i. (const version).
double dx_gen_dt (const unsigned &k, const unsigned &i) const
 i-th component of time derivative (velocity) of the generalised position, dx(k,i)/dt. `Type': k; Coordinate direction: i.
double dx_gen_dt (const unsigned &j, const unsigned &k, const unsigned &i) const
 i-th component of j-th time derivative (velocity) of the generalised position, d^jx(k,i)/dt^j. `Type': k; Coordinate direction: i.
double * x_pt (const unsigned &t, const unsigned &i)
 (t=0: present; t>0: previous)
void copy (Node *orig_node_pt)
 Copy all nodal data from specified Node object.
virtual void dump (std::ostream &dump_file)
 Dump nodal positions and associated data to file for restart.
void read (std::ifstream &restart_file)
 Read nodal positions and associated data from file for restart.
virtual void pin_all ()
 The pin_all() function must be overloaded by SolidNodes, so we put the virtual interface here to avoid virtual functions in Data.
virtual void unpin_all ()
 The unpin_all() function must be overloaded by SolidNode, so we put the virtual interface here to avoid virtual functions in Data.
HangInfo *const & hanging_pt () const
 Return pointer to hanging node data (this refers to the geometric hanging node status) (const version).
HangInfo *const & hanging_pt (const int &i) const
 Return pointer to hanging node data for value i (const version).
bool is_hanging () const
 Test whether the node is geometrically hanging.
bool is_hanging (const int &i) const
 Test whether the i-th value is hanging.
void set_hanging_pt (HangInfo *const &hang_pt, const int &i)
 Set the hanging data for the i-th value.
void set_nonhanging ()
 Label node as non-hanging node by removing all hanging node data.
virtual void constrain_positions ()
 Constrain the positions when the node is made hanging Empty virtual function that is overloaded in SolidNodes.
virtual void unconstrain_positions ()
 Unconstrain the positions when the node is made non-hanging Empty virtual function that is overloaded in SolidNodes.
virtual void make_periodic (Node *const &node_pt)
 Make the node periodic by copying the values from node_pt. Note that the coordinates will always remain independent, even though this may lead to (a little) unrequired information being stored. Broken virtual (only implemented in BoundaryNodes).
virtual void make_periodic_nodes (const Vector< Node * > &periodic_nodes_pt)
 Make the nodes passed in the vector periodic_nodes share the same data as this node.
virtual void get_boundaries_pt (std::set< unsigned > *&boundaries_pt)
 Return a pointer to set of mesh boundaries that this node occupies; this will be overloaded by BoundaryNodes. The default behaviour is that the Node does not lie on any boundaries so the pointer to the set of boundaries is NULL.
virtual bool is_on_boundary ()
 Test whether the Node lies on a boundary. The "bulk" Node cannot lie on a boundary, so return false. This will be overloaded by BoundaryNodes.
virtual bool is_on_boundary (const unsigned &b)
 Test whether the node lies on mesh boundary b. The "bulk" Node cannot lie on a boundary, so return false. This will be overloaded by BoundaryNodes.
virtual void add_to_boundary (const unsigned &b)
 Broken interface for adding the node to the mesh boundary b Essentially here for error reporting.
virtual void remove_from_boundary (const unsigned &b)
 Broken interface for removing the node from the mesh boundary b Here to provide error reporting.
virtual unsigned ncoordinates_on_boundary (const unsigned &b)
 Get the number of boundary coordinates on mesh boundary b. Broken virtual interface provides run-time error checking.
virtual void 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. Broken virtual interface provides run-time error checking.
virtual void 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. Broken virtual interface provides run-time error checking.
virtual void get_coordinates_on_boundary (const unsigned &b, Vector< double > &boundary_zeta)
 Return the vector of coordinates on mesh boundary b Broken virtual interface provides run-time error checking.
virtual void set_coordinates_on_boundary (const unsigned &b, const Vector< double > &boundary_zeta)
 Set the vector of coordinates on mesh boundary b Broken virtual interface provides run-time error checking.
void set_obsolete ()
 Mark node as obsolete.
void set_non_obsolete ()
 Mark node as non-obsolete.
bool is_obsolete ()
 Test whether node is obsolete.
double raw_value (const unsigned &i) const
 Return the i-th value stored at the Node. This interface does NOT take the hanging status of the Node into account.
double raw_value (const unsigned &t, const unsigned &i) const
 Return the i-th value at time level t (t=0: present, t>0: previous). This interface does NOT take the hanging status of the Node into account.
double value (const unsigned &i) const
 Return i-th value (dofs or pinned) at this node either directly or via hanging node representation. Note that this REDFINES the interface in Data Thus, the present function will be called provided that it is accessed through a pointer to a node i.e. Node* node_pt->value() will take hanging information into account. If a pointer to a Node has been explicitly down-cast to a pointer to Data then the "wrong" (Data) version of the function will be called.
double value (const unsigned &t, const unsigned &i) const
 Return i-th value at time level t (t=0: present, t>0: previous) either directly or via hanging node representation. Note that this REDEFINES the interface in Data Thus, the present function will be called provided that it is accessed through a pointer to a node i.e. Node* node_pt->value() will take hanging information into account. If a pointer to a Node has been explicitly down-cast to a pointer to Data then the "wrong" (Data) version of the function will be called.
void value (Vector< double > &values) const
 Compute Vector of values for the Data value taking the hanging node status into account. Note that this REDEFINES the interface in Data Thus, the present function will be called provided that it is accessed through a pointer to a node i.e. Node* node_pt->value() will take hanging information into account. If a pointer to a Node has been explicitly down-cast to a pointer to Data then the "wrong" (Data) version of the function will be called.
void value (const unsigned &t, Vector< double > &values) const
 Compute Vector of values (dofs or pinned) in this data at time level t (t=0: present; t>0: previous). This interface explicitly takes the hanging status into account. Thus, the present function will be called provided that it is accessed through a pointer to a node i.e. Node* node_pt->value() will take hanging information into account. If a pointer to a Node has been explicitly down-cast to a pointer to Data then the "wrong" (Data) version of the function will be called.
void position (Vector< double > &pos) const
 Compute Vector of nodal positions either directly or via hanging node representation.
void position (const unsigned &t, Vector< double > &pos) const
 Compute Vector of nodal position at time level t (t=0: current; t>0: previous timestep), either directly or via hanging node representation.
double position (const unsigned &i) const
 Return i-th nodal coordinate either directly or via hanging node representation.
double position (const unsigned &t, const unsigned &i) const
 Return i-th nodal coordinate at time level t (t=0: current; t>0: previous time level), either directly or via hanging node representation.
double position_gen (const unsigned &k, const unsigned &i) const
 Return generalised nodal coordinate either directly or via hanging node representation.
double position_gen (const unsigned &t, const unsigned &k, const unsigned &i) const
 Return generalised nodal coordinate at time level t (t=0: current; t>0: previous time level), either directly or via hanging node representation.
double dposition_dt (const unsigned &i) const
 Return the i-th component of nodal velocity: dx/dt.
double dposition_dt (const unsigned &j, const unsigned &i) const
 Return the i-th component of j-th derivative of nodal position: d^jx/dt^j either directly or via hanging node representation.
double dposition_gen_dt (const unsigned &k, const unsigned &i) const
 i-th component of time derivative (velocity) of the generalised position, dx(k,i)/dt. `Type': k; Coordinate direction: i. Use the hanging node representation
double dposition_gen_dt (const unsigned &j, const unsigned &k, const unsigned &i) const
 i-th component of j-th time derivative (velocity) of the generalised position, d^jx(k,i)/dt^j. `Type': k; Coordinate direction: i. Use the hanging node representation.
virtual void node_update (const bool &update_all_time_levels_for_new_node=false)
 Interface for functions that update the nodal position using algebraic remeshing strategies. The interface is common to SpineNodes, AlgebraicNodes and MacroElementNodeUpdateNodes. The default is that the node does not "update itself" i.e. it is fixed in space. When implemented, this function should also execute the Node's auxiliary node update function (if any).
void set_auxiliary_node_update_fct_pt (AuxNodeUpdateFctPt aux_node_update_fct_pt)
 Set pointer to auxiliary update function -- this can be used to update any nodal values following the update of the nodal position. This is needed e.g. to update the no-slip condition on moving boundaries.
bool has_auxiliary_node_update_fct_pt ()
 Boolean to indicate if node has a pointer to and auxiliary update function.
void perform_auxiliary_node_update_fct ()
 Execute auxiliary update function (if any) -- this can be used to update any nodal values following the update of the nodal position. This is needed e.g. to update the no-slip condition on moving boundaries.
virtual unsigned ngeom_data () const
 Return the number of geometric data that affect the nodal position. The default value is zero (node is stationary).
virtual Data ** all_geom_data_pt ()
 Return a pointer to an array of all (geometric) data that affect the nodal position. The default value is zero (node is stationary).
virtual unsigned ngeom_object () const
 Return the number of geometric objects that affect the nodal position. The default value is zero (node is stationary).
virtual GeomObject ** all_geom_object_pt ()
 Return a pointer to an array of all (geometric) objects that affect the nodal position. The default value is zero (node is stationary).
void output (std::ostream &outfile)
 Output nodal coordinates.

Static Public Attributes

static unsigned No_independent_position = 10
 Static "Magic number" used to indicate that there is no independent position in a periodic node.

Protected Member Functions

void x_gen_range_check (const unsigned &t, const unsigned &k, const unsigned &i) const
 Private function to check that the arguments are within the range of the stored coordinates, position types and time history values.
double * x_position_pt (const unsigned &i)
 Direct access to the pointer to the i-th stored coordinate data.

Protected Attributes

double ** X_position
 Array of pointers to the data holding the Eulerian positions. The storage format must be the same as the internal data storage so that we can implement the functions x() in generality here without the need for virtual functions. The first index will be a flat array of position types and coordinates and the second will be the number of time history values at each position type.
TimeStepperPosition_time_stepper_pt
 Pointer to the timestepper associated with the position data.
HangInfo ** Hanging_pt
 C-style array of pointers to hanging node info. It's set to NULL if the node isn't hanging. The first entry (0) is the geometric hanging node data. The remaining entries correspond to the hanging data for the other values stored at the node. Usually, these entries will be the same as the geometric hanging node data represented by Hanging_pt[0], but this is not necessarily the case; e.g. the pressure in Taylor Hood has different hanging node data from the velocities.
unsigned Ndim
 Eulerian dimension of the node.
unsigned Nposition_type
 Number of coordinate types used in the mapping between local and global coordinates (e.g. 1 for Lagrange-type elements; 2 for 1D Hermite elements; 4 for 2D Hermite elements, etc).
bool Obsolete
 Flag to indicate that the Node has become obsolete --- usually during mesh refinement process.
AuxNodeUpdateFctPt Aux_node_update_fct_pt
 Pointer to auxiliary update function -- this can be used to update any nodal values following the update of the nodal position. This is needed e.g. to update the no-slip condition on moving boundaries.

Friends

class BoundaryNodeBase
 to construct periodic Nodes

Member Typedef Documentation

typedef void(*) oomph::Node::AuxNodeUpdateFctPt(Node *)

Function pointer to auxiliary node update function.

Definition at line 764 of file nodes.h.


Constructor & Destructor Documentation

oomph::Node::Node (  ) 

Default constructor.

Definition at line 1013 of file nodes.cc.

oomph::Node::Node ( const unsigned &  n_dim,
const unsigned &  n_position_type,
const unsigned &  initial_n_value,
const bool &  allocate_x_position = true 
)

Steady constructor, for a Node of spatial dimension n_dim. Allocates storage for initial_n_value values. NPosition_type is the number of coordinate types needed in the mapping between local and global coordinates (e.g. 1 for Lagrange-type elements; 2 for 1D Hermite elements; 4 for 2D Hermite elements, etc).

Steady Constructor, allocates storage for initial_n_value values at a node of spatial dimension NDim. nposition_type: # of coordinate types needed in the mapping between local and global coordinates (e.g. 1 for Lagrange-type elements; 2 for 1D Hermite elements; 4 for 2D Hermite elements, etc).

Definition at line 1030 of file nodes.cc.

References X_position.

oomph::Node::Node ( TimeStepper *const &  time_stepper_pt,
const unsigned &  n_dim,
const unsigned &  n_position_type,
const unsigned &  initial_n_value,
const bool &  allocate_x_position = true 
)

Unsteady constructor for a node of spatial dimension n_dim. Allocates storage for initial_n_value values with history values as required by the timestepper. n_position_type: # of coordinate types needed in the mapping between local and global coordinates (e.g. 1 for Lagrange-type elements; 2 for 1D Hermite elements; 4 for 2D Hermite elements).

Unsteady Constructor for a node of spatial dimension n_dim. Allocates storage for initial_n_value values with history values as required by timestepper. n_position_type: # of coordinate types needed in the mapping between local and global coordinates (e.g. 1 for Lagrange-type elements; 2 for 1D Hermite elements; 4 for 2D Hermite elements)

Definition at line 1078 of file nodes.cc.

References oomph::TimeStepper::ntstorage(), Position_time_stepper_pt, and X_position.

oomph::Node::~Node (  )  [virtual]

Destructor to clean up the memory allocated for nodal position.

Definition at line 1123 of file nodes.cc.

References Hanging_pt, oomph::Data::nvalue(), and X_position.

oomph::Node::Node ( const Node node  )  [inline]

Broken copy constructor.

Definition at line 854 of file nodes.h.

References oomph::BrokenCopy::broken_copy().


Member Function Documentation

void oomph::Node::add_to_boundary ( const unsigned &  b  )  [virtual]

Broken interface for adding the node to the mesh boundary b Essentially here for error reporting.

Interface for function to add the node to the mesh boundary b. Broken here in order to report run-time errors. Must be overloaded by all boundary nodes

Definition at line 1566 of file nodes.cc.

References OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::add_boundary_node().

virtual Data** oomph::Node::all_geom_data_pt (  )  [inline, virtual]

Return a pointer to an array of all (geometric) data that affect the nodal position. The default value is zero (node is stationary).

Reimplemented in oomph::SpineNode.

Definition at line 1317 of file nodes.h.

Referenced by oomph::ElementWithMovingNodes::assemble_set_of_all_geometric_data().

virtual GeomObject** oomph::Node::all_geom_object_pt (  )  [inline, virtual]

Return a pointer to an array of all (geometric) objects that affect the nodal position. The default value is zero (node is stationary).

Reimplemented in oomph::AlgebraicNode, oomph::MacroElementNodeUpdateNode, and oomph::SpineNode.

Definition at line 1325 of file nodes.h.

Referenced by oomph::ElementWithMovingNodes::assemble_set_of_all_geometric_data().

virtual void oomph::Node::constrain_positions (  )  [inline, virtual]

Constrain the positions when the node is made hanging Empty virtual function that is overloaded in SolidNodes.

Reimplemented in oomph::SolidNode.

Definition at line 1077 of file nodes.h.

Referenced by set_hanging_pt().

void oomph::Node::copy ( Node orig_node_pt  ) 

Copy all nodal data from specified Node object.

Definition at line 1271 of file nodes.cc.

References oomph::Data::copy(), ndim(), Ndim, nposition_type(), Nposition_type, oomph::TimeStepper::ntstorage(), OOMPH_EXCEPTION_LOCATION, position_time_stepper_pt(), Position_time_stepper_pt, and X_position.

Referenced by oomph::Mesh::convert_to_boundary_node(), and oomph::Problem::copy().

double oomph::Node::dposition_dt ( const unsigned &  j,
const unsigned &  i 
) const

Return the i-th component of j-th derivative of nodal position: d^jx/dt^j either directly or via hanging node representation.

Return the i-th component of j-th derivative of nodal position: d^jx/dt^j. Use the hanging node representation.

Definition at line 1887 of file nodes.cc.

References oomph::TimeStepper::is_steady(), oomph::TimeStepper::ntstorage(), position(), Position_time_stepper_pt, and oomph::TimeStepper::weight().

double oomph::Node::dposition_dt ( const unsigned &  i  )  const

Return the i-th component of nodal velocity: dx/dt.

Definition at line 1863 of file nodes.cc.

References oomph::TimeStepper::is_steady(), oomph::TimeStepper::ntstorage(), position(), Position_time_stepper_pt, and oomph::TimeStepper::weight().

Referenced by oomph::FSI_functions::apply_no_slip_on_moving_wall(), and oomph::FiniteElement::dnodal_position_dt().

double oomph::Node::dposition_gen_dt ( const unsigned &  j,
const unsigned &  k,
const unsigned &  i 
) const

i-th component of j-th time derivative (velocity) of the generalised position, d^jx(k,i)/dt^j. `Type': k; Coordinate direction: i. Use the hanging node representation.

Definition at line 1938 of file nodes.cc.

References oomph::TimeStepper::is_steady(), oomph::TimeStepper::ntstorage(), position_gen(), Position_time_stepper_pt, and oomph::TimeStepper::weight().

double oomph::Node::dposition_gen_dt ( const unsigned &  k,
const unsigned &  i 
) const

i-th component of time derivative (velocity) of the generalised position, dx(k,i)/dt. `Type': k; Coordinate direction: i. Use the hanging node representation

Definition at line 1912 of file nodes.cc.

References oomph::TimeStepper::is_steady(), oomph::TimeStepper::ntstorage(), position_gen(), Position_time_stepper_pt, and oomph::TimeStepper::weight().

Referenced by oomph::FiniteElement::dnodal_position_gen_dt().

void oomph::Node::dump ( std::ostream &  dump_file  )  [virtual]

Dump nodal positions and associated data to file for restart.

Reimplemented from oomph::Data.

Reimplemented in oomph::SolidNode.

Definition at line 1329 of file nodes.cc.

References oomph::Data::dump(), Ndim, Nposition_type, oomph::TimeStepper::ntstorage(), Position_time_stepper_pt, and X_position.

Referenced by oomph::SolidNode::dump().

double oomph::Node::dx_dt ( const unsigned &  j,
const unsigned &  i 
) const

Return the i-th component of j-th derivative of nodal position: d^jx/dt^j.

Return the i-th component of j-th derivative of nodal position: d^jx/dt^j.

Definition at line 1196 of file nodes.cc.

References oomph::TimeStepper::is_steady(), oomph::TimeStepper::ntstorage(), Position_time_stepper_pt, oomph::TimeStepper::weight(), and x().

double oomph::Node::dx_dt ( const unsigned &  i  )  const

Return the i-th component of nodal velocity: dx/dt.

Definition at line 1172 of file nodes.cc.

References oomph::TimeStepper::is_steady(), oomph::TimeStepper::ntstorage(), Position_time_stepper_pt, oomph::TimeStepper::weight(), and x().

Referenced by oomph::FiniteElement::raw_dnodal_position_dt().

double oomph::Node::dx_gen_dt ( const unsigned &  j,
const unsigned &  k,
const unsigned &  i 
) const

i-th component of j-th time derivative (velocity) of the generalised position, d^jx(k,i)/dt^j. `Type': k; Coordinate direction: i.

Definition at line 1245 of file nodes.cc.

References oomph::TimeStepper::is_steady(), oomph::TimeStepper::ntstorage(), Position_time_stepper_pt, oomph::TimeStepper::weight(), and x_gen().

double oomph::Node::dx_gen_dt ( const unsigned &  k,
const unsigned &  i 
) const

i-th component of time derivative (velocity) of the generalised position, dx(k,i)/dt. `Type': k; Coordinate direction: i.

Definition at line 1220 of file nodes.cc.

References oomph::TimeStepper::is_steady(), oomph::TimeStepper::ntstorage(), Position_time_stepper_pt, oomph::TimeStepper::weight(), and x_gen().

Referenced by oomph::FiniteElement::raw_dnodal_position_gen_dt().

virtual void oomph::Node::get_boundaries_pt ( std::set< unsigned > *&  boundaries_pt  )  [inline, virtual]

Return a pointer to set of mesh boundaries that this node occupies; this will be overloaded by BoundaryNodes. The default behaviour is that the Node does not lie on any boundaries so the pointer to the set of boundaries is NULL.

Definition at line 1097 of file nodes.h.

Referenced by oomph::TriangleMeshBase::setup_boundary_element_info(), oomph::TetMeshBase::setup_boundary_element_info(), and oomph::SimpleCubicTetMesh< ELEMENT >::setup_boundary_element_info().

virtual void oomph::Node::get_coordinates_on_boundary ( const unsigned &  b,
Vector< double > &  boundary_zeta 
) [inline, virtual]

Return the vector of coordinates on mesh boundary b Broken virtual interface provides run-time error checking.

Definition at line 1137 of file nodes.h.

References get_coordinates_on_boundary().

void oomph::Node::get_coordinates_on_boundary ( const unsigned &  b,
const unsigned &  k,
Vector< double > &  boundary_zeta 
) [virtual]

Return the vector of the k-th generalised boundary coordinates on mesh boundary b. Broken virtual interface provides run-time error checking.

Interface for function to get the k-th generalised boundary coordinate of the node on boundary b. Broken here in order to provide run-time error reporting. Must be overloaded by all boundary nodes.

Definition at line 1608 of file nodes.cc.

References OOMPH_EXCEPTION_LOCATION.

Referenced by get_coordinates_on_boundary(), oomph::TriangleMesh< ELEMENT >::setup_boundary_coordinates(), and oomph::FaceElement::zeta_nodal().

HangInfo* const& oomph::Node::hanging_pt ( const int &  i  )  const [inline]

Return pointer to hanging node data for value i (const version).

Definition at line 1023 of file nodes.h.

References Hanging_pt, and OOMPH_EXCEPTION_LOCATION.

HangInfo* const& oomph::Node::hanging_pt (  )  const [inline]

Return pointer to hanging node data (this refers to the geometric hanging node status) (const version).

Definition at line 1008 of file nodes.h.

References Hanging_pt, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::RefineableElement::assign_hanging_local_eqn_numbers(), oomph::RefineableMeshBase::complete_hanging_nodes_recursively(), oomph::RefineableAdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableAdvectionDiffusionEquations< DIM >::fill_in_generic_residual_contribution_adv_diff(), oomph::RefineableAdvectionDiffusionReactionEquations< NREAGENT, DIM >::fill_in_generic_residual_contribution_adv_diff_react(), oomph::RefineableGeneralisedAdvectionDiffusionEquations< DIM >::fill_in_generic_residual_contribution_cons_adv_diff(), oomph::RefineableLinearWaveEquations< DIM >::fill_in_generic_residual_contribution_lin_wave(), oomph::RefineablePoissonEquations< DIM >::fill_in_generic_residual_contribution_poisson(), oomph::RefineableUnsteadyHeatEquations< DIM >::fill_in_generic_residual_contribution_ust_heat(), oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd(), oomph::RefineablePoissonEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::SolidNode::lagrangian_position(), oomph::SolidNode::lagrangian_position_gen(), oomph::MacroElementNodeUpdateNode::node_update(), oomph::AlgebraicMesh::node_update(), oomph::AlgebraicNode::node_update(), oomph::RefineableQElement< 3 >::oc_hang_helper(), position(), position_gen(), oomph::RefineableQElement< 2 >::quad_hang_helper(), oomph::RefineableNavierStokesFluxControlElement< ELEMENT >::refineable_fill_in_generic_residual_contribution_fluid_traction(), and value().

bool oomph::Node::has_auxiliary_node_update_fct_pt (  )  [inline]

Boolean to indicate if node has a pointer to and auxiliary update function.

Definition at line 1294 of file nodes.h.

References Aux_node_update_fct_pt.

bool oomph::Node::is_hanging ( const int &  i  )  const [inline]

Test whether the i-th value is hanging.

Definition at line 1051 of file nodes.h.

References Hanging_pt, and is_hanging().

bool oomph::Node::is_hanging (  )  const [inline]

Test whether the node is geometrically hanging.

Definition at line 1038 of file nodes.h.

References Hanging_pt.

Referenced by oomph::RefineableMeshBase::complete_hanging_nodes_recursively(), oomph::RefineableAdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineablePVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::RefineableAdvectionDiffusionEquations< DIM >::fill_in_generic_residual_contribution_adv_diff(), oomph::RefineableAdvectionDiffusionReactionEquations< NREAGENT, DIM >::fill_in_generic_residual_contribution_adv_diff_react(), oomph::RefineableGeneralisedAdvectionDiffusionEquations< DIM >::fill_in_generic_residual_contribution_cons_adv_diff(), oomph::RefineableLinearWaveEquations< DIM >::fill_in_generic_residual_contribution_lin_wave(), oomph::RefineablePoissonEquations< DIM >::fill_in_generic_residual_contribution_poisson(), oomph::RefineablePVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure(), oomph::RefineableUnsteadyHeatEquations< DIM >::fill_in_generic_residual_contribution_ust_heat(), oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd(), oomph::RefineablePoissonEquations< DIM >::get_dresidual_dnodal_coordinates(), is_hanging(), oomph::SolidNode::lagrangian_position(), oomph::SolidNode::lagrangian_position_gen(), oomph::Mesh::node_update(), oomph::MacroElementNodeUpdateNode::node_update(), oomph::AlgebraicNode::node_update(), oomph::RefineableQElement< 3 >::oc_hang_helper(), position(), position_gen(), oomph::RefineableQElement< 2 >::quad_hang_helper(), and value().

bool oomph::Node::is_obsolete (  )  [inline]

Test whether node is obsolete.

Definition at line 1163 of file nodes.h.

References Obsolete.

virtual bool oomph::Node::is_on_boundary ( const unsigned &  b  )  [inline, virtual]

Test whether the node lies on mesh boundary b. The "bulk" Node cannot lie on a boundary, so return false. This will be overloaded by BoundaryNodes.

Definition at line 1108 of file nodes.h.

virtual bool oomph::Node::is_on_boundary (  )  [inline, virtual]

Test whether the Node lies on a boundary. The "bulk" Node cannot lie on a boundary, so return false. This will be overloaded by BoundaryNodes.

Definition at line 1103 of file nodes.h.

Referenced by oomph::HermiteQuadMesh< ELEMENT >::set_position_of_boundary_node().

void oomph::Node::make_periodic ( Node *const &  node_pt  )  [virtual]

Make the node periodic by copying the values from node_pt. Note that the coordinates will always remain independent, even though this may lead to (a little) unrequired information being stored. Broken virtual (only implemented in BoundaryNodes).

Make the node periodic by copying values from node_pt. Broken virtual (only implemented in BoundaryNodes)

Definition at line 1503 of file nodes.cc.

References OOMPH_EXCEPTION_LOCATION.

void oomph::Node::make_periodic_nodes ( const Vector< Node * > &  periodic_nodes_pt  )  [virtual]

Make the nodes passed in the vector periodic_nodes share the same data as this node.

Make the nodes passed in periodic_nodes_pt periodic by copying values across from this node. At present all the positions will be assumed to be independent. Broken virtual (only implemented in BoundaryNodes)

Definition at line 1516 of file nodes.cc.

References OOMPH_EXCEPTION_LOCATION.

unsigned oomph::Node::ncoordinates_on_boundary ( const unsigned &  b  )  [virtual]

Get the number of boundary coordinates on mesh boundary b. Broken virtual interface provides run-time error checking.

Interface to get the number of boundary coordinates on mesh boundary b. Broken here in order to provide run-time error reporting. Must be overloaded by all boundary nodes.

Definition at line 1592 of file nodes.cc.

References OOMPH_EXCEPTION_LOCATION.

unsigned oomph::Node::ndim (  )  const [inline]

Return (Eulerian) spatial dimension of the node.

Definition at line 877 of file nodes.h.

References Ndim.

Referenced by oomph::AdvectionDiffusionFluxElement< ELEMENT >::AdvectionDiffusionFluxElement(), oomph::FSI_functions::apply_no_slip_on_moving_wall(), oomph::Newmark< NSTEPS >::assign_initial_data_values(), oomph::BDF< NSTEPS >::assign_initial_positions_impulsive(), oomph::Steady< 0 >::assign_initial_positions_impulsive(), oomph::Newmark< NSTEPS >::assign_initial_positions_impulsive(), oomph::OneDLagrangianMesh< ELEMENT >::assign_undeformed_positions(), oomph::RefineableQElement< 2 >::build(), oomph::RefineableQElement< 3 >::build(), oomph::BDF< NSTEPS >::calculate_predicted_positions(), oomph::FiniteElement::check_jacobian(), copy(), oomph::FSI_functions::doc_fsi(), oomph::ElementWithMovingNodes::fill_in_jacobian_from_geometric_data(), oomph::ElementWithMovingNodes::get_dnodal_coordinates_dgeom_dofs(), oomph::RefineableElement::get_dresidual_dnodal_coordinates(), oomph::FiniteElement::get_dresidual_dnodal_coordinates(), oomph::LinearWaveFluxElement< ELEMENT >::LinearWaveFluxElement(), oomph::NavierStokesFluxControlElement< ELEMENT >::NavierStokesFluxControlElement(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::NavierStokesSurfacePowerElement(), oomph::NavierStokesTractionElement< ELEMENT >::NavierStokesTractionElement(), oomph::MacroElementNodeUpdateNode::node_update(), oomph::AlgebraicMesh::node_update(), output(), oomph::HermiteBeamElement::output(), oomph::PoissonFluxElement< ELEMENT >::PoissonFluxElement(), position(), oomph::RefineableMeshBase::refine_as_in_reference_mesh(), oomph::AlgebraicNode::self_test(), oomph::Problem::set_pinned_values_to_zero(), oomph::BDF< NSTEPS >::shift_time_positions(), oomph::Steady< 0 >::shift_time_positions(), oomph::Newmark< NSTEPS >::shift_time_positions(), oomph::UnsteadyHeatFluxElement< ELEMENT >::UnsteadyHeatFluxElement(), and oomph::WomersleyMesh< WOMERSLEY_ELEMENT >::WomersleyMesh().

virtual unsigned oomph::Node::ngeom_data (  )  const [inline, virtual]

Return the number of geometric data that affect the nodal position. The default value is zero (node is stationary).

Reimplemented in oomph::SpineNode.

Definition at line 1313 of file nodes.h.

Referenced by oomph::ElementWithMovingNodes::assemble_set_of_all_geometric_data().

virtual unsigned oomph::Node::ngeom_object (  )  const [inline, virtual]

Return the number of geometric objects that affect the nodal position. The default value is zero (node is stationary).

Reimplemented in oomph::AlgebraicNode, oomph::MacroElementNodeUpdateNode, and oomph::SpineNode.

Definition at line 1321 of file nodes.h.

Referenced by oomph::ElementWithMovingNodes::assemble_set_of_all_geometric_data().

virtual void oomph::Node::node_update ( const bool &  update_all_time_levels_for_new_node = false  )  [inline, virtual]

Interface for functions that update the nodal position using algebraic remeshing strategies. The interface is common to SpineNodes, AlgebraicNodes and MacroElementNodeUpdateNodes. The default is that the node does not "update itself" i.e. it is fixed in space. When implemented, this function should also execute the Node's auxiliary node update function (if any).

Reimplemented in oomph::AlgebraicNode, oomph::MacroElementNodeUpdateNode, oomph::SolidNode, and oomph::SpineNode.

Definition at line 1275 of file nodes.h.

unsigned oomph::Node::nposition_type (  )  const [inline]

Number of coordinate types needed in the mapping between local and global coordinates.

Definition at line 867 of file nodes.h.

References Nposition_type.

Referenced by oomph::BDF< NSTEPS >::assign_initial_positions_impulsive(), oomph::Steady< 0 >::assign_initial_positions_impulsive(), oomph::Newmark< NSTEPS >::assign_initial_positions_impulsive(), copy(), oomph::QHermiteElement< DIM >::output(), oomph::Problem::set_pinned_values_to_zero(), oomph::BDF< NSTEPS >::shift_time_positions(), oomph::Steady< 0 >::shift_time_positions(), and oomph::Newmark< NSTEPS >::shift_time_positions().

void oomph::Node::operator= ( const Node  )  [inline]

Broken assignment operator.

Definition at line 860 of file nodes.h.

References oomph::BrokenCopy::broken_assign().

void oomph::Node::output ( std::ostream &  outfile  ) 

Output nodal coordinates.

Definition at line 1963 of file nodes.cc.

References ndim(), and x().

void oomph::Node::perform_auxiliary_node_update_fct (  )  [inline]

Execute auxiliary update function (if any) -- this can be used to update any nodal values following the update of the nodal position. This is needed e.g. to update the no-slip condition on moving boundaries.

Definition at line 1303 of file nodes.h.

References Aux_node_update_fct_pt.

Referenced by oomph::SolidFiniteElement::fill_in_jacobian_from_solid_position_by_fd(), and oomph::SolidNode::node_update().

virtual void oomph::Node::pin_all (  )  [inline, virtual]

The pin_all() function must be overloaded by SolidNodes, so we put the virtual interface here to avoid virtual functions in Data.

Reimplemented from oomph::Data.

Reimplemented in oomph::SolidNode.

Definition at line 1000 of file nodes.h.

References oomph::Data::pin_all().

Referenced by oomph::SolidNode::pin_all().

double oomph::Node::position ( const unsigned &  t,
const unsigned &  i 
) const

Return i-th nodal coordinate at time level t (t=0: current; t>0: previous time level), either directly or via hanging node representation.

Return i-th nodal coordinate at time level t (t=0: current; t>0: previous time level), either directly or via hanging node representation.

Definition at line 1772 of file nodes.cc.

References hanging_pt(), is_hanging(), oomph::HangInfo::nmaster(), position(), and x().

double oomph::Node::position ( const unsigned &  i  )  const

Return i-th nodal coordinate either directly or via hanging node representation.

Return i-th nodal coordinate either directly or via hanging node representation.

Definition at line 1743 of file nodes.cc.

References hanging_pt(), is_hanging(), oomph::HangInfo::nmaster(), position(), and x().

void oomph::Node::position ( const unsigned &  t,
Vector< double > &  pos 
) const

Compute Vector of nodal position at time level t (t=0: current; t>0: previous timestep), either directly or via hanging node representation.

Compute Vector of nodal position at timestep t (t=0: current; t>0: previous timestep), either directly or via hanging node representation.

Definition at line 1732 of file nodes.cc.

References ndim(), and position().

void oomph::Node::position ( Vector< double > &  pos  )  const

Compute Vector of nodal positions either directly or via hanging node representation.

Compute Vector of nodal positions either directly or via hanging node representation

Definition at line 1720 of file nodes.cc.

References ndim().

Referenced by dposition_dt(), oomph::SolidNode::lagrangian_position(), oomph::SolidNode::lagrangian_position_gen(), oomph::FiniteElement::nodal_position(), position(), and position_gen().

double oomph::Node::position_gen ( const unsigned &  t,
const unsigned &  k,
const unsigned &  i 
) const

Return generalised nodal coordinate at time level t (t=0: current; t>0: previous time level), either directly or via hanging node representation.

Return generalised nodal coordinate at time level t (t=0: current; t>0: previous time level), either directly or via hanging node representation.

Definition at line 1832 of file nodes.cc.

References hanging_pt(), is_hanging(), oomph::HangInfo::nmaster(), position(), and x_gen().

double oomph::Node::position_gen ( const unsigned &  k,
const unsigned &  i 
) const

Return generalised nodal coordinate either directly or via hanging node representation.

Return generalised nodal coordinate either directly or via hanging node representation.

Definition at line 1802 of file nodes.cc.

References hanging_pt(), is_hanging(), oomph::HangInfo::nmaster(), position(), and x_gen().

Referenced by dposition_gen_dt(), and oomph::FiniteElement::nodal_position_gen().

virtual bool oomph::Node::position_is_a_copy ( const unsigned &  i  )  const [inline, virtual]

Return whether the position coordinate i has been copied (always false).

Reimplemented in oomph::SolidNode.

Definition at line 928 of file nodes.h.

virtual bool oomph::Node::position_is_a_copy (  )  const [inline, virtual]

Return whether any position coordinate has been copied (always false).

Reimplemented in oomph::SolidNode.

Definition at line 925 of file nodes.h.

Referenced by oomph::BDF< NSTEPS >::assign_initial_positions_impulsive(), oomph::Steady< 0 >::assign_initial_positions_impulsive(), oomph::Newmark< NSTEPS >::assign_initial_positions_impulsive(), oomph::RefineableQElement< 3 >::build(), oomph::BDF< NSTEPS >::calculate_predicted_positions(), oomph::BDF< NSTEPS >::shift_time_positions(), oomph::Steady< 0 >::shift_time_positions(), and oomph::Newmark< NSTEPS >::shift_time_positions().

TimeStepper* const& oomph::Node::position_time_stepper_pt (  )  const [inline]

Return a pointer to the position timestepper (const version).

Definition at line 873 of file nodes.h.

References Position_time_stepper_pt.

TimeStepper* & oomph::Node::position_time_stepper_pt (  )  [inline]

Return a pointer to the position timestepper.

Definition at line 870 of file nodes.h.

References Position_time_stepper_pt.

Referenced by oomph::AlgebraicFSIDrivenCavityMesh< ELEMENT >::algebraic_node_update(), oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::algebraic_node_update(), copy(), oomph::PVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::RefineablePVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::PVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure(), oomph::RefineablePVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure(), oomph::SolidFiniteElement::fill_in_jacobian_for_newmark_accel(), oomph::NavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::node_update_central_region(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_central_box(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_lower_right_box(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_upper_left_box(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::node_update_lower_right_region(), and oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::node_update_upper_left_region().

double oomph::Node::raw_value ( const unsigned &  t,
const unsigned &  i 
) const [inline]

Return the i-th value at time level t (t=0: present, t>0: previous). This interface does NOT take the hanging status of the Node into account.

Definition at line 1172 of file nodes.h.

References oomph::Data::value().

double oomph::Node::raw_value ( const unsigned &  i  )  const [inline]

Return the i-th value stored at the Node. This interface does NOT take the hanging status of the Node into account.

Definition at line 1167 of file nodes.h.

References oomph::Data::value().

Referenced by oomph::FiniteElement::raw_nodal_value(), and value().

void oomph::Node::read ( std::ifstream &  restart_file  ) 

Read nodal positions and associated data from file for restart.

Reimplemented from oomph::Data.

Reimplemented in oomph::SolidNode.

Definition at line 1356 of file nodes.cc.

References Ndim, Nposition_type, oomph::TimeStepper::ntstorage(), OOMPH_EXCEPTION_LOCATION, Position_time_stepper_pt, oomph::Data::read(), and X_position.

Referenced by oomph::SolidNode::read(), and oomph::Mesh::read().

void oomph::Node::remove_from_boundary ( const unsigned &  b  )  [virtual]

Broken interface for removing the node from the mesh boundary b Here to provide error reporting.

Interface for function to remove the node from the mesh boundary b. Broken here in order to report run-time erorrs. Must be overloaded by all boundary nodes

Definition at line 1579 of file nodes.cc.

References OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::remove_boundary_node().

void oomph::Node::set_auxiliary_node_update_fct_pt ( AuxNodeUpdateFctPt  aux_node_update_fct_pt  )  [inline]

Set pointer to auxiliary update function -- this can be used to update any nodal values following the update of the nodal position. This is needed e.g. to update the no-slip condition on moving boundaries.

Definition at line 1283 of file nodes.h.

References Aux_node_update_fct_pt.

virtual void oomph::Node::set_coordinates_on_boundary ( const unsigned &  b,
const Vector< double > &  boundary_zeta 
) [inline, virtual]

Set the vector of coordinates on mesh boundary b Broken virtual interface provides run-time error checking.

Definition at line 1145 of file nodes.h.

References set_coordinates_on_boundary().

void oomph::Node::set_coordinates_on_boundary ( const unsigned &  b,
const unsigned &  k,
const Vector< double > &  boundary_zeta 
) [virtual]

Set the vector of the k-th generalised boundary coordinates on mesh boundary b. Broken virtual interface provides run-time error checking.

Interface for function to set the k-th generalised boundary coordinate of the node on boundary b. Broken here to provide run-time error reports. Must be overloaded by all boundary nodes.

Definition at line 1622 of file nodes.cc.

References OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::BrethertonSpineMesh(), oomph::RefineableQElement< 2 >::build(), oomph::RefineableQElement< 3 >::build(), oomph::ChannelWithLeafletMesh< ELEMENT >::ChannelWithLeafletMesh(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::reposition_spines(), oomph::ElasticRectangularQuadMesh< ELEMENT >::set_boundary_coordinates(), set_coordinates_on_boundary(), oomph::HermiteQuadMesh< ELEMENT >::set_position_of_boundary_node(), and oomph::TriangleMesh< ELEMENT >::setup_boundary_coordinates().

void oomph::Node::set_hanging_pt ( HangInfo *const &  hang_pt,
const int &  i 
)

Set the hanging data for the i-th value.

Set the hanging data for the i-th value. If node is already hanging, simply overwrite the appropriate entry. If the node isn't hanging (because it might not be hanging geometrically), create the Vector of hanging pointers and make the other entries point to the node's geometric hanging data.

Definition at line 1432 of file nodes.cc.

References oomph::Data::constrain(), constrain_positions(), Hanging_pt, and oomph::Data::nvalue().

Referenced by oomph::RefineableQElement< 3 >::oc_hang_helper(), and oomph::RefineableQElement< 2 >::quad_hang_helper().

void oomph::Node::set_non_obsolete (  )  [inline]

Mark node as non-obsolete.

Definition at line 1160 of file nodes.h.

References Obsolete.

Referenced by oomph::RefineableMeshBase::adapt_mesh(), and oomph::RefineableElement::unbuild().

void oomph::Node::set_nonhanging (  ) 

Label node as non-hanging node by removing all hanging node data.

Definition at line 1527 of file nodes.cc.

References Hanging_pt, oomph::Data::nvalue(), oomph::Data::unconstrain(), and unconstrain_positions().

void oomph::Node::set_obsolete (  )  [inline]

Mark node as obsolete.

Definition at line 1157 of file nodes.h.

References Obsolete.

virtual void oomph::Node::unconstrain_positions (  )  [inline, virtual]

Unconstrain the positions when the node is made non-hanging Empty virtual function that is overloaded in SolidNodes.

Reimplemented in oomph::SolidNode.

Definition at line 1081 of file nodes.h.

Referenced by set_nonhanging().

virtual void oomph::Node::unpin_all (  )  [inline, virtual]

The unpin_all() function must be overloaded by SolidNode, so we put the virtual interface here to avoid virtual functions in Data.

Reimplemented from oomph::Data.

Reimplemented in oomph::SolidNode.

Definition at line 1004 of file nodes.h.

References oomph::Data::unpin_all().

Referenced by oomph::SolidNode::unpin_all().

void oomph::Node::value ( const unsigned &  t,
Vector< double > &  values 
) const

Compute Vector of values (dofs or pinned) in this data at time level t (t=0: present; t>0: previous). This interface explicitly takes the hanging status into account. Thus, the present function will be called provided that it is accessed through a pointer to a node i.e. Node* node_pt->value() will take hanging information into account. If a pointer to a Node has been explicitly down-cast to a pointer to Data then the "wrong" (Data) version of the function will be called.

Compute Vector of values (dofs or pinned) at this node at time level t (t=0: present; t>0: previous) either directly or via hanging node representation.

Reimplemented from oomph::Data.

Definition at line 1703 of file nodes.cc.

References oomph::Data::nvalue(), and value().

void oomph::Node::value ( Vector< double > &  values  )  const

Compute Vector of values for the Data value taking the hanging node status into account. Note that this REDEFINES the interface in Data Thus, the present function will be called provided that it is accessed through a pointer to a node i.e. Node* node_pt->value() will take hanging information into account. If a pointer to a Node has been explicitly down-cast to a pointer to Data then the "wrong" (Data) version of the function will be called.

Compute Vector of values (dofs or pinned) at this Data object either directly or via hanging node representation.

Reimplemented from oomph::Data.

Definition at line 1687 of file nodes.cc.

References oomph::Data::nvalue(), and value().

double oomph::Node::value ( const unsigned &  t,
const unsigned &  i 
) const

Return i-th value at time level t (t=0: present, t>0: previous) either directly or via hanging node representation. Note that this REDEFINES the interface in Data Thus, the present function will be called provided that it is accessed through a pointer to a node i.e. Node* node_pt->value() will take hanging information into account. If a pointer to a Node has been explicitly down-cast to a pointer to Data then the "wrong" (Data) version of the function will be called.

Return i-th value (free or pinned) at this node at time level t either directly or via hanging node representation.

Reimplemented from oomph::Data.

Definition at line 1661 of file nodes.cc.

References hanging_pt(), is_hanging(), oomph::HangInfo::nmaster(), and raw_value().

double oomph::Node::value ( const unsigned &  i  )  const

Return i-th value (dofs or pinned) at this node either directly or via hanging node representation. Note that this REDFINES the interface in Data Thus, the present function will be called provided that it is accessed through a pointer to a node i.e. Node* node_pt->value() will take hanging information into account. If a pointer to a Node has been explicitly down-cast to a pointer to Data then the "wrong" (Data) version of the function will be called.

Return i-th value (free or pinned) at this node either directly or via hanging node representation.

Reimplemented from oomph::Data.

Definition at line 1635 of file nodes.cc.

References hanging_pt(), is_hanging(), oomph::HangInfo::nmaster(), and raw_value().

Referenced by oomph::ClampedSlidingHermiteBeamBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::FiniteElement::nodal_value(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::TimeStepper::time_derivative(), oomph::FluidInterfaceElement::u(), and value().

const double& oomph::Node::x ( const unsigned &  t,
const unsigned &  i 
) const [inline]

Return the position x(i) at previous timestep t (t=0: present; t>0 previous timestep) (const version).

Definition at line 909 of file nodes.h.

References Nposition_type, x_gen_range_check(), and X_position.

double& oomph::Node::x ( const unsigned &  t,
const unsigned &  i 
) [inline]

Return the position x(i) at previous timestep t (t=0: present; t>0 previous timestep).

Definition at line 899 of file nodes.h.

References Nposition_type, x_gen_range_check(), and X_position.

const double& oomph::Node::x ( const unsigned &  i  )  const [inline]

Return the i-th nodal coordinate (const version).

Definition at line 889 of file nodes.h.

References Nposition_type, x_gen_range_check(), and X_position.

double& oomph::Node::x ( const unsigned &  i  )  [inline]

Return the i-th nodal coordinate.

Definition at line 880 of file nodes.h.

References Nposition_type, x_gen_range_check(), and X_position.

Referenced by oomph::AlgebraicFSIDrivenCavityMesh< ELEMENT >::algebraic_node_update(), oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::algebraic_node_update(), oomph::Newmark< NSTEPS >::assign_initial_data_values(), oomph::GeneralisedElement::assign_local_eqn_numbers(), oomph::RefineableSolidQElement< 2 >::build(), oomph::RefineableQElement< 2 >::build(), oomph::RefineableQElement< 3 >::build(), oomph::TriangleMesh< ELEMENT >::build_from_scaffold(), oomph::SimpleCubicMesh< ELEMENT >::build_mesh(), oomph::OneDMesh< ELEMENT >::build_mesh(), oomph::FishMesh< ELEMENT >::build_mesh(), oomph::TwoLayerSpineMesh< ELEMENT, INTERFACE_ELEMENT >::build_two_layer_mesh(), oomph::BDF< NSTEPS >::calculate_predicted_positions(), oomph::CircularCylindricalShellMesh< ELEMENT >::CircularCylindricalShellMesh(), oomph::FSI_functions::doc_fsi(), dx_dt(), oomph::EighthSphereMesh< ELEMENT >::EighthSphereMesh(), oomph::PoissonEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::NavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::FiniteElement::get_dresidual_dnodal_coordinates(), oomph::Mesh::node_update(), oomph::MacroElementNodeUpdateNode::node_update(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::node_update_central_region(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_I(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_I(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_II(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_II(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_III(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_III(), oomph::AlgebraicFishMesh< ELEMENT >::node_update_in_body(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_central_box(), oomph::AlgebraicFishMesh< ELEMENT >::node_update_in_fin(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_lower_right_box(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_upper_left_box(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_IV(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_IV(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_IX(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::node_update_lower_right_region(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::node_update_upper_left_region(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_V(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_VI(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_VII(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_VIII(), oomph::RefineableQElement< 3 >::oc_hang_helper(), output(), position(), oomph::RefineableQElement< 2 >::quad_hang_helper(), oomph::QuarterTubeMesh< ELEMENT >::QuarterTubeMesh(), oomph::FiniteElement::raw_nodal_position(), oomph::RefineableMeshBase::refine_as_in_reference_mesh(), oomph::AlgebraicNode::self_test(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicFSIDrivenCavityMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::setup_algebraic_node_update(), oomph::TriangleMesh< ELEMENT >::setup_boundary_coordinates(), oomph::TetgenMesh< ELEMENT >::setup_boundary_coordinates(), oomph::SimpleCubicScaffoldTetMesh::SimpleCubicScaffoldTetMesh(), oomph::SingleLayerSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update(), oomph::SingleLayerCubicSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update(), oomph::ChannelSpineMesh< ELEMENT >::spine_node_update(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_channel(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_film_lower(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_film_upper(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_horizontal_transition_lower(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_horizontal_transition_upper(), oomph::TwoLayerSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_lower(), oomph::TwoLayerSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_upper(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_vertical_transition_lower(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::spine_node_update_vertical_transition_upper(), oomph::TetgenMesh< ELEMENT >::split_elements_in_corners(), oomph::BDF< NSTEPS >::temporal_error_in_position(), oomph::TubeMesh< ELEMENT >::TubeMesh(), and oomph::WomersleyMesh< WOMERSLEY_ELEMENT >::WomersleyMesh().

const double& oomph::Node::x_gen ( const unsigned &  t,
const unsigned &  k,
const unsigned &  i 
) const [inline]

Reference to the generalised position x(k,i) at the previous timestep [t=0: present]. `Type': k; Coordinate direction: i. (const version).

Definition at line 965 of file nodes.h.

References Nposition_type, x_gen_range_check(), and X_position.

double& oomph::Node::x_gen ( const unsigned &  t,
const unsigned &  k,
const unsigned &  i 
) [inline]

Reference to the generalised position x(k,i) at the previous timestep [t=0: present]. `Type': k; Coordinate direction: i.

Definition at line 953 of file nodes.h.

References Nposition_type, x_gen_range_check(), and X_position.

const double& oomph::Node::x_gen ( const unsigned &  k,
const unsigned &  i 
) const [inline]

Reference to the generalised position x(k,i). `Type': k; Coordinate direction: i (const version).

Definition at line 942 of file nodes.h.

References Nposition_type, x_gen_range_check(), and X_position.

double& oomph::Node::x_gen ( const unsigned &  k,
const unsigned &  i 
) [inline]

`Type': k; Coordinate direction: i.

Definition at line 932 of file nodes.h.

References Nposition_type, x_gen_range_check(), and X_position.

Referenced by oomph::BDF< NSTEPS >::assign_initial_positions_impulsive(), oomph::Steady< 0 >::assign_initial_positions_impulsive(), oomph::Newmark< NSTEPS >::assign_initial_positions_impulsive(), oomph::OneDLagrangianMesh< ELEMENT >::assign_undeformed_positions(), oomph::CircularCylindricalShellMesh< ELEMENT >::assign_undeformed_positions(), dx_gen_dt(), position_gen(), oomph::FiniteElement::raw_nodal_position_gen(), oomph::SolidMesh::set_lagrangian_nodal_coordinates(), oomph::Problem::set_pinned_values_to_zero(), oomph::HermiteQuadMesh< ELEMENT >::set_position_of_boundary_node(), oomph::HermiteQuadMesh< ELEMENT >::set_position_of_node(), oomph::BDF< NSTEPS >::shift_time_positions(), oomph::Steady< 0 >::shift_time_positions(), and oomph::Newmark< NSTEPS >::shift_time_positions().

void oomph::Node::x_gen_range_check ( const unsigned &  t,
const unsigned &  k,
const unsigned &  i 
) const [protected]

Private function to check that the arguments are within the range of the stored coordinates, position types and time history values.

Definition at line 965 of file nodes.cc.

References Ndim, Nposition_type, oomph::TimeStepper::ntstorage(), OOMPH_EXCEPTION_LOCATION, and Position_time_stepper_pt.

Referenced by x(), and x_gen().

double* oomph::Node::x_position_pt ( const unsigned &  i  )  [inline, protected]

Direct access to the pointer to the i-th stored coordinate data.

Definition at line 812 of file nodes.h.

References X_position.

double* oomph::Node::x_pt ( const unsigned &  t,
const unsigned &  i 
) [inline]

(t=0: present; t>0: previous)

Definition at line 986 of file nodes.h.

References Nposition_type, and X_position.


Friends And Related Function Documentation

friend class BoundaryNodeBase [friend]

to construct periodic Nodes

Reimplemented from oomph::Data.

Definition at line 768 of file nodes.h.


Member Data Documentation

AuxNodeUpdateFctPt oomph::Node::Aux_node_update_fct_pt [protected]

Pointer to auxiliary update function -- this can be used to update any nodal values following the update of the nodal position. This is needed e.g. to update the no-slip condition on moving boundaries.

Definition at line 818 of file nodes.h.

Referenced by has_auxiliary_node_update_fct_pt(), oomph::SpineNode::node_update(), oomph::MacroElementNodeUpdateNode::node_update(), oomph::AlgebraicNode::node_update(), perform_auxiliary_node_update_fct(), and set_auxiliary_node_update_fct_pt().

HangInfo* * oomph::Node::Hanging_pt [protected]

C-style array of pointers to hanging node info. It's set to NULL if the node isn't hanging. The first entry (0) is the geometric hanging node data. The remaining entries correspond to the hanging data for the other values stored at the node. Usually, these entries will be the same as the geometric hanging node data represented by Hanging_pt[0], but this is not necessarily the case; e.g. the pressure in Taylor Hood has different hanging node data from the velocities.

Definition at line 796 of file nodes.h.

Referenced by hanging_pt(), is_hanging(), set_hanging_pt(), set_nonhanging(), and ~Node().

unsigned oomph::Node::Ndim [protected]

Eulerian dimension of the node.

Definition at line 799 of file nodes.h.

Referenced by copy(), dump(), ndim(), read(), oomph::SolidNode::SolidNode(), and x_gen_range_check().

unsigned oomph::Node::No_independent_position = 10 [static]

Static "Magic number" used to indicate that there is no independent position in a periodic node.

Static "Magic number" passed as independent_position when there is no independent position in the periodic node. For example, in a periodic mesh.

Definition at line 824 of file nodes.h.

unsigned oomph::Node::Nposition_type [protected]

Number of coordinate types used in the mapping between local and global coordinates (e.g. 1 for Lagrange-type elements; 2 for 1D Hermite elements; 4 for 2D Hermite elements, etc).

Definition at line 805 of file nodes.h.

Referenced by copy(), dump(), nposition_type(), oomph::SolidNode::pin_position(), oomph::SolidNode::position_eqn_number(), oomph::SolidNode::position_is_a_copy(), oomph::SolidNode::position_is_pinned(), read(), oomph::SolidNode::SolidNode(), oomph::SolidNode::unpin_position(), x(), x_gen(), x_gen_range_check(), and x_pt().

bool oomph::Node::Obsolete [protected]

Flag to indicate that the Node has become obsolete --- usually during mesh refinement process.

Definition at line 809 of file nodes.h.

Referenced by is_obsolete(), set_non_obsolete(), and set_obsolete().

TimeStepper* oomph::Node::Position_time_stepper_pt [protected]

Pointer to the timestepper associated with the position data.

Definition at line 786 of file nodes.h.

Referenced by copy(), dposition_dt(), dposition_gen_dt(), dump(), dx_dt(), dx_gen_dt(), Node(), oomph::MacroElementNodeUpdateNode::node_update(), oomph::AlgebraicNode::node_update(), position_time_stepper_pt(), read(), and x_gen_range_check().

double** oomph::Node::X_position [protected]

Array of pointers to the data holding the Eulerian positions. The storage format must be the same as the internal data storage so that we can implement the functions x() in generality here without the need for virtual functions. The first index will be a flat array of position types and coordinates and the second will be the number of time history values at each position type.

Definition at line 783 of file nodes.h.

Referenced by copy(), dump(), Node(), read(), oomph::SolidNode::set_external_variable_position_pt(), oomph::SolidNode::SolidNode(), x(), x_gen(), x_position_pt(), x_pt(), ~Node(), and oomph::SolidNode::~SolidNode().


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