oomph::AlgebraicNode Class Reference

#include <algebraic_elements.h>

+ Inheritance diagram for oomph::AlgebraicNode:

Public Member Functions

 AlgebraicNode ()
 Default Constructor. More...
 
 AlgebraicNode (const unsigned &n_dim, const unsigned &n_position_type, const unsigned &initial_nvalue)
 
 AlgebraicNode (TimeStepper *time_stepper_pt, const unsigned &n_dim, const unsigned &n_position_type, const unsigned &initial_nvalue)
 
virtual ~AlgebraicNode ()
 Destructor (empty) More...
 
 AlgebraicNode (const AlgebraicNode &)=delete
 Broken copy constructor. More...
 
void node_update (const bool &update_all_time_levels_for_new_node=false)
 Broken assignment operator. More...
 
unsigned nnode_update_fcts ()
 Number of node update fcts. More...
 
int node_update_fct_id ()
 Default (usually first if there are multiple ones) node update fct id. More...
 
void node_update_fct_id (Vector< int > &id)
 
AlgebraicMeshmesh_pt ()
 Default (usually first) mesh that implements update function. More...
 
AlgebraicMeshmesh_pt (const int &id)
 Mesh that implements the id-th node update function. More...
 
unsigned ngeom_object (const int &id)
 Number of geometric objects involved in id-th update function. More...
 
unsigned ngeom_object () const
 
Vector< GeomObject * > & vector_geom_object_pt (const int &id)
 
Vector< GeomObject * > & vector_geom_object_pt ()
 
GeomObject ** all_geom_object_pt ()
 Return the vector of all geometric objects. More...
 
GeomObjectgeom_object_pt (const unsigned &i)
 
unsigned nref_value (const int &id)
 Number of reference values involved in id-th update function. More...
 
unsigned nref_value ()
 
Vector< double > & vector_ref_value ()
 
Vector< double > & vector_ref_value (const int &id)
 
double ref_value (const unsigned &i)
 
void add_node_update_info (const int &id, AlgebraicMesh *mesh_pt, const Vector< GeomObject * > &geom_object_pt, const Vector< double > &ref_value, const bool &called_from_constructor=false)
 
void add_node_update_info (AlgebraicMesh *mesh_pt, const Vector< GeomObject * > &geom_object_pt, const Vector< double > &ref_value)
 
void kill_node_update_info (const int &id=0)
 
unsigned self_test ()
 
- Public Member Functions inherited from oomph::Node
 Node ()
 Default constructor. More...
 
 Node (const unsigned &n_dim, const unsigned &n_position_type, const unsigned &initial_n_value, const bool &allocate_x_position=true)
 
 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)
 
virtual ~Node ()
 Destructor: Clean up the memory allocated for nodal position. More...
 
 Node (const Node &node)=delete
 Broken copy constructor. More...
 
void operator= (const Node &)=delete
 Broken assignment operator. More...
 
unsigned nposition_type () const
 
TimeStepper *& position_time_stepper_pt ()
 Return a pointer to the position timestepper. More...
 
TimeStepper *const & position_time_stepper_pt () const
 Return a pointer to the position timestepper (const version). More...
 
virtual void set_position_time_stepper (TimeStepper *const &position_time_stepper_pt, const bool &preserve_existing_data)
 
virtual bool does_pointer_correspond_to_position_data (double *const &parameter_pt)
 
virtual void assign_eqn_numbers (unsigned long &global_ndof, Vector< double * > &dof_pt)
 
unsigned ndim () const
 Return (Eulerian) spatial dimension of the node. More...
 
doublex (const unsigned &i)
 Return the i-th nodal coordinate. More...
 
const doublex (const unsigned &i) const
 Return the i-th nodal coordinate (const version). More...
 
doublex (const unsigned &t, const unsigned &i)
 
const doublex (const unsigned &t, const unsigned &i) const
 
double dx_dt (const unsigned &i) const
 Return the i-th component of nodal velocity: dx/dt. More...
 
double dx_dt (const unsigned &j, const unsigned &i) const
 
virtual Nodecopied_node_pt () const
 
virtual bool position_is_a_copy () const
 Return whether any position coordinate has been copied (always false) More...
 
virtual bool position_is_a_copy (const unsigned &i) const
 Return whether the position coordinate i has been copied (always false) More...
 
doublex_gen (const unsigned &k, const unsigned &i)
 
const doublex_gen (const unsigned &k, const unsigned &i) const
 
doublex_gen (const unsigned &t, const unsigned &k, const unsigned &i)
 
const doublex_gen (const unsigned &t, const unsigned &k, const unsigned &i) const
 
double dx_gen_dt (const unsigned &k, const unsigned &i) const
 
double dx_gen_dt (const unsigned &j, const unsigned &k, const unsigned &i) const
 
doublex_pt (const unsigned &t, const unsigned &i)
 
void copy (Node *orig_node_pt)
 Copy all nodal data from specified Node object. More...
 
virtual void dump (std::ostream &dump_file) const
 Dump nodal position and associated data to file for restart. More...
 
void read (std::ifstream &restart_file)
 Read nodal position and associated data from file for restart. More...
 
virtual void pin_all ()
 
virtual void unpin_all ()
 
unsigned hang_code ()
 
HangInfo *const & hanging_pt () const
 
HangInfo *const & hanging_pt (const int &i) const
 Return pointer to hanging node data for value i (const version) More...
 
bool is_hanging () const
 Test whether the node is geometrically hanging. More...
 
bool is_hanging (const int &i) const
 Test whether the i-th value is hanging. More...
 
void set_hanging_pt (HangInfo *const &hang_pt, const int &i)
 Set the hanging data for the i-th value. (hang_pt=0 to make non-hanging) More...
 
void set_nonhanging ()
 Label node as non-hanging node by removing all hanging node data. More...
 
void resize (const unsigned &n_value)
 Resize the number of equations. More...
 
virtual void constrain_positions ()
 
virtual void unconstrain_positions ()
 
virtual void make_periodic (Node *const &node_pt)
 
virtual void make_periodic_nodes (const Vector< Node * > &periodic_nodes_pt)
 
virtual void get_boundaries_pt (std::set< unsigned > *&boundaries_pt)
 
virtual bool is_on_boundary () const
 
virtual bool is_on_boundary (const unsigned &b) const
 
virtual void add_to_boundary (const unsigned &b)
 
virtual void remove_from_boundary (const unsigned &b)
 
virtual unsigned ncoordinates_on_boundary (const unsigned &b)
 
virtual bool boundary_coordinates_have_been_set_up ()
 
virtual void get_coordinates_on_boundary (const unsigned &b, const unsigned &k, Vector< double > &boundary_zeta)
 
virtual void set_coordinates_on_boundary (const unsigned &b, const unsigned &k, const Vector< double > &boundary_zeta)
 
virtual void get_coordinates_on_boundary (const unsigned &b, Vector< double > &boundary_zeta)
 
virtual void set_coordinates_on_boundary (const unsigned &b, const Vector< double > &boundary_zeta)
 
void set_obsolete ()
 Mark node as obsolete. More...
 
void set_non_obsolete ()
 Mark node as non-obsolete. More...
 
bool is_obsolete ()
 Test whether node is obsolete. More...
 
double raw_value (const unsigned &i) const
 
double raw_value (const unsigned &t, const unsigned &i) const
 
double value (const unsigned &i) const
 
double value (const unsigned &t, const unsigned &i) const
 
void value (Vector< double > &values) const
 
Vector< doublevalue () const
 Return vector of values calculated using value(vector). More...
 
void value (const unsigned &t, Vector< double > &values) const
 
void position (Vector< double > &pos) const
 
Vector< doubleposition () const
 Return vector of position of node at current time. More...
 
void position (const unsigned &t, Vector< double > &pos) const
 
double position (const unsigned &i) const
 
double position (const unsigned &t, const unsigned &i) const
 
double position_gen (const unsigned &k, const unsigned &i) const
 
double position_gen (const unsigned &t, const unsigned &k, const unsigned &i) const
 
double dposition_dt (const unsigned &i) const
 
double dposition_dt (const unsigned &j, const unsigned &i) const
 
double dposition_gen_dt (const unsigned &k, const unsigned &i) const
 
double dposition_gen_dt (const unsigned &j, const unsigned &k, const unsigned &i) const
 
void set_auxiliary_node_update_fct_pt (AuxNodeUpdateFctPt aux_node_update_fct_pt)
 
bool has_auxiliary_node_update_fct_pt ()
 
void perform_auxiliary_node_update_fct ()
 
virtual unsigned ngeom_data () const
 
virtual Data ** all_geom_data_pt ()
 
void output (std::ostream &outfile)
 Output nodal position. More...
 
- Public Member Functions inherited from oomph::Data
virtual void clear_copied_pointers ()
 
 Data ()
 Default constructor. More...
 
 Data (const unsigned &initial_n_value)
 
 Data (TimeStepper *const &time_stepper_pt, const unsigned &initial_n_value, const bool &allocate_storage=true)
 
 Data (const Data &data)=delete
 Broken copy constructor. More...
 
void operator= (const Data &)=delete
 Broken assignment operator. More...
 
virtual ~Data ()
 Destructor, deallocates memory assigned for data. More...
 
void set_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
TimeStepper *& time_stepper_pt ()
 Return the pointer to the timestepper. More...
 
TimeStepper *const & time_stepper_pt () const
 Return the pointer to the timestepper (const version). More...
 
virtual bool is_a_copy () const
 
virtual bool is_a_copy (const unsigned &i) const
 
void set_value (const unsigned &i, const double &value_)
 
void set_value (const unsigned &t, const unsigned &i, const double &value_)
 
double value (const unsigned &i) const
 
double value (const unsigned &t, const unsigned &i) const
 
void value (Vector< double > &values) const
 Compute Vector of values for the Data value. More...
 
void value (const unsigned &t, Vector< double > &values) const
 
doublevalue_pt (const unsigned &i) const
 
doublevalue_pt (const unsigned &t, const unsigned &i) const
 
bool does_pointer_correspond_to_value (double *const &parameter_pt)
 Check whether the pointer parameter_pt addresses internal data values. More...
 
void copy (Data *orig_data_pt)
 Copy Data values from specified Data object. More...
 
void dump (std::ostream &dump_file) const
 Dump the data object to a file. More...
 
void read (std::ifstream &restart_file)
 Read data object from a file. More...
 
long * eqn_number_pt (const unsigned &i)
 Return the pointer to the equation number of the i-th stored variable. More...
 
long & eqn_number (const unsigned &i)
 Return the equation number of the i-th stored variable. More...
 
long eqn_number (const unsigned &i) const
 Return the equation number of the i-th stored variable. More...
 
void pin (const unsigned &i)
 Pin the i-th stored variable. More...
 
void unpin (const unsigned &i)
 Unpin the i-th stored variable. More...
 
void pin_all ()
 Pin all the stored variables. More...
 
void unpin_all ()
 Unpin all the stored variables. More...
 
bool is_pinned (const unsigned &i) const
 Test whether the i-th variable is pinned (1: true; 0: false). More...
 
bool is_segregated_solve_pinned (const unsigned &i)
 
void constrain (const unsigned &i)
 
void unconstrain (const unsigned &i)
 
void constrain_all ()
 Constrain all the stored variables when the data is made hanging. More...
 
void unconstrain_all ()
 Unconstrain all the stored variables when the data is made nonhanging. More...
 
bool is_constrained (const unsigned &i)
 
unsigned self_test ()
 
unsigned nvalue () const
 Return number of values stored in data object (incl pinned ones). More...
 
unsigned ntstorage () const
 
virtual void describe_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void add_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt)
 

Private Member Functions

void set_default_node_update (const int &id)
 Make id-th node update function the default. More...
 

Private Attributes

std::map< int, AlgebraicMesh * > Mesh_pt
 
std::map< int, Vector< GeomObject * > > Geom_object_pt
 
std::map< int, Vector< double > > Ref_value
 
std::map< int, AlgebraicMesh * >::iterator Default_it_mesh_pt
 Default iterator for mesh: This mesh performs the default update. More...
 
std::map< int, Vector< GeomObject * > >::iterator Default_it_geom_object_pt
 
std::map< int, Vector< double > >::iterator Default_it_ref_value
 
int Default_node_update_fct_id
 Default node update function ID. More...
 

Static Private Attributes

static double Max_allowed_difference_between_node_update_fcts
 
static int Dummy_node_update_fct_id = -100
 
static AlgebraicMeshDummy_mesh_pt = &AlgebraicNode::Dummy_mesh
 
static DummyAlgebraicMesh Dummy_mesh
 Static Dummy mesh to which the pointer is addressed. More...
 
static Vector< GeomObject * > Dummy_geom_object_pt
 
static Vector< doubleDummy_ref_value
 

Additional Inherited Members

- Public Types inherited from oomph::Node
typedef void(* AuxNodeUpdateFctPt) (Node *)
 Function pointer to auxiliary node update function. More...
 
- Static Public Attributes inherited from oomph::Node
static unsigned No_independent_position = 10
 
- Static Public Attributes inherited from oomph::Data
static long Is_pinned = -1
 Static "Magic number" to indicate pinned values. More...
 
static long Is_segregated_solve_pinned = -3
 
static long Is_unclassified = -10
 
static long Is_constrained = -2
 
- Protected Member Functions inherited from oomph::Node
void x_gen_range_check (const unsigned &t, const unsigned &k, const unsigned &i) const
 
doublex_position_pt (const unsigned &i)
 Direct access to the pointer to the i-th stored coordinate data. More...
 
- Protected Member Functions inherited from oomph::Data
virtual void reset_copied_pointers ()
 
- Protected Attributes inherited from oomph::Node
double ** X_position
 
TimeStepperPosition_time_stepper_pt
 Pointer to the timestepper associated with the position data. More...
 
HangInfo ** Hanging_pt
 
unsigned Ndim
 Eulerian dimension of the node. More...
 
unsigned Nposition_type
 
bool Obsolete
 
AuxNodeUpdateFctPt Aux_node_update_fct_pt
 
- Protected Attributes inherited from oomph::Data
Data ** Copy_of_data_pt
 
unsigned Ncopies
 
- Static Protected Attributes inherited from oomph::Data
static TimeStepperDefault_static_time_stepper_pt = new Steady<0>()
 Default (static) timestepper used in steady problems. More...
 

Detailed Description

//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Algebraic nodes are nodes with an algebraic positional update function.

Constructor & Destructor Documentation

◆ AlgebraicNode() [1/4]

oomph::AlgebraicNode::AlgebraicNode ( )
inline

Default Constructor.

58 : Node() {}
Node()
Default constructor.
Definition: nodes.cc:1574

◆ AlgebraicNode() [2/4]

oomph::AlgebraicNode::AlgebraicNode ( const unsigned n_dim,
const unsigned n_position_type,
const unsigned initial_nvalue 
)
inline

Constructor for steady algebraic node of spatial dimension n_dim, with n_position_type generalised coordinates and with initial_nvalue dofs.

66  : Node(n_dim, n_position_type, initial_nvalue)
67  {
68 #ifdef LEAK_CHECK
69  LeakCheckNames::AlgebraicNode_build += 1;
70 #endif
71 
72  // Add default node update info
73  add_node_update_info(Dummy_node_update_fct_id, // dummy remesh fct ID
74  Dummy_mesh_pt, // dummy mesh
75  Dummy_geom_object_pt, // dummy geom object vector
76  Dummy_ref_value, // dummy ref vector
77  true); // flag indicating call from
78  // constructor
79  }
static AlgebraicMesh * Dummy_mesh_pt
Definition: algebraic_elements.h:479
static Vector< GeomObject * > Dummy_geom_object_pt
Definition: algebraic_elements.h:486
void add_node_update_info(const int &id, AlgebraicMesh *mesh_pt, const Vector< GeomObject * > &geom_object_pt, const Vector< double > &ref_value, const bool &called_from_constructor=false)
Definition: algebraic_elements.h:280
static int Dummy_node_update_fct_id
Definition: algebraic_elements.h:475
static Vector< double > Dummy_ref_value
Definition: algebraic_elements.h:490

References add_node_update_info(), Dummy_geom_object_pt, Dummy_mesh_pt, Dummy_node_update_fct_id, and Dummy_ref_value.

◆ AlgebraicNode() [3/4]

oomph::AlgebraicNode::AlgebraicNode ( TimeStepper time_stepper_pt,
const unsigned n_dim,
const unsigned n_position_type,
const unsigned initial_nvalue 
)
inline

Constructor for bog-standard algebraic node of spatial dimension n_dim, with n_position_type generalised coordinates, with initial_nvalue dofs and with time dependence.

89  : Node(time_stepper_pt, n_dim, n_position_type, initial_nvalue)
90  {
91 #ifdef LEAK_CHECK
92  LeakCheckNames::AlgebraicNode_build += 1;
93 #endif
94 
95  // Add default node update info
96  add_node_update_info(Dummy_node_update_fct_id, // dummy remesh fct ID
97  Dummy_mesh_pt, // dummy mesh
98  Dummy_geom_object_pt, // dummy geom object vector
99  Dummy_ref_value, // dummy ref vector
100  true); // flag indicating call from
101  // constructor
102  }
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper.
Definition: nodes.h:238

References add_node_update_info(), Dummy_geom_object_pt, Dummy_mesh_pt, Dummy_node_update_fct_id, and Dummy_ref_value.

◆ ~AlgebraicNode()

virtual oomph::AlgebraicNode::~AlgebraicNode ( )
inlinevirtual

Destructor (empty)

106  {
107 #ifdef LEAK_CHECK
108  LeakCheckNames::AlgebraicNode_build -= 1;
109 #endif
110  }

◆ AlgebraicNode() [4/4]

oomph::AlgebraicNode::AlgebraicNode ( const AlgebraicNode )
delete

Broken copy constructor.

Member Function Documentation

◆ add_node_update_info() [1/2]

void oomph::AlgebraicNode::add_node_update_info ( AlgebraicMesh mesh_pt,
const Vector< GeomObject * > &  geom_object_pt,
const Vector< double > &  ref_value 
)
inline

Add algebraic update information for node: Which Mesh implements the update operation? Also, pass the vector of geometric objects and the vectors of reference values that are needed for the update operation. We're assigning a default node update fct id of 0.

334  {
335  // No update fct id supplied: Use a default assignment of 0.
336  unsigned id = 0;
337 
338  // If there's just one entry -- check if it's the default dummy one
339  if (Mesh_pt.size() == 1)
340  {
341  // Do we still have dummy default assignment stored as the one
342  // and only entry?
343  if (Mesh_pt.begin()->second == Dummy_mesh_pt)
344  {
345  if (Default_it_mesh_pt->second == Dummy_mesh_pt)
346  {
348  }
349  }
350  }
351 
352  // Now insert the actual info
353  Mesh_pt.insert(std::make_pair(id, mesh_pt));
354  Geom_object_pt.insert(std::make_pair(id, geom_object_pt));
355  Ref_value.insert(std::make_pair(id, ref_value));
356 
357  // Always use the "first" update fct as default -- can be overwritten
358  // outside (usually only done for self test)
359  set_default_node_update(Mesh_pt.begin()->first);
360  }
std::map< int, AlgebraicMesh * > Mesh_pt
Definition: algebraic_elements.h:439
std::map< int, AlgebraicMesh * >::iterator Default_it_mesh_pt
Default iterator for mesh: This mesh performs the default update.
Definition: algebraic_elements.h:456
void set_default_node_update(const int &id)
Make id-th node update function the default.
Definition: algebraic_elements.h:384
GeomObject * geom_object_pt(const unsigned &i)
Definition: algebraic_elements.h:229
AlgebraicMesh * mesh_pt()
Default (usually first) mesh that implements update function.
Definition: algebraic_elements.h:170
double ref_value(const unsigned &i)
Definition: algebraic_elements.h:267
void kill_node_update_info(const int &id=0)
Definition: algebraic_elements.h:365
std::map< int, Vector< GeomObject * > > Geom_object_pt
Definition: algebraic_elements.h:446
std::map< int, Vector< double > > Ref_value
Definition: algebraic_elements.h:453

References Default_it_mesh_pt, Dummy_mesh_pt, Dummy_node_update_fct_id, geom_object_pt(), Geom_object_pt, kill_node_update_info(), mesh_pt(), Mesh_pt, ref_value(), Ref_value, and set_default_node_update().

◆ add_node_update_info() [2/2]

void oomph::AlgebraicNode::add_node_update_info ( const int id,
AlgebraicMesh mesh_pt,
const Vector< GeomObject * > &  geom_object_pt,
const Vector< double > &  ref_value,
const bool called_from_constructor = false 
)
inline

Add algebraic update information for node: What's the ID of the mesh update function (typically used within the mesh) Which Mesh implements the update operation? Also, pass the vector of geometric objects and the vectors of reference values that are needed for the update operation. Negative values for ID are only allowed when called from node constructor, as indicated by the final argument which defaults to false.

285  {
286  // Sanity check
287  if (id < 0)
288  {
289  if (!called_from_constructor)
290  {
291  std::ostringstream error_message;
292  error_message << "\nNegative ID, " << id
293  << ", only allowed if called from constructor and\n"
294  << "indicated as such by optional boolean flag."
295  << std::endl;
296  throw OomphLibError(error_message.str(),
299  }
300  }
301 
302  // If there's just one entry -- check if it's the default dummy one
303  if (Mesh_pt.size() == 1)
304  {
305  if (Mesh_pt.begin()->second == Dummy_mesh_pt)
306  {
307  if (Default_it_mesh_pt->second == Dummy_mesh_pt)
308  {
310  }
311  }
312  }
313 
314  // Now insert the actual info
315  Mesh_pt.insert(std::make_pair(id, mesh_pt));
316  Geom_object_pt.insert(std::make_pair(id, geom_object_pt));
317  Ref_value.insert(std::make_pair(id, ref_value));
318 
319  // Always use the "first" update fct as default -- can be overwritten
320  // outside (usually only done for self test)
321  set_default_node_update(Mesh_pt.begin()->first);
322  }
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References Default_it_mesh_pt, Dummy_mesh_pt, Dummy_node_update_fct_id, geom_object_pt(), Geom_object_pt, kill_node_update_info(), mesh_pt(), Mesh_pt, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, ref_value(), Ref_value, and set_default_node_update().

Referenced by AlgebraicNode(), oomph::MyAlgebraicCollapsibleChannelMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicFSIDrivenCavityMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicElementBase::setup_algebraic_node_update(), oomph::RefineableAlgebraicChannelWithLeafletMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicCollapsibleChannelMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicCylinderWithFlagMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicFSIDrivenCavityMesh< ELEMENT >::update_node_update(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update_in_lower_right_box(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::update_node_update_in_region(), and oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update_in_upper_left_box().

◆ all_geom_object_pt()

GeomObject** oomph::AlgebraicNode::all_geom_object_pt ( )
inlinevirtual

Return the vector of all geometric objects.

Reimplemented from oomph::Node.

216  {
217  if (this->ngeom_object() == 0)
218  {
219  return 0;
220  }
221  else
222  {
223  return &(Default_it_geom_object_pt->second[0]);
224  }
225  }
std::map< int, Vector< GeomObject * > >::iterator Default_it_geom_object_pt
Definition: algebraic_elements.h:460
unsigned ngeom_object() const
Definition: algebraic_elements.h:192

References Default_it_geom_object_pt, and ngeom_object().

◆ geom_object_pt()

GeomObject* oomph::AlgebraicNode::geom_object_pt ( const unsigned i)
inline

◆ kill_node_update_info()

◆ mesh_pt() [1/2]

AlgebraicMesh* oomph::AlgebraicNode::mesh_pt ( )
inline

Default (usually first) mesh that implements update function.

171  {
172  return Default_it_mesh_pt->second;
173  }

References Default_it_mesh_pt.

Referenced by add_node_update_info(), node_update(), and oomph::AlgebraicElementBase::setup_algebraic_node_update().

◆ mesh_pt() [2/2]

AlgebraicMesh* oomph::AlgebraicNode::mesh_pt ( const int id)
inline

Mesh that implements the id-th node update function.

178  {
179  return Mesh_pt[id];
180  }

References Mesh_pt.

◆ ngeom_object() [1/2]

unsigned oomph::AlgebraicNode::ngeom_object ( ) const
inlinevirtual

Number of geometric objects involved in default (usually first) update function

Reimplemented from oomph::Node.

193  {
194  return Default_it_geom_object_pt->second.size();
195  }

References Default_it_geom_object_pt.

Referenced by all_geom_object_pt().

◆ ngeom_object() [2/2]

unsigned oomph::AlgebraicNode::ngeom_object ( const int id)
inline

Number of geometric objects involved in id-th update function.

185  {
186  return Geom_object_pt[id].size();
187  }

References Geom_object_pt.

◆ nnode_update_fcts()

unsigned oomph::AlgebraicNode::nnode_update_fcts ( )
inline

Number of node update fcts.

137  {
138  // Note: We could read this information out from any one of
139  // various maps that that store the information for the
140  // different node update functions...
141  return Mesh_pt.size();
142  }

References Mesh_pt.

Referenced by node_update(), and self_test().

◆ node_update()

void oomph::AlgebraicNode::node_update ( const bool update_all_time_levels_for_new_node = false)
virtual

Broken assignment operator.

Update the current nodal position, using the first (default) update function if there are multiple ones. If required perform the auxiliary update of nodal values. If update_all_time_levels_for_new_node==true, previous positions are also updated – as indicated by the name of this flag, this should only be done for newly created nodes, when this function is called from AlgebraicElementBase::setup_algebraic_node_update(...)

Excute the node update function: Update the current (and if update_all_time_levels_for_new_node==true also the previous) nodal position. Also update the current nodal values if an auxiliary update function is defined. Note: updating of previous positions is only required (and should only be performed for) newly created AlgebraicNodes i.e. when this function is called from AlgebraicElementBase::setup_algebraic_node_update(...). We create the history of its nodal positions from the time-dependent version of the specific AlgebraicMesh's algebraic_node_update(...) function.

Perform auxiliary update of function values?

Reimplemented from oomph::Node.

233  {
234  // Number of time levels that need to be updated
235  unsigned ntime;
236  if (update_all_time_levels_for_new_node)
237  {
238  // Present value plus previous values
239  ntime = 1 + Position_time_stepper_pt->nprev_values();
240  }
241  else
242  {
243  // Present value only
244  ntime = 1;
245  }
246 
247  // Is it a hanging node?
248  if (is_hanging())
249  {
250  // Loop over all master nodes and update their position
251  // That's all we need to update the position of hanging nodes!
252  // (Recall that for hanging nodes Node::x(...) is not
253  // guaranteed to be kept up-to-date; the (constrained!) nodal
254  // position of hanging nodes must be determined via
255  // Node::position() which determines the position
256  // via the hanging node constraints from the position of
257  // the master nodes)
258  unsigned nmaster = hanging_pt()->nmaster();
259  for (unsigned imaster = 0; imaster < nmaster; imaster++)
260  {
261  dynamic_cast<AlgebraicNode*>(hanging_pt()->master_node_pt(imaster))
262  ->node_update();
263  }
264  }
265  // Node isn't hanging --> update it directly
266  else
267  {
268  // If no update function is defined, keep the nodal positions where
269  // they were (i.e. don't do anything), else update
270  if (nnode_update_fcts() != 0)
271  {
272  // Loop over time levels
273  for (unsigned t = 0; t < ntime; t++)
274  {
275  // Update nodal position
276  AlgebraicMesh* mesh_pt = Mesh_pt.begin()->second;
277  // Not sure why I need this intermediate variable....
278  AlgebraicNode* node_pt = this;
279  mesh_pt->algebraic_node_update(t, node_pt);
280  }
281  }
282  }
283 
285  if (Aux_node_update_fct_pt != 0)
286  {
288  }
289  }
virtual void algebraic_node_update(const unsigned &t, AlgebraicNode *&node_pt)=0
void node_update(const bool &update_all_time_levels_for_new_node=false)
Broken assignment operator.
Definition: algebraic_elements.cc:231
AlgebraicNode()
Default Constructor.
Definition: algebraic_elements.h:58
unsigned nnode_update_fcts()
Number of node update fcts.
Definition: algebraic_elements.h:136
Node *const & master_node_pt(const unsigned &i) const
Return a pointer to the i-th master node.
Definition: nodes.h:791
unsigned nmaster() const
Return the number of master nodes.
Definition: nodes.h:785
HangInfo *const & hanging_pt() const
Definition: nodes.h:1228
AuxNodeUpdateFctPt Aux_node_update_fct_pt
Definition: nodes.h:967
TimeStepper * Position_time_stepper_pt
Pointer to the timestepper associated with the position data.
Definition: nodes.h:932
bool is_hanging() const
Test whether the node is geometrically hanging.
Definition: nodes.h:1285
virtual unsigned nprev_values() const =0
Number of previous values available: 0 for static, 1 for BDF<1>,...
t
Definition: plotPSD.py:36

References oomph::AlgebraicMesh::algebraic_node_update(), oomph::Node::Aux_node_update_fct_pt, oomph::Node::hanging_pt(), oomph::Node::is_hanging(), oomph::HangInfo::master_node_pt(), mesh_pt(), Mesh_pt, oomph::HangInfo::nmaster(), nnode_update_fcts(), oomph::TimeStepper::nprev_values(), oomph::Node::Position_time_stepper_pt, and plotPSD::t.

Referenced by oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::Mesh::delete_all_external_storage(), oomph::AlgebraicMesh::node_update(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), self_test(), and oomph::AlgebraicElementBase::setup_algebraic_node_update().

◆ node_update_fct_id() [1/2]

◆ node_update_fct_id() [2/2]

void oomph::AlgebraicNode::node_update_fct_id ( Vector< int > &  id)
inline

Return vector of node update fct ids (vector is resized to contain the correct number of entries). Somewhat costly to call as map needs to be copied into vector.

155  {
156  // Resize vector
157  id.resize(0);
158 
159  // Loop over all entries and copy them across (again, we could
160  // get this information from any of the maps...)
161  typedef std::map<int, AlgebraicMesh*>::iterator IT;
162  for (IT it = Mesh_pt.begin(); it != Mesh_pt.end(); it++)
163  {
164  id.push_back(it->first);
165  }
166  }

References Mesh_pt.

◆ nref_value() [1/2]

unsigned oomph::AlgebraicNode::nref_value ( )
inline

Number of reference values involved in default (usually first) update function

244  {
245  return Default_it_ref_value->second.size();
246  }
std::map< int, Vector< double > >::iterator Default_it_ref_value
Definition: algebraic_elements.h:464

References Default_it_ref_value.

◆ nref_value() [2/2]

unsigned oomph::AlgebraicNode::nref_value ( const int id)
inline

Number of reference values involved in id-th update function.

236  {
237  return Ref_value[id].size();
238  }

References Ref_value.

Referenced by oomph::AlgebraicElementBase::setup_algebraic_node_update().

◆ ref_value()

double oomph::AlgebraicNode::ref_value ( const unsigned i)
inline

◆ self_test()

unsigned oomph::AlgebraicNode::self_test ( )

Perform self test: If the node has multiple node update functions, check that they all give the same result. Return 1/0 for failure/success. (Failure if max. difference between the nodal positions for different update functions exceeds AlgebraicNode::Max_allowed_difference_between_node_update_fcts

Perform self test: If the node has multiple update functions, check that all update functions give the same result (with a tolerance of AlgebraicNode::Max_allowed_difference_between_node_update_fcts

298  {
299  // Initialise
300  bool passed = true;
301 
302  unsigned test = Node::self_test();
303  if (test != 0)
304  {
305  passed = false;
306  }
307 
308  // Loop over all update functions
309  unsigned nnode_update = nnode_update_fcts();
310 
311  // If there is just one (or no) update function, then no conflict
312  // can arise and the error is zero.
313  if (nnode_update <= 1)
314  {
315  // return 0;
316  }
317  // Multiple update funcions: check consistency
318  else
319  {
320  // Initialise error
321  double err_max = 0.0;
322 
323  // Spatial (Eulerian) position of the node
324  unsigned ndim_node = ndim();
325  Vector<double> x_0(ndim_node);
326  Vector<double> x_new(ndim_node);
327 
328  // Get vector of update fct ids
329  Vector<int> id;
330  node_update_fct_id(id);
331 
332 
333  // Quick consistency check
334 #ifdef PARANOID
335  if (id.size() != nnode_update)
336  {
337  std::ostringstream error_stream;
338  error_stream << "Inconsistency between number of node update ids:"
339  << nnode_update << " and " << id.size() << std::endl;
340  throw OomphLibError(
341  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
342  }
343 #endif
344 
345 
346  // Update with first update function
347 
348  // Set default update function
350 
351  // Update the node:
352  node_update();
353 
354  // Store coordinates
355  for (unsigned i = 0; i < ndim_node; i++)
356  {
357  x_0[i] = x(i);
358  }
359 
360 
361  // Loop over all other update functions
362  for (unsigned iupdate = 1; iupdate < nnode_update; iupdate++)
363  {
364  // Set default update function
365  set_default_node_update(id[iupdate]);
366 
367  // Update the node:
368  node_update();
369 
370  // Store coordinates
371  for (unsigned i = 0; i < ndim_node; i++)
372  {
373  x_new[i] = x(i);
374  }
375 
376  // Check error
377  double err = 0.0;
378  for (unsigned i = 0; i < ndim_node; i++)
379  {
380  err += (x_new[i] - x_0[i]) * (x_new[i] - x_0[i]);
381  }
382  err = sqrt(err);
383  if (err > err_max)
384  {
385  err_max = err;
386  }
387 
388  // Dump out
390  {
391  oomph_info << "Discrepancy in algebraic update function " << iupdate
392  << ": " << x_0[0] << " " << x_0[1] << " " << x_new[0]
393  << " " << x_new[1] << std::endl;
394 
395  passed = false;
396  }
397  }
398 
399 
400  // Update again with first update function to reset
401 
402  // Set default update function
404 
405  // Update the node:
406  node_update();
407 
408  // Return verdict
409  if (passed)
410  {
411  return 0;
412  }
413  else
414  {
415  return 1;
416  }
417  }
418  // Catch all to remove compiler warning
419  return 0;
420  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
static double Max_allowed_difference_between_node_update_fcts
Definition: algebraic_elements.h:471
int node_update_fct_id()
Default (usually first if there are multiple ones) node update fct id.
Definition: algebraic_elements.h:146
unsigned self_test()
Definition: nodes.cc:965
double & x(const unsigned &i)
Return the i-th nodal coordinate.
Definition: nodes.h:1060
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
Definition: nodes.h:1054
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
Definition: indexed_view.cpp:20

References i, Max_allowed_difference_between_node_update_fcts, oomph::Node::ndim(), nnode_update_fcts(), node_update(), node_update_fct_id(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, oomph::Data::self_test(), set_default_node_update(), size, sqrt(), and oomph::Node::x().

◆ set_default_node_update()

void oomph::AlgebraicNode::set_default_node_update ( const int id)
inlineprivate

Make id-th node update function the default.

385  {
386  // Set default node update fct id
388 
389 
390  // Set iterators for default entry
391 
392  // Iterator to default mesh:
393  Default_it_mesh_pt = Mesh_pt.find(id);
394 #ifdef PARANOID
395  if (Default_it_mesh_pt == Mesh_pt.end())
396  {
397  std::ostringstream error_message;
398  error_message << "There is no reference mesh for node update fct id"
399  << id << std::endl;
400  throw OomphLibError(error_message.str(),
403  }
404 #endif
405 
406  // Iterator to default GeomObject vector
408 #ifdef PARANOID
410  {
411  std::ostringstream error_message;
412  error_message << "There is no Geom_object_pt for node update fct id"
413  << id << std::endl;
414  throw OomphLibError(error_message.str(),
417  }
418 #endif
419 
420  // Iterator to default values vector
421  Default_it_ref_value = Ref_value.find(id);
422 #ifdef PARANOID
423  if (Default_it_ref_value == Ref_value.end())
424  {
425  std::ostringstream error_message;
426  error_message << "There is no Ref_value for node update fct id" << id
427  << std::endl;
428  throw OomphLibError(error_message.str(),
431  }
432 #endif
433  }

References Default_it_geom_object_pt, Default_it_mesh_pt, Default_it_ref_value, Default_node_update_fct_id, Geom_object_pt, Mesh_pt, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and Ref_value.

Referenced by add_node_update_info(), and self_test().

◆ vector_geom_object_pt() [1/2]

Vector<GeomObject*>& oomph::AlgebraicNode::vector_geom_object_pt ( )
inline

Return vector of geometric objects involved in default (usually first) update function

209  {
210  return Default_it_geom_object_pt->second;
211  }

References Default_it_geom_object_pt.

◆ vector_geom_object_pt() [2/2]

Vector<GeomObject*>& oomph::AlgebraicNode::vector_geom_object_pt ( const int id)
inline

Return vector of geometric objects involved in id-th update function

201  {
202  return Geom_object_pt[id];
203  }

References Geom_object_pt.

Referenced by oomph::MyAlgebraicCollapsibleChannelMesh< ELEMENT >::algebraic_node_update(), oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::algebraic_node_update(), oomph::AlgebraicFSIDrivenCavityMesh< ELEMENT >::algebraic_node_update(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::node_update_central_region(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_I(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_I(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_II(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_II(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_III(), 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::AlgebraicCylinderWithFlagMesh< 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::AlgebraicElementBase::setup_algebraic_node_update(), oomph::RefineableAlgebraicChannelWithLeafletMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicCollapsibleChannelMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicCylinderWithFlagMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicFSIDrivenCavityMesh< ELEMENT >::update_node_update(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update_in_lower_right_box(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::update_node_update_in_region(), and oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update_in_upper_left_box().

◆ vector_ref_value() [1/2]

Vector<double>& oomph::AlgebraicNode::vector_ref_value ( )
inline

Return vector of reference values involved in default (usually first) update function

252  {
253  return Default_it_ref_value->second;
254  }

References Default_it_ref_value.

Referenced by oomph::MyAlgebraicCollapsibleChannelMesh< ELEMENT >::algebraic_node_update(), oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::algebraic_node_update(), oomph::AlgebraicFSIDrivenCavityMesh< ELEMENT >::algebraic_node_update(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::node_update_central_region(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_I(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_I(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_II(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_II(), oomph::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_III(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::node_update_III(), 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::AlgebraicChannelWithLeafletMesh< ELEMENT >::node_update_IV(), oomph::AlgebraicCylinderWithFlagMesh< 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::AlgebraicElementBase::setup_algebraic_node_update(), oomph::RefineableAlgebraicChannelWithLeafletMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicCollapsibleChannelMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicCylinderWithFlagMesh< ELEMENT >::update_node_update(), oomph::RefineableAlgebraicFSIDrivenCavityMesh< ELEMENT >::update_node_update(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update_in_lower_right_box(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::update_node_update_in_region(), and oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update_in_upper_left_box().

◆ vector_ref_value() [2/2]

Vector<double>& oomph::AlgebraicNode::vector_ref_value ( const int id)
inline

Return vector of reference values involved in id-th update function

260  {
261  return Ref_value[id];
262  }

References Ref_value.

Member Data Documentation

◆ Default_it_geom_object_pt

std::map<int, Vector<GeomObject*> >::iterator oomph::AlgebraicNode::Default_it_geom_object_pt
private

Default iterator for vector of geom objects. These GeomObjects are involved in the default update.

Referenced by all_geom_object_pt(), geom_object_pt(), ngeom_object(), set_default_node_update(), and vector_geom_object_pt().

◆ Default_it_mesh_pt

std::map<int, AlgebraicMesh*>::iterator oomph::AlgebraicNode::Default_it_mesh_pt
private

Default iterator for mesh: This mesh performs the default update.

Referenced by add_node_update_info(), mesh_pt(), and set_default_node_update().

◆ Default_it_ref_value

std::map<int, Vector<double> >::iterator oomph::AlgebraicNode::Default_it_ref_value
private

Default iterator for vector of ref values. These reference values are involved in the default update.

Referenced by nref_value(), ref_value(), set_default_node_update(), and vector_ref_value().

◆ Default_node_update_fct_id

int oomph::AlgebraicNode::Default_node_update_fct_id
private

Default node update function ID.

Referenced by node_update_fct_id(), and set_default_node_update().

◆ Dummy_geom_object_pt

Vector< GeomObject * > oomph::AlgebraicNode::Dummy_geom_object_pt
staticprivate

Default dummy vector of geom objects to point to for nodes for which no remesh fct is defined

Zero-sized default dummy vector of geom objects to point to for nodes for which no remesh fct is defined

Referenced by AlgebraicNode().

◆ Dummy_mesh

DummyAlgebraicMesh oomph::AlgebraicNode::Dummy_mesh
staticprivate

Static Dummy mesh to which the pointer is addressed.

Set the dummy mesh.

◆ Dummy_mesh_pt

AlgebraicMesh * oomph::AlgebraicNode::Dummy_mesh_pt = &AlgebraicNode::Dummy_mesh
staticprivate

Default dummy mesh to point to for nodes for which no remesh fct is defined

Referenced by add_node_update_info(), and AlgebraicNode().

◆ Dummy_node_update_fct_id

int oomph::AlgebraicNode::Dummy_node_update_fct_id = -100
staticprivate

Default (negative!) remesh fct id for nodes for which no remesh fct is defined

Referenced by add_node_update_info(), and AlgebraicNode().

◆ Dummy_ref_value

Vector< double > oomph::AlgebraicNode::Dummy_ref_value
staticprivate

Default dummy vector of reference values to point to for nodes for which no remesh fct is defined

Zero-sized default dummy vector of reference values to point to for nodes for which no remesh fct is defined

Referenced by AlgebraicNode().

◆ Geom_object_pt

std::map<int, Vector<GeomObject*> > oomph::AlgebraicNode::Geom_object_pt
private

Vector of geometric objects that are involved in the specified node update operation. (Map because this node may only use the Mesh's 116th node update fct. There's no point in wasting an entire vector for the non-existing entries)

Referenced by add_node_update_info(), kill_node_update_info(), ngeom_object(), set_default_node_update(), and vector_geom_object_pt().

◆ Max_allowed_difference_between_node_update_fcts

double oomph::AlgebraicNode::Max_allowed_difference_between_node_update_fcts
staticprivate
Initial value:
=
1.0e-10

What it says: Used in self-test to check if different node update functions produce the same result.

//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Assign default value for test if different node update functions produce the same result.

Referenced by self_test().

◆ Mesh_pt

std::map<int, AlgebraicMesh*> oomph::AlgebraicNode::Mesh_pt
private

Pointer to mesh that performs the specified node update operation (Map because this node may only use the Mesh's 116th node update fct. There's no point in wasting an entire vector for the non-existing entries)

Referenced by add_node_update_info(), kill_node_update_info(), mesh_pt(), nnode_update_fcts(), node_update(), node_update_fct_id(), and set_default_node_update().

◆ Ref_value

std::map<int, Vector<double> > oomph::AlgebraicNode::Ref_value
private

Vector of reference values that are required for the specified node update operation. (Map because this node may only use the Mesh's 116th node update fct. There's no point in wasting an entire vector for the non-existing entries)

Referenced by add_node_update_info(), kill_node_update_info(), nref_value(), set_default_node_update(), and vector_ref_value().


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