oomph::Data Class Reference

#include <nodes.h>

+ Inheritance diagram for oomph::Data:

Public Member Functions

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 assign_eqn_numbers (unsigned long &global_ndof, Vector< double * > &dof_pt)
 
virtual void describe_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void resize (const unsigned &n_value)
 Change (increase) the number of values that may be stored. More...
 
virtual void add_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt)
 

Static Public Attributes

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

virtual void reset_copied_pointers ()
 

Protected Attributes

Data ** Copy_of_data_pt
 
unsigned Ncopies
 

Static Protected Attributes

static TimeStepperDefault_static_time_stepper_pt = new Steady<0>()
 Default (static) timestepper used in steady problems. More...
 

Private Member Functions

void range_check (const unsigned &t, const unsigned &i) const
 
void delete_value_storage ()
 
void add_copy (Data *const &data_pt)
 
void remove_copy (Data *const &data_pt)
 

Private Attributes

double ** Value
 
long * Eqn_number
 
TimeStepperTime_stepper_pt
 
unsigned Nvalue
 Number of values stored in the data object. More...
 

Friends

class HijackedData
 
class CopiedData
 
class BoundaryNodeBase
 
template<class NODE_TYPE >
class BoundaryNode
 
class SolidNode
 
std::ostream & operator<< (std::ostream &out, const Data &d)
 

Detailed Description

A class that represents a collection of data; each Data object may contain many different individual values, as would be natural in non-scalar problems. Data provides storage for auxiliary ‘history’ values that are used by TimeStepper objects to calculate the time derivatives of the stored data and also stores a pointer to the appropriate TimeStepper object. In addition, an associated (global) equation number is stored for each value.

The Data class permits copies of the stored data values and equation numbers into another Data object using the copy() function. Shallow (pointer based) copies of the values can be obtained by using specific derived classes. In such cases pointers to the objects that contain the pointer-based copies should be stored in the original Data class (in the array Copy_of_data_pt) so that resize and destruction operations can be performed safely.

Constructor & Destructor Documentation

◆ Data() [1/4]

oomph::Data::Data ( )

Default constructor.

Default: Just set pointer to (steady) timestepper. No storage for values is allocated.

238  : Value(0),
239  Eqn_number(0),
241  Copy_of_data_pt(0),
242  Ncopies(0),
243  Nvalue(0)
244 #ifdef OOMPH_HAS_MPI
245  ,
246  Non_halo_proc_ID(-1)
247 #endif
248 
249  {
250  }
static TimeStepper * Default_static_time_stepper_pt
Default (static) timestepper used in steady problems.
Definition: nodes.h:162
long * Eqn_number
Definition: nodes.h:116
unsigned Nvalue
Number of values stored in the data object.
Definition: nodes.h:135
Data ** Copy_of_data_pt
Definition: nodes.h:127
TimeStepper * Time_stepper_pt
Definition: nodes.h:122
unsigned Ncopies
Definition: nodes.h:131
double ** Value
Definition: nodes.h:112

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

◆ Data() [2/4]

oomph::Data::Data ( const unsigned initial_n_value)

Default constructor for steady problems: assign memory for initial_n_value values.

Default constructor for steady problems. Memory is assigned for a given number of values, which are assumed to be free (not pinned)

257  : Value(0),
258  Eqn_number(0),
260  Copy_of_data_pt(0),
261  Ncopies(0),
262  Nvalue(initial_n_value)
263 #ifdef OOMPH_HAS_MPI
264  ,
265  Non_halo_proc_ID(-1)
266 #endif
267  {
268  // Only bother to do something if there are values
269  if (initial_n_value > 0)
270  {
271  // Allocate initial_n_value values in the value and equation number
272  // storage schemes.
273  Value = new double*[initial_n_value];
274  Eqn_number = new long[initial_n_value];
275 
276  // Allocate contiguous arrays of doubles and longs to
277  // hold the data values.
278  double* values = new double[initial_n_value];
279 
280  // Set the pointers to the data values and equation numbers
281  // and initialise the actual values.
282  for (unsigned i = 0; i < initial_n_value; i++)
283  {
284  // Set the pointer from the address in the contiguous array
285  Value[i] = &values[i];
286  // Initialise the value to zero
287  Value[i][0] = 0.0;
288  // Initialise the equation number to Is_unclassified
290  }
291  }
292  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
static long Is_unclassified
Definition: nodes.h:192

References Eqn_number, i, Is_unclassified, and Value.

◆ Data() [3/4]

oomph::Data::Data ( TimeStepper *const &  time_stepper_pt_,
const unsigned initial_n_value,
const bool allocate_storage = true 
)

Constructor for unsteady problems: assign memory for initial_n_value values and any memory required by the Timestepper for the storage of history values.

Constructor for unsteady problems. Memory is assigned for a given number of values; and the additional storage required by the Timestepper. The values are assumed to be free (not pinned).

302  : Value(0),
303  Eqn_number(0),
304  Time_stepper_pt(time_stepper_pt_),
305  Copy_of_data_pt(0),
306  Ncopies(0),
307  Nvalue(initial_n_value)
308 #ifdef OOMPH_HAS_MPI
309  ,
310  Non_halo_proc_ID(-1)
311 #endif
312  {
313  // If we are in charge of allocating the storage,
314  // and there are data to allocate, do so
315  if ((allocate_storage) && (initial_n_value > 0))
316  {
317  // Allocate storage for initial_n_value equation numbers
318  Eqn_number = new long[initial_n_value];
319 
320  // Locally cache the number of time history values
321  const unsigned n_tstorage = ntstorage();
322 
323  // There will be initial_n_value pointers each addressing and array
324  // of n_tstorage doubles.
325  Value = new double*[initial_n_value];
326 
327  // Allocate all the data values in one big array for data locality.
328  double* values = new double[initial_n_value * n_tstorage];
329 
330  // Set the pointers to the data values and equation numbers
331  for (unsigned i = 0; i < initial_n_value; i++)
332  {
333  // Set the pointers to the start of the time history values
334  // allocated for each value.
335  Value[i] = &values[i * n_tstorage];
336  // Initialise all values to zero
337  for (unsigned t = 0; t < n_tstorage; t++)
338  {
339  Value[i][t] = 0.0;
340  }
341  // Initialise the equation number to be unclassified.
343  }
344  }
345  }
unsigned ntstorage() const
Definition: nodes.cc:879
t
Definition: plotPSD.py:36

References Eqn_number, i, Is_unclassified, ntstorage(), plotPSD::t, and Value.

◆ Data() [4/4]

oomph::Data::Data ( const Data data)
delete

Broken copy constructor.

◆ ~Data()

oomph::Data::~Data ( )
virtual

Destructor, deallocates memory assigned for data.

Virtual destructor, deallocates memory assigned for data.

484  {
485  // If we have any copies clear their pointers
486  for (unsigned i = 0; i < Ncopies; i++)
487  {
489  }
490 
491  // Now delete the storage allocated for pointers to the copies
492  delete[] Copy_of_data_pt;
493  Copy_of_data_pt = 0;
494 
495  // Clean up the allocated storage
497  }
virtual void clear_copied_pointers()
Definition: nodes.cc:176
void delete_value_storage()
Definition: nodes.cc:187

References clear_copied_pointers(), Copy_of_data_pt, delete_value_storage(), i, and Ncopies.

Member Function Documentation

◆ add_copy()

void oomph::Data::add_copy ( Data *const &  data_pt)
private

Add the pointer data_pt to the array Copy_of_data_pt. This should be used whenever copies are made of the data.

Add the pointer data_pt to the internal storage used to keep track of copies of the Data object.

77  {
78  // Find the current number of copies
79  const unsigned n_copies = Ncopies;
80  // Allocate storage for the pointers to the new number of copies
81  Data** new_copy_of_data_pt = new Data*[n_copies + 1];
82  // Copy over the exisiting pointers
83  for (unsigned i = 0; i < n_copies; i++)
84  {
85  new_copy_of_data_pt[i] = Copy_of_data_pt[i];
86  }
87  // Add the new pointer to the end
88  new_copy_of_data_pt[n_copies] = data_pt;
89 
90  // Delete the old storage
91  delete[] Copy_of_data_pt;
92  // Allocate the new storage
93  Copy_of_data_pt = new_copy_of_data_pt;
94  // Increase the number of copies
95  ++Ncopies;
96  }
Data()
Default constructor.
Definition: nodes.cc:237

References Copy_of_data_pt, i, and Ncopies.

Referenced by oomph::CopiedData::CopiedData(), oomph::HijackedData::HijackedData(), oomph::BoundaryNodeBase::make_node_periodic(), and oomph::BoundaryNodeBase::make_nodes_periodic().

◆ add_value_pt_to_map()

void oomph::Data::add_value_pt_to_map ( std::map< unsigned, double * > &  map_of_value_pt)
virtual

Add pointers to all unpinned and unconstrained data to a map indexed by (global) equation number

Reimplemented in oomph::SolidNode.

1090  {
1091  // How many values does it have
1092  const unsigned n_value = this->nvalue();
1093  // Find the global equation number
1094  for (unsigned i = 0; i < n_value; i++)
1095  {
1096  int global_eqn = this->eqn_number(i);
1097  // If it is a degree of freedom, add it to the map
1098  if (global_eqn >= 0)
1099  {
1100  map_of_value_pt[static_cast<unsigned>(global_eqn)] = this->value_pt(i);
1101  }
1102  }
1103  }
long & eqn_number(const unsigned &i)
Return the equation number of the i-th stored variable.
Definition: nodes.h:367
double * value_pt(const unsigned &i) const
Definition: nodes.h:324
unsigned nvalue() const
Return number of values stored in data object (incl pinned ones).
Definition: nodes.h:483

References eqn_number(), i, nvalue(), and value_pt().

Referenced by oomph::GeneralisedElement::add_internal_value_pt_to_map(), and oomph::SolidNode::add_value_pt_to_map().

◆ assign_eqn_numbers()

void oomph::Data::assign_eqn_numbers ( unsigned long &  global_number,
Vector< double * > &  dof_pt 
)
virtual

Assign global equation numbers; increment global number of unknowns, global_ndof; and add any new dofs to the dof_pt.

Assign (global) equation number. This function does NOT initialise the value because if we're using things like node position as variables in the problem they will have been set before the call to assign equation numbers and setting it to zero will wipe it out :(.

Pass:

  • current number of global dofs global_number (which gets incremented)
  • the Vector of pointers to global dofs (to which new dofs get added)

Reimplemented in oomph::SolidNode, oomph::Node, oomph::CopiedData, and oomph::HijackedData.

898  {
899  // Loop over the number of variables
900  // Set temporary to hold range
901  const unsigned eqn_number_range = Nvalue;
902  for (unsigned i = 0; i < eqn_number_range; i++)
903  {
904 #ifdef OOMPH_HAS_MPI
905  // Is the node a halo? If so, treat it as pinned for now
906  // This will be overwritten with the actual equation number
907  // during the synchronisation phase.
908  if (is_halo())
909  {
911  }
912  else
913 #endif
914  {
915  // Boundary conditions test: if it's not a pinned or constrained
916  // variable, The assign a new global equation number
917  if ((!is_pinned(i)) && (!is_constrained(i)) &&
919  {
920  // Assign the equation number and increment global equation number
921  Eqn_number[i] = global_number++;
922  // Add pointer to global dof vector
923  dof_pt.push_back(value_pt(i));
924  }
925  }
926  }
927  }
static long Is_pinned
Static "Magic number" to indicate pinned values.
Definition: nodes.h:183
bool is_segregated_solve_pinned(const unsigned &i)
Definition: nodes.h:424
bool is_constrained(const unsigned &i)
Definition: nodes.h:472
bool is_pinned(const unsigned &i) const
Test whether the i-th variable is pinned (1: true; 0: false).
Definition: nodes.h:417

References Eqn_number, eqn_number(), i, is_constrained(), Is_pinned, is_pinned(), is_segregated_solve_pinned(), Nvalue, and value_pt().

Referenced by oomph::Node::assign_eqn_numbers(), oomph::BoundaryNode< NODE_TYPE >::assign_eqn_numbers(), oomph::SolidNode::assign_eqn_numbers(), and oomph::GeneralisedElement::assign_internal_eqn_numbers().

◆ clear_copied_pointers()

void oomph::Data::clear_copied_pointers ( )
virtual

Helper function that should be overloaded derived classes that contain copies of data. The function must unset (NULL out) the internal pointers to the copied data. This is used when destructing data to ensure that all pointers remain valid. The default implementation throws an error because Data cannot be a copy.

Helper function that should be overloaded classes that contain copies of data. The function must unset (NULL out) the internal pointers to the copied data. This is used when destructing data to ensure that all pointers remain valid.

Reimplemented in oomph::CopiedData, and oomph::HijackedData.

177  {
178  throw OomphLibError("Data can never be a copy",
181  }
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by ~Data().

◆ constrain()

void oomph::Data::constrain ( const unsigned i)
inline

Constrain the i-th stored variable when making hanging data If the data is already pinned leave it along, otherwise mark as constrained (hanging)

433  {
434  if (eqn_number(i) != Is_pinned)
435  {
437  }
438  }
static long Is_constrained
Definition: nodes.h:198

References eqn_number(), i, Is_constrained, and Is_pinned.

Referenced by oomph::Node::assign_eqn_numbers(), constrain_all(), oomph::Node::resize(), and oomph::Node::set_hanging_pt().

◆ constrain_all()

void oomph::Data::constrain_all ( )
inline

Constrain all the stored variables when the data is made hanging.

452  {
453  const unsigned n_value = Nvalue;
454  for (unsigned i = 0; i < n_value; i++)
455  {
456  constrain(i);
457  }
458  }
void constrain(const unsigned &i)
Definition: nodes.h:432

References constrain(), i, and Nvalue.

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

◆ copy()

void oomph::Data::copy ( Data orig_data_pt)

Copy Data values from specified Data object.

602  {
603  // Find the amount of data stored
604  const unsigned n_value = nvalue();
605  const unsigned n_time = ntstorage();
606 
607  // Check # of values:
608  const unsigned long n_value_orig = orig_data_pt->nvalue();
609  if (n_value != n_value_orig)
610  {
611  std::ostringstream error_stream;
612  error_stream << "The number of values, " << n_value
613  << " is not the same of those in the original data "
614  << n_value_orig << std::endl;
615 
616  throw OomphLibError(
617  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
618  }
619  const unsigned long n_time_orig = orig_data_pt->ntstorage();
620  if (n_time != n_time_orig)
621  {
622  std::ostringstream error_stream;
623  error_stream << "The number of time history values, " << n_time
624  << " is not the same of those in the original data "
625  << n_time_orig << std::endl;
626 
627  throw OomphLibError(
628  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
629  }
630 
631  // Read data
632  for (unsigned t = 0; t < n_time; t++)
633  {
634  for (unsigned j = 0; j < n_value; j++)
635  {
636  set_value(t, j, orig_data_pt->value(t, j));
637  }
638  }
639  }
void set_value(const unsigned &i, const double &value_)
Definition: nodes.h:271
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References j, ntstorage(), nvalue(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, set_value(), plotPSD::t, and value().

Referenced by oomph::Node::copy(), oomph::Problem::copy(), and oomph::SolidNode::copy().

◆ delete_value_storage()

void oomph::Data::delete_value_storage ( )
private

Delete all storage allocated by the Data object for values and equation numbers.

Delete all the storage allocated by the Data object and set its pointers to NULL

188  {
189  // If we have nulled out the storage already return immediately
190  if ((Value == 0) && (Eqn_number == 0))
191  {
192  return;
193  }
194 
195  // Delete the double storage arrays at once (they were allocated at once)
196  delete[] Value[0];
197  // Delete the pointers to the arrays.
198  delete[] Value;
199  delete[] Eqn_number;
200  // Null out the pointers
201  Value = 0;
202  Eqn_number = 0;
203  }

References Eqn_number, and Value.

Referenced by oomph::BoundaryNodeBase::make_node_periodic(), oomph::BoundaryNodeBase::make_nodes_periodic(), and ~Data().

◆ describe_dofs()

void oomph::Data::describe_dofs ( std::ostream &  out,
const std::string &  current_string 
) const
virtual

Function to describe the dofs of the Node. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...)

Function to describe the dofs of the Data. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...)

Reimplemented in oomph::SolidNode.

941  {
942  // Loop over the number of variables
943  const unsigned eqn_number_range = Nvalue;
944  for (unsigned i = 0; i < eqn_number_range; i++)
945  {
946  int eqn_number = Eqn_number[i];
947  if (eqn_number >= 0)
948  {
949  // Note: The spacing around equation number is deliberate.
950  // It allows for searching more easily as Eqn:<space>5<space> would
951  // return a unique dof, whereas Eqn:<space>5 would also return those
952  // starting with 5, such as 500.
953  out << "Eqn: " << eqn_number << " | Value " << i << current_string
954  << std::endl;
955  }
956  }
957  }
std::ofstream out("Result.txt")

References Eqn_number, eqn_number(), i, Nvalue, and out().

Referenced by oomph::GeneralisedElement::describe_dofs(), oomph::SolidNode::describe_dofs(), oomph::ElementWithExternalElement::describe_local_dofs(), oomph::ElementWithMovingNodes::describe_local_dofs(), oomph::GeneralisedElement::describe_local_dofs(), oomph::FSIWallElement::describe_local_dofs(), oomph::SpectralElement::describe_local_dofs(), and oomph::FiniteElement::describe_nodal_local_dofs().

◆ does_pointer_correspond_to_value()

bool oomph::Data::does_pointer_correspond_to_value ( double *const &  parameter_pt)

Check whether the pointer parameter_pt addresses internal data values.

If pointer parameter_pt addresses internal data values then return return true, otherwise return false

569  {
570  // If there is no value data then return false
571  if (Value == 0)
572  {
573  return false;
574  }
575 
576  // Find the amount of data stored
577  const unsigned n_value = nvalue();
578  const unsigned n_time = ntstorage();
579  const unsigned n_storage = n_value * n_time;
580 
581  // Pointer to the local data
582  double* local_value_pt = Value[0];
583 
584  // Loop over data and if we find the pointer then return true
585  for (unsigned i = 0; i < n_storage; ++i)
586  {
587  if (parameter_pt == (local_value_pt + i))
588  {
589  return true;
590  }
591  }
592 
593  // If we get to here we haven't found the data
594  return false;
595  }

References i, ntstorage(), nvalue(), and Value.

Referenced by oomph::Mesh::does_pointer_correspond_to_mesh_data(), and oomph::SolidNode::does_pointer_correspond_to_position_data().

◆ dump()

void oomph::Data::dump ( std::ostream &  dump_file) const

Dump the data object to a file.

Dump data object to a file.

646  {
647  // Find the amount of storage used
648  const unsigned value_pt_range = nvalue();
649  const unsigned time_steps_range = ntstorage();
650 
651  // Only write data if there is some stored
652  if (value_pt_range * time_steps_range > 0)
653  {
654  dump_file << value_pt_range << " # number of data values" << std::endl;
655  dump_file << time_steps_range << " # number of doubles for time history"
656  << std::endl;
657 
658  // Write data
659  for (unsigned t = 0; t < time_steps_range; t++)
660  {
661  for (unsigned j = 0; j < value_pt_range; j++)
662  {
663  dump_file << value(t, j) << std::endl;
664  }
665  }
666  }
667  }
double value(const unsigned &i) const
Definition: nodes.h:293

References j, ntstorage(), nvalue(), plotPSD::t, and value().

Referenced by oomph::SpineMesh::dump(), oomph::PerturbedSpineMesh::dump(), oomph::Mesh::dump(), and oomph::Node::dump().

◆ eqn_number() [1/2]

long& oomph::Data::eqn_number ( const unsigned i)
inline

Return the equation number of the i-th stored variable.

368  {
369 #ifdef RANGE_CHECKING
370  range_check(0, i);
371 #endif
372  return Eqn_number[i];
373  }
void range_check(const unsigned &t, const unsigned &i) const
Definition: nodes.cc:47

References Eqn_number, i, and range_check().

Referenced by oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::add_element_contribution_to_aux_integral(), add_value_pt_to_map(), oomph::ElementWithMovingNodes::assign_all_generic_local_eqn_numbers(), oomph::SpectralElement::assign_all_generic_local_eqn_numbers(), assign_eqn_numbers(), oomph::ElementWithExternalElement::assign_external_interaction_data_local_eqn_numbers(), oomph::RefineableElement::assign_hanging_local_eqn_numbers(), oomph::GeneralisedElement::assign_internal_and_external_local_eqn_numbers(), BrethertonElement< ELEMENT >::assign_local_eqn_numbers(), oomph::GeneralisedElement::assign_local_eqn_numbers(), oomph::FiniteElement::assign_nodal_local_eqn_numbers(), oomph::MyProblem::check_not_segregated(), oomph::BoundaryNode< NODE_TYPE >::clear_copied_pointers(), constrain(), oomph::AddedMainNumberingLookup::construct_added_to_main_mapping(), describe_dofs(), oomph::AdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableAdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableAxisymAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::RefineableSphericalAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::SphericalAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::SteadyAxisymAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::AxisymAdvectionDiffusionEquations::dinterpolated_u_axi_adv_diff_ddata(), oomph::AxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::RefineableAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableGeneralisedNewtonianNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::NavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SpaceTimeNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::fill_in_generic_residual_contribution_fluid_traction(), oomph::Problem::get_dofs(), pin(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::pin_all_non_pressure_dofs(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::NavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::pin_all_non_pressure_dofs(), oomph::MGSolver< DIM >::plot(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::plot_residual_landscape(), oomph::SolidNode::position_eqn_number(), oomph::post_midpoint_update(), print_connectivity_matrix(), BrethertonElement< ELEMENT >::reassign_inflow(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::reset_pin_status(), oomph::NavierStokesSchurComplementPreconditioner::reset_pin_status(), oomph::MyProblem::segregated_pin_indices(), oomph::Problem::set_dofs(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::MGSolver< DIM >::set_self_test_vector(), oomph::MGSolver< DIM >::setup_interpolation_matrices(), oomph::HelmholtzMGPreconditioner< DIM >::setup_interpolation_matrices(), oomph::MGSolver< DIM >::setup_interpolation_matrices_unstructured(), oomph::HelmholtzMGPreconditioner< DIM >::setup_interpolation_matrices_unstructured(), unconstrain(), oomph::MyProblem::undo_segregated_pinning(), and unpin().

◆ eqn_number() [2/2]

long oomph::Data::eqn_number ( const unsigned i) const
inline

Return the equation number of the i-th stored variable.

377  {
378 #ifdef RANGE_CHECKING
379  range_check(0, i);
380 #endif
381  return Eqn_number[i];
382  }

References Eqn_number, i, and range_check().

◆ eqn_number_pt()

long* oomph::Data::eqn_number_pt ( const unsigned i)
inline

Return the pointer to the equation number of the i-th stored variable.

359  {
360 #ifdef RANGE_CHECKING
361  range_check(0, i);
362 #endif
363  return &Eqn_number[i];
364  }

References Eqn_number, i, and range_check().

Referenced by oomph::Hijacked< ELEMENT >::hijack_nodal_position_value(), oomph::Hijacked< ELEMENT >::hijack_nodal_spine_value(), and oomph::VolumeConstraintBoundingElement::set_volume_constraint_element().

◆ is_a_copy() [1/2]

virtual bool oomph::Data::is_a_copy ( ) const
inlinevirtual

Return a boolean to indicate whether the Data objact contains any copied values. A base Data object can never be a copy so the default implementation always returns false.

Reimplemented in oomph::CopiedData, and oomph::HijackedData.

254  {
255  return false;
256  }

Referenced by oomph::Newmark< 2 >::assign_initial_data_values(), oomph::SelfStartingBDF2::assign_initial_values_impulsive(), oomph::Steady< NSTEPS >::assign_initial_values_impulsive(), oomph::Newmark< NSTEPS >::assign_initial_values_impulsive(), oomph::BDF< NSTEPS >::assign_initial_values_impulsive(), oomph::BDF< NSTEPS >::calculate_predicted_values(), oomph::TR::calculate_predicted_values(), oomph::SelfStartingBDF2::calculate_predicted_values_bdf2(), oomph::Mesh::check_for_repeated_nodes(), oomph::FourierDecomposedHelmholtzDtNBoundaryElement< ELEMENT >::complete_setup_of_dependencies(), oomph::HelmholtzDtNBoundaryElement< ELEMENT >::complete_setup_of_dependencies(), oomph::CopiedData::CopiedData(), oomph::HijackedData::HijackedData(), oomph::BoundaryNodeBase::make_node_periodic(), oomph::BoundaryNodeBase::make_nodes_periodic(), oomph::SolidNode::position_is_a_copy(), oomph::post_midpoint_update(), oomph::ContinuationStorageScheme::set_consistent_pinned_values(), set_time_stepper(), oomph::SelfStartingBDF2::shift_time_values(), oomph::IMRBase::shift_time_values(), oomph::Steady< NSTEPS >::shift_time_values(), oomph::NewmarkBDF< NSTEPS >::shift_time_values(), oomph::BDF< NSTEPS >::shift_time_values(), and oomph::TR::shift_time_values().

◆ is_a_copy() [2/2]

virtual bool oomph::Data::is_a_copy ( const unsigned i) const
inlinevirtual

Return flag to indicate whether the i-th value is a copy. A base Data object can never be a copy so the default implementation always returns false.

Reimplemented in oomph::CopiedData, and oomph::HijackedData.

262  {
263  return false;
264  }

◆ is_constrained()

◆ is_pinned()

◆ is_segregated_solve_pinned()

bool oomph::Data::is_segregated_solve_pinned ( const unsigned i)
inline

Test whether the i-th variable is temporaily pinned for a segregated solve.

425  {
427  }
static long Is_segregated_solve_pinned
Definition: nodes.h:188

References Eqn_number, i, and Is_segregated_solve_pinned.

Referenced by assign_eqn_numbers().

◆ ntstorage()

unsigned oomph::Data::ntstorage ( ) const

Return total number of doubles stored per value to record time history of each value (one for steady problems).

Return the total number of doubles stored per value to record the time history of ecah value. The information is read from the time stepper

880  {
881  return Time_stepper_pt->ntstorage();
882  }
unsigned ntstorage() const
Definition: timesteppers.h:601

References oomph::TimeStepper::ntstorage(), and Time_stepper_pt.

Referenced by oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::BackupMeshForProjection(), copy(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::copy_onto_original_mesh(), Data(), oomph::Mesh::delete_all_external_storage(), does_pointer_correspond_to_value(), dump(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::get_Z2_flux(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::nhistory_values_for_projection(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_projection(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_projection(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_projection(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::num_Z2_flux_terms(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), range_check(), read(), resize(), and set_time_stepper().

◆ nvalue()

unsigned oomph::Data::nvalue ( ) const
inline

Return number of values stored in data object (incl pinned ones).

484  {
485  return Nvalue;
486  }

References Nvalue.

Referenced by oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), add_value_pt_to_map(), MovingBlockProblem< ELEMENT >::apply_boundary_conditions(), TwoDDGProblem< ELEMENT >::apply_boundary_conditions(), oomph::ElementWithMovingNodes::assign_all_generic_local_eqn_numbers(), oomph::SpectralElement::assign_all_generic_local_eqn_numbers(), oomph::Node::assign_eqn_numbers(), oomph::ElementWithExternalElement::assign_external_interaction_data_local_eqn_numbers(), oomph::RefineableElement::assign_hanging_local_eqn_numbers(), oomph::SelfStartingBDF2::assign_initial_data_values(), oomph::PeriodicOrbitTimeDiscretisation::assign_initial_data_values(), oomph::Steady< NSTEPS >::assign_initial_data_values(), oomph::BDF< NSTEPS >::assign_initial_data_values(), oomph::Newmark< NSTEPS >::assign_initial_data_values(), oomph::Newmark< NSTEPS >::assign_initial_data_values_stage1(), oomph::Newmark< NSTEPS >::assign_initial_data_values_stage2(), oomph::Newmark< 2 >::assign_initial_positions_impulsive(), oomph::SelfStartingBDF2::assign_initial_values_impulsive(), oomph::Steady< NSTEPS >::assign_initial_values_impulsive(), oomph::Newmark< NSTEPS >::assign_initial_values_impulsive(), oomph::BDF< NSTEPS >::assign_initial_values_impulsive(), oomph::GeneralisedElement::assign_internal_and_external_local_eqn_numbers(), BrethertonElement< ELEMENT >::assign_local_eqn_numbers(), oomph::GeneralisedElement::assign_local_eqn_numbers(), oomph::FiniteElement::assign_nodal_local_eqn_numbers(), oomph::SolidICProblem::backup_original_state(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::BackupMeshForProjection(), oomph::RefineableQElement< 3 >::build(), oomph::RefineableQElement< 1 >::build(), oomph::RefineableQElement< 2 >::build(), oomph::BDF< NSTEPS >::calculate_predicted_values(), oomph::TR::calculate_predicted_values(), oomph::SelfStartingBDF2::calculate_predicted_values_bdf2(), oomph::MyProblem::check_not_segregated(), oomph::Circle::Circle(), AxiPoroProblem< ELEMENT, TIMESTEPPER >::complete_problem_setup(), AxisymmetricVibratingShellProblem< ELEMENT >::complete_problem_setup(), VibratingShellProblem< ELEMENT >::complete_problem_setup(), UnsteadyHeatMeltProblem< ELEMENT >::complete_problem_setup(), oomph::NodeNodeMortaringElement::construct_lagrange_multipliers(), copy(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::copy_onto_original_mesh(), ContactProblem< ELEMENT >::create_displ_imposition_elements(), UnstructuredTorusProblem< ELEMENT >::create_lagrange_multiplier_elements(), FSICollapsibleChannelProblem< ELEMENT >::create_lagrange_multiplier_elements(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_lagrange_multiplier_elements(), FSIChannelWithLeafletProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_lagrange_multiplier_elements(), PrescribedBoundaryDisplacementProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredImmersedEllipseProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredFluidProblem< ELEMENT >::create_lagrange_multiplier_elements(), CollapsibleChannelProblem< ELEMENT >::create_lagrange_multiplier_elements(), TiltedCavityProblem< ELEMENT >::create_parall_outflow_lagrange_elements(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::data_values_of_field(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::data_values_of_field(), oomph::Mesh::delete_all_external_storage(), oomph::DisplacementControlElement::DisplacementControlElement(), oomph::FSI_functions::doc_fsi(), RefineableDrivenCavityProblem< ELEMENT >::doc_solution(), PRefineableDrivenCavityProblem< ELEMENT >::doc_solution(), does_pointer_correspond_to_value(), dump(), oomph::Ellipse::Ellipse(), oomph::GeneralisedElement::external_local_eqn(), oomph::ConstraintElement::fill_in_contribution_to_residuals(), oomph::GeneralisedElement::fill_in_jacobian_from_external_by_fd(), oomph::GeneralisedElement::fill_in_jacobian_from_internal_by_fd(), oomph::FiniteElement::fill_in_jacobian_from_nodal_by_fd(), oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd(), oomph::GeneralCircle::GeneralCircle(), oomph::AxisymmetricQCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricQTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricTCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::BiharmonicEquations< DIM >::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ClampedHermiteShellBoundaryConditionElement::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodMixedOrderSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::QSphericalCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::QSphericalTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::Problem::get_dofs(), oomph::MyProblem::get_error_norm(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), BrethertonElement< ELEMENT >::get_jacobian(), oomph::PolarCrouzeixRaviartElement::get_load_data(), oomph::Node::hang_code(), oomph::Node::hanging_pt(), oomph::FiniteElement::identify_field_data_for_interactions(), oomph::RefineableElement::identify_field_data_for_interactions(), oomph::AxisymmetricTCrouzeixRaviartElement::identify_pressure_data(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::identify_pressure_data(), oomph::QSphericalCrouzeixRaviartElement::identify_pressure_data(), oomph::GeneralisedElement::internal_local_eqn(), oomph::BiharmonicEquations< DIM >::interpolated_dudx(), oomph::BiharmonicEquations< DIM >::interpolated_u_biharmonic(), oomph::Node::is_hanging(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::FixedVolumeSpineLineMarangoniFluidInterfaceElement< ELEMENT >::make_bounding_element(), MortaringValidationProblem< ELEMENT, NON_MORTAR_ELEMENT >::MortaringValidationProblem(), oomph::MyProblem::my_set_initial_condition(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ncont_interpolated_values(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ncont_interpolated_values(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::nfields_for_projection(), oomph::FiniteElement::nodal_local_eqn(), oomph::ODEElement::nvalue(), oomph::MyProblem::output_ltes(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::p_refine(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::pin_all(), FlowAroundCylinderProblem< ELEMENT >::pin_all_base_flow_dofs(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::pin_all_non_pressure_dofs(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::NavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::pin_all_non_pressure_dofs(), NavierStokesProblem< ELEMENT >::pin_redundant_temporal_nodes(), oomph::MGSolver< DIM >::plot(), oomph::post_midpoint_update(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::pre_build(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::pre_build(), print_connectivity_matrix(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project(), oomph::PseudoBucklingRing::PseudoBucklingRing(), read(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::rebuild_from_sons(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::rebuild_from_sons(), oomph::CopiedData::reset_copied_pointers(), oomph::BoundaryNode< NODE_TYPE >::reset_copied_pointers(), oomph::SolidICProblem::reset_original_state(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::reset_pin_status(), oomph::NavierStokesSchurComplementPreconditioner::reset_pin_status(), resize(), oomph::Node::resize(), oomph::BoundaryNode< NODE_TYPE >::resize(), oomph::FaceElement::resize_nodes(), oomph::ContinuationStorageScheme::set_consistent_pinned_values(), oomph::Problem::set_dofs(), oomph::FluidInterfaceElement::set_external_pressure_data(), oomph::Node::set_hanging_pt(), oomph::YoungLaplaceEquations::set_kappa(), oomph::ElasticallySupportedRingElement::set_load_pt(), ElasticFishBackElement::set_load_pt(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::Node::set_nonhanging(), oomph::Problem::set_pinned_values_to_zero(), oomph::WomersleyEquations< DIM >::set_pressure_gradient_pt(), oomph::MGSolver< DIM >::set_self_test_vector(), set_time_stepper(), FixSpineHeightElement::set_traded_pressure_data(), oomph::SpineVolumeConstraintPointElement< ELEMENT >::set_traded_pressure_data(), oomph::FixedVolumeSpineLineMarangoniFluidInterfaceElement< ELEMENT >::set_traded_pressure_data(), oomph::MyProblem::set_up_impulsive_initial_condition(), oomph::VolumeConstraintBoundingElement::set_volume_constraint_element(), oomph::FoepplvonKarmanEquations::set_volume_constraint_pressure_data_as_external_data(), oomph::SolidICProblem::setup_problem(), oomph::SelfStartingBDF2::shift_time_values(), oomph::IMRBase::shift_time_values(), oomph::Steady< NSTEPS >::shift_time_values(), oomph::NewmarkBDF< NSTEPS >::shift_time_values(), oomph::BDF< NSTEPS >::shift_time_values(), oomph::TR::shift_time_values(), oomph::MGSolver< DIM >::solve(), oomph::StraightLine::StraightLine(), oomph::TimeStepper::time_derivative(), oomph::MyProblem::trace_values(), TwoDDGProblem< ELEMENT >::TwoDDGProblem(), oomph::MyProblem::undo_segregated_pinning(), FlowAroundCylinderProblem< ELEMENT >::unpin_all_base_flow_dofs(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::unpin_elemental_pressure_dofs(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::unpin_elemental_pressure_dofs(), value(), oomph::Node::value(), and oomph::Node::~Node().

◆ operator=()

void oomph::Data::operator= ( const Data )
delete

Broken assignment operator.

◆ pin()

void oomph::Data::pin ( const unsigned i)
inline

Pin the i-th stored variable.

386  {
388  }

References eqn_number(), i, and Is_pinned.

Referenced by UnstructuredTorusProblem< ELEMENT >::actions_after_adapt(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::actions_after_adapt(), RefineableTwoDPoissonProblem< ELEMENT >::actions_before_newton_solve(), TiltedCavityProblem< ELEMENT >::actions_before_newton_solve(), EighthSpherePoissonProblem< ELEMENT >::actions_before_newton_solve(), AnnularDiskProblem< ELASTICITY_ELEMENT >::AnnularDiskProblem(), MovingBlockProblem< ELEMENT >::apply_boundary_conditions(), ExtrudedMovingCylinderProblem< TWO_D_ELEMENT, THREE_D_ELEMENT >::apply_boundary_conditions(), PMLStructuredCubicHelmholtz< ELEMENT >::apply_boundary_conditions(), PMLHelmholtzMGProblem< ELEMENT >::apply_boundary_conditions(), FlowAroundCylinderProblem< ELEMENT >::apply_boundary_conditions(), NavierStokesProblem< ELEMENT >::apply_boundary_conditions(), VorticityRecoveryProblem< ELEMENT >::apply_boundary_conditions(), PMLProblem< ELEMENT >::apply_boundary_conditions(), UnsteadyHeatProblem< ELEMENT >::apply_boundary_conditions(), PMLFourierDecomposedHelmholtzProblem< ELEMENT >::apply_zero_dirichlet_boundary_conditions(), AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >::AxisymFreeSurfaceNozzleAdvDiffRobinProblem(), oomph::RefineableQElement< 3 >::build(), oomph::RefineableQElement< 2 >::build(), oomph::ChannelSpineMesh< ELEMENT >::build_channel_spine_mesh(), RectangularWomersleyImpedanceTube< ELEMENT >::build_mesh_and_apply_boundary_conditions(), CapProblem< ELEMENT >::CapProblem(), CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::CoatedDiskProblem(), CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::CoatedSphereProblem(), InclinedPlaneProblem< ELEMENT, INTERFACE_ELEMENT >::complete_build(), UnstructuredFvKProblem< ELEMENT >::complete_problem_setup(), AxiPoroProblem< ELEMENT, TIMESTEPPER >::complete_problem_setup(), DarcyProblem< ELEMENT >::complete_problem_setup(), AxisymmetricVibratingShellProblem< ELEMENT >::complete_problem_setup(), VibratingShellProblem< ELEMENT >::complete_problem_setup(), ContactProblem< ELEMENT >::complete_problem_setup(), UnsteadyHeatMeltProblem< ELEMENT >::complete_problem_setup(), CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::complete_problem_setup(), CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::complete_problem_setup(), UnstructuredPoissonProblem< ELEMENT >::complete_problem_setup(), UnstructuredImmersedEllipseProblem< ELEMENT >::complete_problem_setup(), TwoLayerInterfaceProblem< ELEMENT >::complete_problem_setup(), UnstructuredFluidProblem< ELEMENT >::complete_problem_setup(), BubbleInChannelProblem< ELEMENT >::complete_problem_setup(), DropInChannelProblem< ELEMENT >::complete_problem_setup(), ElasticAnnulusProblem< ELASTICITY_ELEMENT >::complete_problem_setup(), FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::complete_problem_setup(), RingWithTRibProblem< ELASTICITY_ELEMENT >::complete_problem_setup(), oomph::NodeNodeMortaringElement::construct_lagrange_multipliers(), oomph::TwoDimensionalPMLHelper::create_bottom_left_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_bottom_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_bottom_right_pml_mesh(), ContactProblem< ELEMENT >::create_displ_imposition_elements(), UnstructuredTorusProblem< ELEMENT >::create_lagrange_multiplier_elements(), FSICollapsibleChannelProblem< ELEMENT >::create_lagrange_multiplier_elements(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_lagrange_multiplier_elements(), FSIChannelWithLeafletProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_lagrange_multiplier_elements(), PrescribedBoundaryDisplacementProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredImmersedEllipseProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredFluidProblem< ELEMENT >::create_lagrange_multiplier_elements(), CollapsibleChannelProblem< ELEMENT >::create_lagrange_multiplier_elements(), oomph::TwoDimensionalPMLHelper::create_left_pml_mesh(), TiltedCavityProblem< ELEMENT >::create_parall_outflow_lagrange_elements(), oomph::TwoDimensionalPMLHelper::create_right_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_top_left_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_top_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_top_right_pml_mesh(), oomph::SurfaceMeltElement< ELEMENT >::disable_melting(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::disable_melting(), ElasticInterfaceProblem< ELEMENT, TIMESTEPPER >::ElasticInterfaceProblem(), ElasticRingProblem< ELEMENT >::ElasticRingProblem(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_cosine_component_of_pressure(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::fix_cosine_component_of_pressure(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_pressure(), oomph::AxisymmetricQTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::fix_pressure(), oomph::LinearisedQTaylorHoodElement::fix_pressure(), oomph::AxisymmetricTCrouzeixRaviartElement::fix_pressure(), oomph::AxisymmetricTTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianQCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >::fix_pressure(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::fix_pressure(), oomph::QCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::QTaylorHoodElement< DIM >::fix_pressure(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::TCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::TTaylorHoodElement< DIM >::fix_pressure(), oomph::PolarCrouzeixRaviartElement::fix_pressure(), oomph::PolarTaylorHoodElement::fix_pressure(), oomph::QTaylorHoodSpaceTimeElement< DIM >::fix_pressure(), oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >::fix_pressure(), oomph::QSphericalCrouzeixRaviartElement::fix_pressure(), oomph::QSphericalTaylorHoodElement::fix_pressure(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::fix_pressure(), oomph::AxisymmetricQCrouzeixRaviartElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::fix_pressure(), oomph::LinearisedQCrouzeixRaviartElement::fix_pressure(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_sine_component_of_pressure(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::fix_sine_component_of_pressure(), oomph::AxisymQPVDElementWithPressure::fix_solid_pressure(), oomph::QPVDElementWithPressure< DIM >::fix_solid_pressure(), oomph::QPVDElementWithContinuousPressure< DIM >::fix_solid_pressure(), oomph::TPVDElementWithContinuousPressure< DIM >::fix_solid_pressure(), FluxPoissonProblem< ELEMENT >::FluxPoissonProblem(), FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::FourierDecomposedTimeHarmonicLinearElasticityProblem(), FreeSurfaceRotationProblem< ELEMENT >::FreeSurfaceRotationProblem(), FSICollapsibleChannelProblem< ELEMENT >::FSICollapsibleChannelProblem(), FSIRingProblem::FSIRingProblem(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), MeltSpinningProblem< ELEMENT >::MeltSpinningProblem(), OneDPoissonProblem< ELEMENT >::OneDPoissonProblem(), oomph::PoissonSmoothMesh< POISSON_ELEMENT >::operator()(), OrrSommerfeldProblem< ELEMENT >::OrrSommerfeldProblem(), OscRingNStProblem< ELEMENT >::OscRingNStProblem(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::p_refine(), PeriodicLoadProblem< ELEMENT >::PeriodicLoadProblem(), PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::pin_all(), FlowAroundCylinderProblem< ELEMENT >::pin_all_base_flow_dofs(), oomph::AxisymmetricTTaylorHoodElement::pin_all_nodal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::pin_all_nodal_pressure_dofs(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::pin_all_non_pressure_dofs(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::NavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::pin_all_non_pressure_dofs(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::pin_all_spines(), oomph::StreamfunctionProblem::pin_boundaries(), oomph::SingularNavierStokesSolutionElement< WRAPPED_NAVIER_STOKES_ELEMENT >::pin_c(), oomph::ImmersedRigidBodyElement::pin_centre_of_mass_coordinate(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableLinearisedQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineablePolarTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQSphericalTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::pin_elemental_redundant_nodal_solid_pressures(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::pin_p_value(), oomph::TRaviartThomasDarcyElement< ORDER >::pin_p_value(), oomph::TPoroelasticityElement< ORDER >::pin_p_value(), oomph::SolidNode::pin_position(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::pin_q_edge_value(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::pin_q_internal_value(), oomph::TRaviartThomasDarcyElement< ORDER >::pin_q_internal_value(), oomph::TPoroelasticityElement< ORDER >::pin_q_internal_value(), oomph::LinearisedQCrouzeixRaviartElement::pin_real_or_imag(), NavierStokesProblem< ELEMENT >::pin_redundant_temporal_nodes(), UnsteadyHeatProblem< ELEMENT >::pin_redundant_temporal_nodes(), oomph::ImmersedRigidBodyElement::pin_rotation_angle(), oomph::VorticitySmootherElement< ELEMENT >::pin_smoothed_vorticity(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::pin_superfluous_darcy_dofs(), oomph::StreamfunctionProblem::pin_velocities(), oomph::ElasticallySupportedRingElement::pin_yc(), PressureWaveFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::PressureWaveFSIProblem(), PseudoSolidCapProblem< ELEMENT >::PseudoSolidCapProblem(), QuarterCircleDrivenCavityProblem< ELEMENT >::QuarterCircleDrivenCavityProblem(), QuarterCircleDrivenCavityProblem2< ELEMENT >::QuarterCircleDrivenCavityProblem2(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::rebuild_from_sons(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::rebuild_from_sons(), RefineableFishPoissonProblem< ELEMENT >::RefineableFishPoissonProblem(), RefineablePeriodicLoadProblem< ELEMENT >::RefineablePeriodicLoadProblem(), RisingBubbleProblem< ELEMENT >::RisingBubbleProblem(), run_navier_stokes_outflow(), run_prescribed_flux(), run_prescribed_pressure_gradient(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), UnstructuredFluidProblem< ELEMENT >::set_boundary_conditions(), oomph::SolidICProblem::setup_problem(), SolidFreeSurfaceRotationProblem< ELEMENT >::SolidFreeSurfaceRotationProblem(), ShellProblem< ELEMENT >::solve(), SphericalSteadyRotationProblem< ELEMENT >::SphericalSteadyRotationProblem(), StefanBoltzmannProblem< ELEMENT >::StefanBoltzmannProblem(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), ThermalProblem< ELEMENT >::ThermalProblem(), TiltedCavityProblem< ELEMENT >::TiltedCavityProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), TwoDDGProblem< ELEMENT >::TwoDDGProblem(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::UnstructuredFSIProblem(), oomph::AxisymFoepplvonKarmanEquations::use_linear_bending_model(), oomph::DisplacementBasedFoepplvonKarmanEquations::use_linear_bending_model(), oomph::FoepplvonKarmanEquations::use_linear_bending_model(), oomph::WomersleyMesh< WOMERSLEY_ELEMENT >::WomersleyMesh(), oomph::WomersleyProblem< ELEMENT, DIM >::WomersleyProblem(), and YoungLaplaceProblem< ELEMENT >::YoungLaplaceProblem().

◆ pin_all()

void oomph::Data::pin_all ( )
inline

Pin all the stored variables.

398  {
399  const unsigned n_value = Nvalue;
400  for (unsigned i = 0; i < n_value; i++)
401  {
403  }
404  }

References Eqn_number, i, Is_pinned, and Nvalue.

Referenced by oomph::Node::pin_all(), oomph::SolidNode::pin_all(), oomph::LinearisedQCrouzeixRaviartElement::pin_pressure_normalisation_dofs(), and oomph::LinearisedQCrouzeixRaviartElement::pin_real_or_imag().

◆ range_check()

void oomph::Data::range_check ( const unsigned t,
const unsigned i 
) const
private

Check that the arguments are within the range of the stored data values and timesteps.

//////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// Private function to check that the arguments are within the range of the stored data values and timesteps.

48  {
49  // If either the value or the time history value are out of range
50  if ((i >= Nvalue) || (t >= ntstorage()))
51  {
52  std::ostringstream error_message;
53  // Value range check
54  if (i >= Nvalue)
55  {
56  error_message << "Range Error: Value " << i
57  << " is not in the range (0," << Nvalue - 1 << ")";
58  }
59  // Time range check
60  if (t >= ntstorage())
61  {
62  error_message << "Range Error: Time Value " << t
63  << " is not in the range (0," << ntstorage() - 1 << ")";
64  }
65  // Throw the error
66  throw OomphLibError(
67  error_message.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
68  }
69  }

References i, ntstorage(), Nvalue, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and plotPSD::t.

Referenced by eqn_number(), eqn_number_pt(), set_value(), value(), and value_pt().

◆ read()

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

Read data object from a file.

Read data object from file.

673  {
674  std::string input_string;
675  std::ostringstream error_stream;
676 
677  // Find the amount of data stored
678  const unsigned value_pt_range = nvalue();
679  const unsigned time_steps_range = ntstorage();
680 
681  // Only read in data if there is some storage available
682  if (value_pt_range * time_steps_range > 0)
683  {
684  // Read line up to termination sign
685  getline(restart_file, input_string, '#');
686  // Ignore rest of line
687  restart_file.ignore(80, '\n');
688  // Check # of values:
689  const unsigned long check_nvalues = atoi(input_string.c_str());
690  if (check_nvalues != value_pt_range)
691  {
692  error_stream
693  << "Number of values stored in dump file is not equal to the amount "
694  << "of storage allocated in Data object " << check_nvalues << " "
695  << value_pt_range;
696  if (check_nvalues > value_pt_range)
697  {
698  error_stream << " [ignoring extra entries]";
699  }
700  error_stream << std::endl;
701  Node* nod_pt = dynamic_cast<Node*>(this);
702  if (nod_pt != 0)
703  {
704  unsigned n_dim = nod_pt->ndim();
705  error_stream << "Node coordinates: ";
706  for (unsigned i = 0; i < n_dim; i++)
707  {
708  error_stream << nod_pt->x(i) << " ";
709  }
710  error_stream << nod_pt << " ";
711 #ifdef OOMPH_HAS_MPI
712  if (nod_pt->is_halo())
713  {
714  error_stream << " (halo)\n";
715  }
716  else
717  {
718  error_stream << " (not halo)\n";
719  }
720 #endif
721  }
722  if (check_nvalues < value_pt_range)
723  {
724  throw OomphLibError(error_stream.str(),
727  }
728  }
729 
730  // Read line up to termination sign
731  getline(restart_file, input_string, '#');
732 
733  // Ignore rest of line
734  restart_file.ignore(80, '\n');
735 
736  // Check # of values:
737  const unsigned check_ntvalues = atoi(input_string.c_str());
738 
739  // Dynamic run restarted from steady run
740  if (check_ntvalues < time_steps_range)
741  {
742  std::ostringstream warning_stream;
743  warning_stream << "Number of time history values in dump file is less "
744  << "than the storage allocated in Data object: "
745  << check_ntvalues << " " << time_steps_range
746  << std::endl;
747  warning_stream
748  << "We're using steady data as initial data for unsteady \n"
749  << "run. I'll fill in the remaining history values with zeroes. \n"
750  << "If you don't like this \n"
751  << "you'll have to overwrite this yourself with whatever is \n "
752  << "appropriate for your timestepping scheme. \n";
753  // Issue the warning
754  OomphLibWarning(
755  warning_stream.str(), "Data::read()", OOMPH_EXCEPTION_LOCATION);
756 
757  // Read data
758  for (unsigned t = 0; t < time_steps_range; t++)
759  {
760  for (unsigned j = 0; j < check_nvalues; j++)
761  {
762  if (t == 0)
763  {
764  // Read line
765  getline(restart_file, input_string);
766 
767  // Transform to double
768  if (j < value_pt_range)
769  {
770  set_value(t, j, atof(input_string.c_str()));
771  }
772  else
773  {
774  error_stream << "Not setting j=" << j
775  << " -th history restart value [t = " << t
776  << " ] to " << atof(input_string.c_str())
777  << " because Data "
778  << " hasn't been sufficiently resized\n";
779  }
780  }
781  else
782  {
783  if (j < value_pt_range)
784  {
785  set_value(t, j, 0.0);
786  }
787  else
788  {
789  error_stream << "Not setting j=" << j
790  << " -th restart history value [t = " << t
791  << " ] to " << 0.0 << " because Data "
792  << " hasn't been sufficiently resized\n";
793  }
794  }
795  }
796  }
797  }
798  // Static run restarted from unsteady run
799  else if (check_ntvalues > time_steps_range)
800  {
801  std::ostringstream warning_stream;
802  warning_stream
803  << "Warning: number of time history values in dump file is greater "
804  << "than the storage allocated in Data object: " << check_ntvalues
805  << " " << time_steps_range << std::endl;
806  warning_stream << "We're using the current values from an unsteady \n"
807  << "restart file to initialise a static run. \n";
808  // Issue the warning
809  OomphLibWarning(
810  warning_stream.str(), "Data::read()", OOMPH_EXCEPTION_LOCATION);
811 
812  // Read data
813  for (unsigned t = 0; t < check_ntvalues; t++)
814  {
815  for (unsigned j = 0; j < check_nvalues; j++)
816  {
817  // Read line
818  getline(restart_file, input_string);
819  if (t == 0)
820  {
821  // Transform to double
822  if (j < value_pt_range)
823  {
824  set_value(t, j, atof(input_string.c_str()));
825  }
826  else
827  {
828  error_stream << "Not setting j=" << j
829  << " -th restart history value [t = " << t
830  << " ] to " << atof(input_string.c_str())
831  << " because Data "
832  << " hasn't been sufficiently resized\n";
833  }
834  }
835  }
836  }
837  }
838  // Proper dynamic restart
839  else
840  {
841  // Read data
842  for (unsigned t = 0; t < time_steps_range; t++)
843  {
844  for (unsigned j = 0; j < check_nvalues; j++)
845  {
846  // Read line
847  getline(restart_file, input_string);
848 
849  // Transform to double
850  if (j < value_pt_range)
851  {
852  set_value(t, j, atof(input_string.c_str()));
853  }
854  else
855  {
856  error_stream << "Not setting j=" << j
857  << " -th restart history value [t = " << t
858  << " ] to " << atof(input_string.c_str())
859  << " because Data "
860  << " hasn't been sufficiently resized\n";
861  }
862  }
863  }
864  }
865  if (check_nvalues > value_pt_range)
866  {
867  OomphLibWarning(
868  error_stream.str(), "Data::read()", OOMPH_EXCEPTION_LOCATION);
869  }
870  }
871  }
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286

References i, j, oomph::Node::ndim(), ntstorage(), nvalue(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, set_value(), oomph::Global_string_for_annotation::string(), plotPSD::t, and oomph::Node::x().

Referenced by oomph::PerturbedSpineMesh::read(), oomph::Mesh::read(), oomph::Node::read(), and oomph::SpineMesh::read().

◆ remove_copy()

void oomph::Data::remove_copy ( Data *const &  data_pt)
private

Remove the pointer data_pt from the array Copy_of_data_pt. This should be used whenever copies of the data are deleted.

Remove the pointer data_pt from the internal storage used to keep track of copies

103  {
104  // Find the current number of copies
105  const unsigned n_copies = Ncopies;
106  // Index of the copy
107  unsigned data_index = n_copies;
108  // Check that the existing data is actually a copy
109  for (unsigned i = 0; i < n_copies; i++)
110  {
111  if (Copy_of_data_pt[i] == data_pt)
112  {
113  data_index = i;
114  break;
115  }
116  }
117 
118  // If we have not found an index throw an error
119  if (data_index == n_copies)
120  {
121  std::ostringstream error_stream;
122  error_stream << "Data pointer " << data_pt
123  << " is not stored as a copy of the data object " << this
124  << std::endl;
125  throw OomphLibError(
126  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
127  }
128 
129  // If we still here remove the data
130  // Allocate storage for the pointers to the new number of copies
131  Data** new_copy_of_data_pt = new Data*[n_copies - 1];
132 
133  unsigned index = 0;
134  // Copy over the exisiting pointers
135  for (unsigned i = 0; i < n_copies; i++)
136  {
137  // If we are not at the copied index
138  if (i != data_index)
139  {
140  // Copy the data across
141  new_copy_of_data_pt[index] = Copy_of_data_pt[i];
142  // Increase the index
143  ++index;
144  }
145  }
146 
147  // Delete the old storage
148  delete[] Copy_of_data_pt;
149  // Allocate the new storage
150  Copy_of_data_pt = new_copy_of_data_pt;
151  // Set the new number of copies
152  --Ncopies;
153  }

References Copy_of_data_pt, i, Ncopies, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::BoundaryNode< NODE_TYPE >::~BoundaryNode(), oomph::CopiedData::~CopiedData(), and oomph::HijackedData::~HijackedData().

◆ reset_copied_pointers()

void oomph::Data::reset_copied_pointers ( )
protectedvirtual

Helper function that should be overloaded in derived classes that can contain copies of Data. The function must reset the internal pointers to the copied data. This is used when resizing data to ensure that all the pointers remain valid. The default implementation throws an error beacause Data cannot be a copy.

Helper function that should be overloaded in classes that contain copies of Data. The function must reset the internal pointers to the copied data. This is used when resizing data to ensure that all the pointers remain valid. The base Data class cannot be a copy, so throw an error

Reimplemented in oomph::CopiedData, and oomph::HijackedData.

163  {
164  throw OomphLibError("Data can never be a copy",
167  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by resize(), and set_time_stepper().

◆ resize()

void oomph::Data::resize ( const unsigned n_value)
virtual

Change (increase) the number of values that may be stored.

Increase the number of data values stored, useful when adding additional data at a node, almost always Lagrange multipliers. Note if any of the unresized data is copied, then we assume all the resized data is copied from the same node as the unresized data.

Reimplemented in oomph::Node, oomph::CopiedData, and oomph::HijackedData.

1003  {
1004  // Find current number of values
1005  const unsigned n_value_old = nvalue();
1006  // Set the desired number of values
1007  const unsigned n_value_new = n_value;
1008 
1009  // If the number of values hasn't changed, do nothing
1010  if (n_value_new == n_value_old)
1011  {
1012  return;
1013  }
1014 
1015  // Put in a little safely check here
1016 #ifdef PARANOID
1017  if (n_value_new < n_value_old)
1018  {
1019  std::ostringstream error_stream;
1020  error_stream << "Warning : Data cannot be resized to a smaller value!"
1021  << std::endl;
1022  throw OomphLibError(
1023  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
1024  }
1025 #endif
1026 
1027  // Find amount of additional time storage required
1028  // N.B. We can't change timesteppers in this process
1029  const unsigned t_storage = ntstorage();
1030 
1031  // Create new sets of pointers of the appropriate (new) size
1032  double** value_new_pt = new double*[n_value_new];
1033  long* eqn_number_new = new long[n_value_new];
1034 
1035  // Create new array of values that is contiguous in memory
1036  double* values = new double[n_value_new * t_storage];
1037 
1038  // Copy the old values over into the new storage scheme
1039  for (unsigned i = 0; i < n_value_old; i++)
1040  {
1041  // Set pointer for the new values
1042  value_new_pt[i] = &values[i * t_storage];
1043  // Copy value
1044  for (unsigned t = 0; t < t_storage; t++)
1045  {
1046  value_new_pt[i][t] = Value[i][t];
1047  }
1048 
1049  // Copy equation number
1050  eqn_number_new[i] = Eqn_number[i];
1051  }
1052 
1053  // Loop over the new entries, set pointers and initialise data
1054  for (unsigned i = n_value_old; i < n_value_new; i++)
1055  {
1056  // Set the pointer
1057  value_new_pt[i] = &values[i * t_storage];
1058  // Initialise the new data values to zero
1059  for (unsigned t = 0; t < t_storage; t++)
1060  {
1061  value_new_pt[i][t] = 0.0;
1062  }
1063 
1064  // Initialise the equation number to Is_unclassified
1065  eqn_number_new[i] = Is_unclassified;
1066  }
1067 
1068  // Set the number of new values
1069  Nvalue = n_value_new;
1070 
1071  // Now delete the old storage and set the new pointers
1072  if (n_value_old != 0) delete[] Value[0];
1073  delete[] Value;
1074  Value = value_new_pt;
1075  delete[] Eqn_number;
1076  Eqn_number = eqn_number_new;
1077 
1078  // Now update pointers in any copies of this data
1079  for (unsigned i = 0; i < Ncopies; i++)
1080  {
1082  }
1083  }
virtual void reset_copied_pointers()
Definition: nodes.cc:162

References Copy_of_data_pt, Eqn_number, i, Is_unclassified, Ncopies, ntstorage(), Nvalue, nvalue(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, reset_copied_pointers(), plotPSD::t, and Value.

Referenced by oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::PRefineableQCrouzeixRaviartElement(), and oomph::Node::resize().

◆ self_test()

unsigned oomph::Data::self_test ( )

Self-test: Have all values been classified as pinned/unpinned? Return 0 if OK.

966  {
967  // Initialise test flag
968  bool passed = true;
969 
970  // Loop over all equation numbers
971  const unsigned eqn_number_range = Nvalue;
972  for (unsigned i = 0; i < eqn_number_range; i++)
973  {
974  // If the equation number has not been assigned, issue an error
975  if (Eqn_number[i] == Is_unclassified)
976  {
977  passed = false;
978  oomph_info << "\n ERROR: Failed Data::self_test() for i=" << i
979  << std::endl;
980  oomph_info << " (Value is not classified as pinned or free)"
981  << std::endl;
982  }
983  }
984 
985  // Return verdict
986  if (passed)
987  {
988  return 0;
989  }
990  else
991  {
992  return 1;
993  }
994  }
OomphInfo oomph_info
Definition: oomph_definitions.cc:319

References Eqn_number, i, Is_unclassified, Nvalue, and oomph::oomph_info.

Referenced by oomph::AlgebraicNode::self_test().

◆ set_time_stepper()

void oomph::Data::set_time_stepper ( TimeStepper *const &  time_stepper_pt,
const bool preserve_existing_data 
)

Set a new timestepper by resizing the appropriate storage. If already assigned the equation numbering will not be altered

Set a new TimeStepper be resizing the appropriate storage. Equation numbering (if already performed) will be unaffected. The current (zero) values will be unaffected, but all other entries will be set to zero.

408  {
409  // If the timestepper is unchanged do nothing
411  {
412  return;
413  }
414 
415  // Find the amount of data to be preserved
416  // Default is just the current values
417  unsigned n_preserved_tstorage = 1;
418  if (preserve_existing_data)
419  {
420  n_preserved_tstorage = this->ntstorage();
421  }
422 
423  // Set the new time stepper
425 
426  // If the data is a copy don't mess with it
427  if (this->is_a_copy())
428  {
429  return;
430  }
431 
432  // Find the current number of values
433  const unsigned n_value = nvalue();
434 
435  // IF there are data to allocate, do so
436  if (n_value > 0)
437  {
438  // Locally cache the new number of time storage values
439  const unsigned n_tstorage = time_stepper_pt->ntstorage();
440 
441  // Allocate all the data values in one big array for data locality.
442  double* values = new double[n_value * n_tstorage];
443 
444  // Copy the old "preserved" values into the new storage scheme
445  // Make sure that we limit the values to the level of storage
446  if (n_tstorage < n_preserved_tstorage)
447  {
448  n_preserved_tstorage = n_tstorage;
449  }
450  for (unsigned i = 0; i < n_value; i++)
451  {
452  for (unsigned t = 0; t < n_preserved_tstorage; t++)
453  {
454  values[i * n_tstorage + t] = Value[i][t];
455  }
456  }
457 
458  // Now delete the old value storage
459  delete[] Value[0];
460 
461  // Reset the pointers to the new data values
462  for (unsigned i = 0; i < n_value; i++)
463  {
464  Value[i] = &values[i * n_tstorage];
465  // Initialise all new time storage values to zero
466  for (unsigned t = n_preserved_tstorage; t < n_tstorage; t++)
467  {
468  Value[i][t] = 0.0;
469  }
470  }
471 
472  // Update any pointers in any copies of this data
473  for (unsigned i = 0; i < Ncopies; i++)
474  {
476  }
477  }
478  }
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper.
Definition: nodes.h:238
virtual bool is_a_copy() const
Definition: nodes.h:253

References Copy_of_data_pt, i, is_a_copy(), Ncopies, ntstorage(), oomph::TimeStepper::ntstorage(), nvalue(), reset_copied_pointers(), plotPSD::t, Time_stepper_pt, time_stepper_pt(), and Value.

Referenced by oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), oomph::GeneralisedElement::set_internal_data_time_stepper(), oomph::SolidNode::set_position_time_stepper(), oomph::AxisymmetricPoroelasticityEquations::set_q_internal_timestepper(), and oomph::PoroelasticityEquations< DIM >::set_q_internal_timestepper().

◆ set_value() [1/2]

void oomph::Data::set_value ( const unsigned i,
const double value_ 
)
inline

Set the i-th stored data value to specified value. The only reason that we require an explicit set function is because we redefine value() in the Node class to interpolate the values for nodes that are hanging and so we cannot return a reference to the value in this case.

272  {
273 #ifdef RANGE_CHECKING
274  range_check(0, i);
275 #endif
276  Value[i][0] = value_;
277  }

References i, range_check(), and Value.

Referenced by SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::actions_after_adapt(), ContactProblem< ELEMENT >::actions_before_implicit_timestep(), StefanBoltzmannProblem< ELEMENT >::actions_before_implicit_timestep(), UnsteadyHeatProblem< ELEMENT >::actions_before_implicit_timestep(), FSIDrivenCavityProblem< ELEMENT >::actions_before_implicit_timestep(), LinearWaveProblem< ELEMENT, TIMESTEPPER >::actions_before_implicit_timestep(), RefineableUnsteadyHeatProblem< ELEMENT >::actions_before_implicit_timestep(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::actions_before_implicit_timestep(), InclinedPlaneProblem< ELEMENT, INTERFACE_ELEMENT >::actions_before_implicit_timestep(), SphericalSpinUpProblem< ELEMENT >::actions_before_implicit_timestep(), oomph::WomersleyProblem< ELEMENT, DIM >::actions_before_implicit_timestep(), RefineableAdvectionDiffusionProblem< ELEMENT >::actions_before_newton_solve(), TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >::actions_before_newton_solve(), SUPGAdvectionDiffusionProblem< ELEMENT >::actions_before_newton_solve(), OneDPoissonProblem< ELEMENT >::actions_before_newton_solve(), PoissonProblem< ELEMENT >::actions_before_newton_solve(), MultiPoissonProblem< ELEMENT >::actions_before_newton_solve(), RefineableTwoDPoissonProblem< ELEMENT >::actions_before_newton_solve(), RefineableTwoMeshFluxPoissonProblem< ELEMENT >::actions_before_newton_solve(), RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >::actions_before_newton_solve(), FluxPoissonMGProblem< ELEMENT, MESH >::actions_before_newton_solve(), UnitCubePoissonMGProblem< ELEMENT, MESH >::actions_before_newton_solve(), TiltedCavityProblem< ELEMENT >::actions_before_newton_solve(), FpTestProblem::actions_before_newton_solve(), FallingBlockProblem< ELEMENT >::actions_before_newton_solve(), RisingBubbleProblem< ELEMENT >::actions_before_newton_solve(), RefineablePoissonProblem< ELEMENT >::actions_before_newton_solve(), EighthSpherePoissonProblem< ELEMENT >::actions_before_newton_solve(), RefineableOneDPoissonProblem< ELEMENT >::actions_before_newton_solve(), PRefineableOneDPoissonProblem< ELEMENT >::actions_before_newton_solve(), FluxPoissonProblem< ELEMENT >::actions_before_newton_solve(), TwoMeshFluxPoissonProblem< ELEMENT >::actions_before_newton_solve(), YoungLaplaceProblem< ELEMENT >::actions_before_newton_solve(), ThreeDPoissonProblem< ELEMENT >::actions_before_newton_solve(), TestPoissonProblem< ELEMENT >::actions_before_newton_solve(), TestRefineablePoissonProblem< ELEMENT >::actions_before_newton_solve(), oomph::StreamfunctionProblem::actions_before_solve(), oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), AnnularDiskProblem< ELASTICITY_ELEMENT >::AnnularDiskProblem(), MovingBlockProblem< ELEMENT >::apply_boundary_conditions(), ExtrudedMovingCylinderProblem< TWO_D_ELEMENT, THREE_D_ELEMENT >::apply_boundary_conditions(), UnstructuredPoissonProblem< ELEMENT >::apply_boundary_conditions(), PoissonProblem< ELEMENT >::apply_boundary_conditions(), PMLStructuredCubicHelmholtz< ELEMENT >::apply_boundary_conditions(), PMLHelmholtzMGProblem< ELEMENT >::apply_boundary_conditions(), FlowAroundCylinderProblem< ELEMENT >::apply_boundary_conditions(), NavierStokesProblem< ELEMENT >::apply_boundary_conditions(), VorticityRecoveryProblem< ELEMENT >::apply_boundary_conditions(), PMLProblem< ELEMENT >::apply_boundary_conditions(), UnsteadyHeatProblem< ELEMENT >::apply_boundary_conditions(), TwoDDGProblem< ELEMENT >::apply_boundary_conditions(), TwoDDGProblem< ELEMENT >::apply_initial_conditions(), oomph::FSI_functions::apply_no_slip_on_moving_wall(), PMLFourierDecomposedHelmholtzProblem< ELEMENT >::apply_zero_dirichlet_boundary_conditions(), oomph::SelfStartingBDF2::assign_initial_data_values(), oomph::PeriodicOrbitTimeDiscretisation::assign_initial_data_values(), oomph::Steady< NSTEPS >::assign_initial_data_values(), oomph::BDF< NSTEPS >::assign_initial_data_values(), oomph::Newmark< NSTEPS >::assign_initial_data_values(), oomph::Newmark< 2 >::assign_initial_data_values(), oomph::Newmark< NSTEPS >::assign_initial_data_values_stage1(), oomph::Newmark< NSTEPS >::assign_initial_data_values_stage2(), oomph::SelfStartingBDF2::assign_initial_values_impulsive(), oomph::Steady< NSTEPS >::assign_initial_values_impulsive(), oomph::Newmark< NSTEPS >::assign_initial_values_impulsive(), oomph::BDF< NSTEPS >::assign_initial_values_impulsive(), VorticityRecoveryProblem< ELEMENT >::assign_synthetic_veloc_field(), oomph::StreamfunctionProblem::assign_velocities(), AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >::AxisymFreeSurfaceNozzleAdvDiffRobinProblem(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::BackupMeshForProjection(), oomph::RefineableQElement< 3 >::build(), oomph::RefineableQElement< 1 >::build(), oomph::RefineableQElement< 2 >::build(), oomph::BrickFromTetMesh< ELEMENT >::build_mesh(), oomph::BDF< NSTEPS >::calculate_predicted_values(), oomph::TR::calculate_predicted_values(), oomph::SelfStartingBDF2::calculate_predicted_values_bdf2(), CapProblem< ELEMENT >::CapProblem(), CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::CoatedDiskProblem(), CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::CoatedSphereProblem(), DarcyProblem< ELEMENT >::complete_problem_setup(), AxisymmetricVibratingShellProblem< ELEMENT >::complete_problem_setup(), VibratingShellProblem< ELEMENT >::complete_problem_setup(), CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::complete_problem_setup(), CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::complete_problem_setup(), TwoLayerInterfaceProblem< ELEMENT >::complete_problem_setup(), UnstructuredFluidProblem< ELEMENT >::complete_problem_setup(), BubbleInChannelProblem< ELEMENT >::complete_problem_setup(), DropInChannelProblem< ELEMENT >::complete_problem_setup(), ElasticAnnulusProblem< ELASTICITY_ELEMENT >::complete_problem_setup(), FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::complete_problem_setup(), RingWithTRibProblem< ELASTICITY_ELEMENT >::complete_problem_setup(), copy(), oomph::LinearisedQCrouzeixRaviartElement::copy_efunction_to_normalisation(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::copy_onto_original_mesh(), oomph::TwoDimensionalPMLHelper::create_bottom_left_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_bottom_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_bottom_right_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_left_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_right_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_top_left_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_top_pml_mesh(), oomph::TwoDimensionalPMLHelper::create_top_right_pml_mesh(), oomph::Mesh::delete_all_external_storage(), ElasticInterfaceProblem< ELEMENT, TIMESTEPPER >::ElasticInterfaceProblem(), EntryFlowProblem< ELEMENT >::EntryFlowProblem(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_cosine_component_of_pressure(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::fix_cosine_component_of_pressure(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_pressure(), oomph::AxisymmetricQTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::fix_pressure(), oomph::LinearisedQTaylorHoodElement::fix_pressure(), oomph::AxisymmetricTCrouzeixRaviartElement::fix_pressure(), oomph::AxisymmetricTTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianQCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >::fix_pressure(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::fix_pressure(), oomph::QCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::QTaylorHoodElement< DIM >::fix_pressure(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::TCrouzeixRaviartElement< DIM >::fix_pressure(), oomph::TTaylorHoodElement< DIM >::fix_pressure(), oomph::QTaylorHoodSpaceTimeElement< DIM >::fix_pressure(), oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >::fix_pressure(), oomph::QSphericalCrouzeixRaviartElement::fix_pressure(), oomph::QSphericalTaylorHoodElement::fix_pressure(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::fix_pressure(), oomph::AxisymmetricQCrouzeixRaviartElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::fix_pressure(), oomph::LinearisedQCrouzeixRaviartElement::fix_pressure(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_sine_component_of_pressure(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::fix_sine_component_of_pressure(), oomph::AxisymQPVDElementWithPressure::fix_solid_pressure(), oomph::QPVDElementWithPressure< DIM >::fix_solid_pressure(), oomph::QPVDElementWithContinuousPressure< DIM >::fix_solid_pressure(), oomph::TPVDElementWithContinuousPressure< DIM >::fix_solid_pressure(), oomph::FoepplvonKarmanVolumeConstraintElement< ELEMENT, MESH >::FoepplvonKarmanVolumeConstraintElement(), for(), FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::FourierDecomposedTimeHarmonicLinearElasticityProblem(), FreeSurfaceRotationProblem< ELEMENT >::FreeSurfaceRotationProblem(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::further_build(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::further_build(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::further_build(), oomph::RefineableLinearisedQCrouzeixRaviartElement::further_build(), oomph::RefineablePolarCrouzeixRaviartElement::further_build(), oomph::RefineableQSphericalCrouzeixRaviartElement::further_build(), HeatedCircularPenetratorElement::HeatedCircularPenetratorElement(), oomph::ImposeFluxForWomersleyElement< DIM >::ImposeFluxForWomersleyElement(), RefineableYoungLaplaceProblem< ELEMENT >::increment_parameters(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), TwoDDGProblem< ELEMENT >::limit(), main(), MeltSpinningProblem< ELEMENT >::MeltSpinningProblem(), MortaringValidationProblem< ELEMENT, NON_MORTAR_ELEMENT >::MortaringValidationProblem(), oomph::MyProblem::my_set_initial_condition(), oomph::ODEProblem::my_set_initial_condition(), oomph::PoissonSmoothMesh< POISSON_ELEMENT >::operator()(), PolarNSProblem< ELEMENT >::output_streamfunction(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::p_refine(), ElasticRingProblem< ELEMENT >::parameter_study(), PeriodicLoadProblem< ELEMENT >::PeriodicLoadProblem(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::pin_all_non_pressure_dofs(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::pin_p_value(), oomph::TPoroelasticityElement< ORDER >::pin_p_value(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::pin_q_edge_value(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::pin_q_internal_value(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::plot_residual_landscape(), oomph::post_midpoint_update(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::pre_build(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::pre_build(), PseudoSolidCapProblem< ELEMENT >::PseudoSolidCapProblem(), read(), BrethertonElement< ELEMENT >::reassign_inflow(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::rebuild_from_sons(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::rebuild_from_sons(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::rebuild_from_sons(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::rebuild_from_sons(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::rebuild_from_sons(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::rebuild_from_sons(), oomph::RefineableLinearisedQCrouzeixRaviartElement::rebuild_from_sons(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::rebuild_from_sons(), oomph::RefineablePolarCrouzeixRaviartElement::rebuild_from_sons(), oomph::RefineableQSphericalCrouzeixRaviartElement::rebuild_from_sons(), oomph::VorticitySmoother< ELEMENT >::recover_vorticity(), RefineablePeriodicLoadProblem< ELEMENT >::RefineablePeriodicLoadProblem(), oomph::ImmersedRigidBodyTriangleMeshPolygon::reset_reference_configuration(), run_navier_stokes_outflow(), HeatedCircularPenetratorElement::set_angle(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), BaseStateProblem< BASE_ELEMENT >::set_boundary_conditions(), PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::set_boundary_conditions(), EultingSphereProblem< ELEMENT >::set_boundary_conditions(), RefineableElutingSphereProblem< ELEMENT >::set_boundary_conditions(), RefineableSphericalCouetteProblem< ELEMENT >::set_boundary_conditions(), RefineableSphericalSpinUpProblem< ELEMENT >::set_boundary_conditions(), SphericalSpinUpProblem< ELEMENT >::set_boundary_conditions(), ConvectionProblem< NST_ELEMENT, AD_ELEMENT >::set_boundary_conditions(), DDConvectionProblem< NST_ELEMENT, AD_ELEMENT >::set_boundary_conditions(), RefineableDDConvectionProblem< NST_ELEMENT, AD_ELEMENT >::set_boundary_conditions(), RefineableSphereConvectionProblem< ELEMENT >::set_boundary_conditions(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::set_boundary_conditions(), AxiPoroProblem< ELEMENT, TIMESTEPPER >::set_boundary_values(), UnstructuredImmersedEllipseProblem< ELEMENT >::set_boundary_velocity(), oomph::SingularNavierStokesSolutionElement< WRAPPED_NAVIER_STOKES_ELEMENT >::set_c(), oomph::ContinuationStorageScheme::set_consistent_pinned_values(), oomph::Problem::set_dofs(), FlowAroundCylinderProblem< ELEMENT >::set_eigenvalue(), RefineableAdvectionDiffusionPipeProblem< ELEMENT >::set_initial_condition(), LinearWaveProblem< ELEMENT, TIMESTEPPER >::set_initial_condition(), RefineableOneDAdvectionDiffusionReactionProblem< ELEMENT >::set_initial_condition(), RefineableActivatorInhibitorProblem< ELEMENT >::set_initial_condition(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_initial_conditions(), AdvectionProblem::set_initial_conditions(), EulerProblem::set_initial_conditions(), RefineableAdvectionDiffusionPipeProblem< ELEMENT >::set_inlet_concentration(), oomph::SurfaceMeltElement< ELEMENT >::set_lagrange_multiplier_pressure_to_zero(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::set_p_value(), oomph::TRaviartThomasDarcyElement< ORDER >::set_p_value(), oomph::Problem::set_pinned_values_to_zero(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::set_q_edge(), oomph::TRaviartThomasDarcyElement< ORDER >::set_q_edge(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::set_q_internal(), oomph::TRaviartThomasDarcyElement< ORDER >::set_q_internal(), oomph::QPVDElementWithPressure< DIM >::set_solid_p(), oomph::QPVDElementWithContinuousPressure< DIM >::set_solid_p(), oomph::TPVDElementWithContinuousPressure< DIM >::set_solid_p(), oomph::MyProblem::set_up_impulsive_initial_condition(), PolarNSProblem< ELEMENT >::setup_external_pressure(), oomph::SelfStartingBDF2::shift_time_values(), oomph::IMRBase::shift_time_values(), oomph::Steady< NSTEPS >::shift_time_values(), oomph::NewmarkBDF< NSTEPS >::shift_time_values(), oomph::BDF< NSTEPS >::shift_time_values(), oomph::TR::shift_time_values(), SolidFreeSurfaceRotationProblem< ELEMENT >::SolidFreeSurfaceRotationProblem(), SphericalSteadyRotationProblem< ELEMENT >::SphericalSteadyRotationProblem(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::spine_node_update_lower(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::spine_node_update_upper(), SegregatedFSICollapsibleChannelProblem< ELEMENT >::steady_run(), StefanBoltzmannProblem< ELEMENT >::StefanBoltzmannProblem(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), RefineablePorousChannelProblem< ELEMENT >::symmetrise_eigenfunction_for_adaptive_pitchfork_tracking(), ThermalProblem< ELEMENT >::ThermalProblem(), TiltedCavityProblem< ELEMENT >::TiltedCavityProblem(), ActivatorInhibitorProblem< ELEMENT >::timestep(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), TwoDDGMesh< ELEMENT >::TwoDDGMesh(), and TwoDDGProblem< ELEMENT >::TwoDDGProblem().

◆ set_value() [2/2]

void oomph::Data::set_value ( const unsigned t,
const unsigned i,
const double value_ 
)
inline

Set the t-th history value of the i-th stored data value to specified value.

282  {
283 #ifdef RANGE_CHECKING
284  range_check(t, i);
285 #endif
286  Value[i][t] = value_;
287  }

References i, range_check(), plotPSD::t, and Value.

◆ time_stepper_pt() [1/2]

TimeStepper*& oomph::Data::time_stepper_pt ( )
inline

Return the pointer to the timestepper.

239  {
240  return Time_stepper_pt;
241  }

References Time_stepper_pt.

Referenced by SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::actions_after_adapt(), oomph::SurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::BackupMeshForProjection(), oomph::LinearElasticityEquationsBase< DIM >::body_force(), oomph::TimeHarmonicLinearElasticityEquationsBase< DIM >::body_force(), oomph::PVDEquationsBase< DIM >::body_force(), oomph::RefineableQElement< 3 >::build(), oomph::RefineableSolidQElement< 3 >::build(), oomph::RefineableQElement< 1 >::build(), oomph::RefineableQElement< 2 >::build(), oomph::RefineableSolidQElement< 2 >::build(), AxisymmetricVibratingShellProblem< ELEMENT >::complete_problem_setup(), VibratingShellProblem< ELEMENT >::complete_problem_setup(), TwoLayerInterfaceProblem< ELEMENT >::complete_problem_setup(), UnstructuredFluidProblem< ELEMENT >::complete_problem_setup(), BubbleInChannelProblem< ELEMENT >::complete_problem_setup(), DropInChannelProblem< ELEMENT >::complete_problem_setup(), oomph::Mesh::convert_to_boundary_node(), oomph::AxisymmetricPoroelasticityEquations::d2u_dt2(), oomph::PoroelasticityEquations< DIM >::d2u_dt2(), oomph::AxisymmetricLinearElasticityEquationsBase::d2u_dt2_axisymmetric_linear_elasticity(), oomph::LinearWaveEquations< DIM >::d2u_dt2_lin_wave(), oomph::LinearElasticityEquationsBase< DIM >::d2u_dt2_linear_elasticity(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::dc_dt_adv_diff_react(), oomph::SurfactantTransportInterfaceElement::dcdt_surface(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::dH_dt(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::dposition_dt(), oomph::ImmersedRigidBodyElement::dposition_dt(), oomph::AxisymmetricPoroelasticityEquations::dq_edge_dt(), oomph::PoroelasticityEquations< DIM >::dq_edge_dt(), oomph::AxisymmetricPoroelasticityEquations::dq_internal_dt(), oomph::PoroelasticityEquations< DIM >::dq_internal_dt(), oomph::AxisymmetricPoroelasticityEquations::du_dt(), oomph::PoroelasticityEquations< DIM >::du_dt(), oomph::AdvectionDiffusionEquations< DIM >::du_dt_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::du_dt_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::du_dt_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::du_dt_axi_nst(), oomph::AxisymmetricLinearElasticityEquationsBase::du_dt_axisymmetric_linear_elasticity(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::du_dt_cons_adv_diff(), oomph::LinearisedAxisymmetricNavierStokesEquations::du_dt_lin_axi_nst(), oomph::LinearWaveEquations< DIM >::du_dt_lin_wave(), oomph::LinearisedAxisymmetricNavierStokesEquations::du_dt_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::du_dt_linearised_nst(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::du_dt_nst(), oomph::NavierStokesEquations< DIM >::du_dt_nst(), oomph::PolarNavierStokesEquations::du_dt_pnst(), oomph::SphericalAdvectionDiffusionEquations::du_dt_spherical_adv_diff(), oomph::SphericalNavierStokesEquations::du_dt_spherical_nst(), oomph::UnsteadyHeatEquations< DIM >::du_dt_ust_heat(), oomph::WomersleyEquations< DIM >::du_dt_womersley(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::extrapolated_strain_rate(), oomph::IMRODEElement::fill_in_contribution_to_jacobian(), oomph::ODEElement::fill_in_contribution_to_jacobian(), oomph::IMRODEElement::fill_in_contribution_to_residuals(), oomph::ODEElement::fill_in_contribution_to_residuals(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), oomph::AxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::fill_in_generic_residual_contribution_interface(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableLinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableSphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::SphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineablePolarTaylorHoodElement::get_interpolated_values(), oomph::RefineablePolarCrouzeixRaviartElement::get_interpolated_values(), oomph::ImmersedRigidBodyElement::get_residuals_rigid_body_generic(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::get_wind_adv_diff_react(), oomph::FiniteElement::get_x(), RefineableUnsteadyHeatProblem< ELEMENT >::global_temporal_error_norm(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::output(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::SolarRadiationBase::output_atmospheric_radiation(), oomph::ImmersedRigidBodyElement::output_centre_of_gravity(), oomph::MyProblem::output_ltes(), oomph::SurfaceMeltElement< ELEMENT >::output_melt(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::output_stefan_boltzmann_radiation(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::pre_build(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::pre_build(), oomph::ImmersedRigidBodyTriangleMeshPolygon::reset_reference_configuration(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_value_paraview(), UnstructuredImmersedEllipseProblem< ELEMENT >::set_boundary_velocity(), oomph::ContinuationStorageScheme::set_consistent_pinned_values(), AdvectionProblem::set_initial_conditions(), EulerProblem::set_initial_conditions(), set_time_stepper(), oomph::IMRODEElement::time_interpolate_time(), oomph::IMRODEElement::time_interpolate_u(), oomph::TemplateFreeContactElementBase::traction_fct(), and oomph::ODEProblem::ts_pt().

◆ time_stepper_pt() [2/2]

TimeStepper* const& oomph::Data::time_stepper_pt ( ) const
inline

Return the pointer to the timestepper (const version).

245  {
246  return Time_stepper_pt;
247  }

References Time_stepper_pt.

◆ unconstrain()

void oomph::Data::unconstrain ( const unsigned i)
inline

Unconstrain the i-th stored variable when make the data nonhanging. Only unconstrain if it was actually constrained (hanging)

443  {
444  if (eqn_number(i) == Is_constrained)
445  {
447  }
448  }

References eqn_number(), i, Is_constrained, and Is_unclassified.

Referenced by oomph::Node::resize(), oomph::Node::set_hanging_pt(), oomph::Node::set_nonhanging(), and unconstrain_all().

◆ unconstrain_all()

void oomph::Data::unconstrain_all ( )
inline

Unconstrain all the stored variables when the data is made nonhanging.

462  {
463  const unsigned n_value = Nvalue;
464  for (unsigned i = 0; i < n_value; i++)
465  {
466  unconstrain(i);
467  }
468  }
void unconstrain(const unsigned &i)
Definition: nodes.h:442

References i, Nvalue, and unconstrain().

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

◆ unpin()

void oomph::Data::unpin ( const unsigned i)
inline

Unpin the i-th stored variable.

392  {
394  }

References eqn_number(), i, and Is_unclassified.

Referenced by SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::actions_after_adapt(), oomph::ElasticallySupportedRingElement::ElasticallySupportedRingElement(), FpTestProblem::FpTestProblem(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableLinearisedQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineablePolarTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQSphericalTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::pin_elemental_redundant_nodal_solid_pressures(), oomph::SolidICProblem::reset_original_state(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::unfix_pressure(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::unfix_pressure(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::unfix_pressure(), FlowAroundCylinderProblem< ELEMENT >::unpin_all_base_flow_dofs(), oomph::AxisymmetricTCrouzeixRaviartElement::unpin_all_internal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::unpin_all_internal_pressure_dofs(), oomph::AxisymmetricTTaylorHoodElement::unpin_all_nodal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::unpin_all_nodal_pressure_dofs(), oomph::SingularNavierStokesSolutionElement< WRAPPED_NAVIER_STOKES_ELEMENT >::unpin_c(), oomph::ImmersedRigidBodyElement::unpin_centre_of_mass_coordinate(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::unpin_elemental_pressure_dofs(), oomph::RefineableAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::unpin_elemental_pressure_dofs(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::unpin_elemental_pressure_dofs(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::unpin_elemental_pressure_dofs(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableLinearisedQCrouzeixRaviartElement::unpin_elemental_pressure_dofs(), oomph::RefineableLinearisedQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableQCrouzeixRaviartElement< DIM >::unpin_elemental_pressure_dofs(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineablePolarTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineablePolarCrouzeixRaviartElement::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableQSphericalTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableQSphericalCrouzeixRaviartElement::unpin_elemental_pressure_dofs(), oomph::RefineableQPVDElementWithPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::QPVDElementWithPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::QPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::TPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::SolidNode::unpin_position(), oomph::AxisymmetricTTaylorHoodElement::unpin_proper_nodal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::unpin_proper_nodal_pressure_dofs(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::unpin_proper_nodal_pressure_dofs(), oomph::TTaylorHoodElement< DIM >::unpin_proper_nodal_pressure_dofs(), oomph::LinearisedQCrouzeixRaviartElement::unpin_real_or_imag(), oomph::ImmersedRigidBodyElement::unpin_rotation_angle(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::unpin_surface(), oomph::ElasticallySupportedRingElement::unpin_yc(), and oomph::WomersleyMesh< WOMERSLEY_ELEMENT >::WomersleyMesh().

◆ unpin_all()

void oomph::Data::unpin_all ( )
inline

Unpin all the stored variables.

408  {
409  const unsigned n_value = Nvalue;
410  for (unsigned i = 0; i < n_value; i++)
411  {
413  }
414  }

References Eqn_number, i, Is_unclassified, and Nvalue.

Referenced by oomph::Node::unpin_all(), oomph::SolidNode::unpin_all(), and oomph::LinearisedQCrouzeixRaviartElement::unpin_real_or_imag().

◆ value() [1/4]

double oomph::Data::value ( const unsigned i) const
inline

Return i-th stored value. This function is not virtual so that it can be inlined. This means that if we have an explicit pointer to a Data object Data* data_pt->value() always returns the "raw" stored value.

294  {
295 #ifdef RANGE_CHECKING
296  range_check(0, i);
297 #endif
298  return Value[i][0];
299  }

References i, range_check(), and Value.

Referenced by YoungLaplaceProblem< ELEMENT >::actions_before_newton_solve(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), HeatedCircularPenetratorElement::angle(), oomph::ImmersedRigidBodyElement::apply_rigid_body_motion(), oomph::Newmark< 2 >::assign_initial_data_values(), oomph::Newmark< NSTEPS >::assign_initial_data_values_stage1(), oomph::Newmark< NSTEPS >::assign_initial_data_values_stage2(), oomph::SelfStartingBDF2::assign_initial_values_impulsive(), oomph::Steady< NSTEPS >::assign_initial_values_impulsive(), oomph::Newmark< NSTEPS >::assign_initial_values_impulsive(), oomph::BDF< NSTEPS >::assign_initial_values_impulsive(), oomph::GeneralisedElement::assign_local_eqn_numbers(), oomph::SingularNavierStokesSolutionElement< WRAPPED_NAVIER_STOKES_ELEMENT >::c(), oomph::BDF< NSTEPS >::calculate_predicted_values(), oomph::TR::calculate_predicted_values(), oomph::SelfStartingBDF2::calculate_predicted_values_bdf2(), oomph::ImmersedRigidBodyElement::centre_of_gravity(), copy(), oomph::LinearisedQCrouzeixRaviartElement::copy_efunction_to_normalisation(), SpineGravityTractionElement< ELEMENT >::delta_p(), UnstructuredFvKProblem< ELEMENT >::doc_solution(), ElasticRingProblem< ELEMENT >::doc_solution(), YoungLaplaceProblem< ELEMENT >::doc_solution(), RefineableYoungLaplaceProblem< ELEMENT >::doc_solution(), SegregatedFSICollapsibleChannelProblem< ELEMENT >::doc_solution_steady(), oomph::ImmersedRigidBodyElement::dposition_dt(), dump(), oomph::LinearisedNavierStokesEigenfunctionNormalisationElement::eigenvalue(), oomph::ODEElement::fill_in_contribution_to_jacobian(), oomph::NodeElementSolidOnlyMortaringElement::fill_in_contribution_to_jacobian_mortared_nodes(), oomph::NodeNodeMortaringElement::fill_in_contribution_to_jacobian_mortared_nodes(), oomph::ConstraintElement::fill_in_contribution_to_residuals(), HeatedCircularPenetratorElement::fill_in_contribution_to_residuals(), oomph::ODEElement::fill_in_contribution_to_residuals(), oomph::PolarNavierStokesTractionElement< ELEMENT >::fill_in_generic_residual_contribution(), oomph::NavierStokesFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_fluid_traction(), oomph::NavierStokesWomersleyPressureControlElement::fill_in_generic_residual_contribution_pressure_control(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::further_build(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::further_build(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::further_build(), oomph::RefineableQCrouzeixRaviartElement< DIM >::further_build(), oomph::RefineablePolarCrouzeixRaviartElement::further_build(), oomph::Problem::get_dofs(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::get_drag_and_torque(), oomph::YoungLaplaceEquations::get_kappa(), TestSoln::get_pressure(), oomph::SingularNavierStokesSolutionElement< WRAPPED_NAVIER_STOKES_ELEMENT >::grad_p_bar(), oomph::SingularNavierStokesSolutionElement< WRAPPED_NAVIER_STOKES_ELEMENT >::grad_u_bar(), RefineableYoungLaplaceProblem< ELEMENT >::increment_parameters(), oomph::ElasticallySupportedRingElement::load(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::output(), oomph::ImmersedRigidBodyElement::output_centre_of_gravity(), oomph::AxisymmetricQCrouzeixRaviartElement::p_axi_nst(), oomph::AxisymmetricTCrouzeixRaviartElement::p_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::p_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::p_axi_nst(), oomph::SingularNavierStokesSolutionElement< WRAPPED_NAVIER_STOKES_ELEMENT >::p_bar(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::p_lin_axi_nst(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::p_linearised_axi_nst(), oomph::LinearisedQCrouzeixRaviartElement::p_linearised_nst(), oomph::GeneralisedNewtonianQCrouzeixRaviartElement< DIM >::p_nst(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::p_nst(), oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >::p_nst(), oomph::QCrouzeixRaviartElement< DIM >::p_nst(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::p_nst(), oomph::TCrouzeixRaviartElement< DIM >::p_nst(), oomph::QSphericalCrouzeixRaviartElement::p_spherical_nst(), oomph::VolumeConstraintElement::p_traded(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::p_value(), oomph::TPoroelasticityElement< ORDER >::p_value(), oomph::FluidInterfaceElement::pext(), oomph::NodeElementSolidOnlyMortaringElement::position_in_element(), oomph::post_midpoint_update(), Global_Physical_Variables::press_load(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::q_internal(), oomph::TRaviartThomasDarcyElement< ORDER >::q_internal(), oomph::TPoroelasticityElement< ORDER >::q_internal(), oomph::Node::raw_value(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::rebuild_from_sons(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::rebuild_from_sons(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::rebuild_from_sons(), oomph::RefineableLinearisedQCrouzeixRaviartElement::rebuild_from_sons(), oomph::RefineablePolarCrouzeixRaviartElement::rebuild_from_sons(), oomph::RefineableQSphericalCrouzeixRaviartElement::rebuild_from_sons(), oomph::PseudoBucklingRingElement::reference_pressure(), oomph::RefineableNavierStokesFluxControlElement< ELEMENT >::refineable_fill_in_generic_residual_contribution_fluid_traction(), oomph::ImmersedRigidBodyTriangleMeshPolygon::reset_reference_configuration(), oomph::ContinuationStorageScheme::set_consistent_pinned_values(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::SelfStartingBDF2::shift_time_values(), oomph::IMRBase::shift_time_values(), oomph::Steady< NSTEPS >::shift_time_values(), oomph::NewmarkBDF< NSTEPS >::shift_time_values(), oomph::BDF< NSTEPS >::shift_time_values(), oomph::TR::shift_time_values(), oomph::AxisymQPVDElementWithPressure::solid_p(), oomph::QPVDElementWithPressure< DIM >::solid_p(), oomph::ODEProblem::solution(), SegregatedFSICollapsibleChannelProblem< ELEMENT >::steady_run(), oomph::IMRBase::temporal_error_in_value(), oomph::BDF< NSTEPS >::temporal_error_in_value(), oomph::TR::temporal_error_in_value(), oomph::SelfStartingBDF2::temporal_error_in_value_bdf2(), oomph::TimeStepper::time_derivative(), oomph::IMRODEElement::time_interpolate_u(), oomph::SingularNavierStokesSolutionElement< WRAPPED_NAVIER_STOKES_ELEMENT >::u_bar(), SegregatedFSICollapsibleChannelProblem< ELEMENT >::unsteady_run(), and value().

◆ value() [2/4]

double oomph::Data::value ( const unsigned t,
const unsigned i 
) const
inline

Return i-th value at time level t (t=0: present, t>0: previous) This function is not virtual so that it can be inlined. This means that if we have an explicit pointer to a Data object Data* data_pt->value() always returns to the "raw" stored value.

306  {
307 #ifdef RANGE_CHECKING
308  range_check(t, i);
309 #endif
310  return Value[i][t];
311  }

References i, range_check(), plotPSD::t, and Value.

◆ value() [3/4]

void oomph::Data::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).

Compute Vector of values (dofs or pinned) at this node at time level t (t=0: present; t>0: previous)

518  {
519  // Loop over all the values and set the value at time level t
520  const unsigned n_value = nvalue();
521  for (unsigned i = 0; i < n_value; i++)
522  {
523  values[i] = value(t, i);
524  }
525  }

References i, nvalue(), plotPSD::t, and value().

◆ value() [4/4]

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

Compute Vector of values for the Data value.

Compute Vector of values (dofs or pinned) at this Data object.

504  {
505  // Loop over all the values and set the appropriate value
506  const unsigned n_value = nvalue();
507  for (unsigned i = 0; i < n_value; i++)
508  {
509  values[i] = value(i);
510  }
511  }

References i, nvalue(), and value().

◆ value_pt() [1/2]

double* oomph::Data::value_pt ( const unsigned i) const
inline

Return the pointer to the i-the stored value. Typically this is required when direct access to the stored value is required, e.g. when writing functions that return a reference to a variable that is stored in a Data object.

325  {
326 #ifdef RANGE_CHECKING
327  range_check(0, i);
328 #endif
329  return Value[i];
330  }

References i, range_check(), and Value.

Referenced by add_value_pt_to_map(), oomph::Problem::arc_length_step_solve(), oomph::ElementWithMovingNodes::assign_all_generic_local_eqn_numbers(), oomph::SpectralElement::assign_all_generic_local_eqn_numbers(), assign_eqn_numbers(), oomph::RefineableElement::assign_hanging_local_eqn_numbers(), oomph::GeneralisedElement::assign_internal_and_external_local_eqn_numbers(), oomph::FiniteElement::assign_nodal_local_eqn_numbers(), oomph::ImmersedRigidBodyElement::centre_rotation_angle(), oomph::ImmersedRigidBodyElement::centre_x_displacement(), oomph::ImmersedRigidBodyElement::centre_y_displacement(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::doc_solution(), ZeroResidualGenElement::eval(), ZeroResidualGenElement::eval_pt(), Global_Physical_Variables::external_pressure(), oomph::SpinePointMarangoniSurfactantFluidInterfaceBoundingElement< ELEMENT >::fill_in_contribution_to_jacobian(), oomph::ConstraintElement::fill_in_contribution_to_residuals(), oomph::GeneralisedElement::fill_in_jacobian_from_external_by_fd(), oomph::ElementWithExternalElement::fill_in_jacobian_from_external_interaction_field_by_fd(), oomph::ElementWithExternalElement::fill_in_jacobian_from_external_interaction_geometric_by_fd(), oomph::GeneralisedElement::fill_in_jacobian_from_internal_by_fd(), oomph::FiniteElement::fill_in_jacobian_from_nodal_by_fd(), oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::PolarCrouzeixRaviartElement::fix_pressure(), oomph::PolarTaylorHoodElement::fix_pressure(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::NavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::RefineableNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::SpaceTimeNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), BrethertonElement< ELEMENT >::get_jacobian(), No_Slip::no_slip_condition_first(), No_Slip::no_slip_condition_second(), oomph::PolarCrouzeixRaviartElement::p_pnst(), oomph::SpaceTimeNavierStokesEquations< DIM >::re_st(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::re_st(), oomph::SpaceTimeNavierStokesEquations< DIM >::re_st_pt(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::re_st_pt(), oomph::LinearisedNavierStokesEquations::set_eigenfunction_normalisation_element(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::SpaceTimeNavierStokesEquations< DIM >::st(), oomph::SpaceTimeNavierStokesEquations< DIM >::st_pt(), oomph::YoungLaplaceContactAngleElement< ELEMENT >::u(), and ZeroResidualGenElement::ZeroResidualGenElement().

◆ value_pt() [2/2]

double* oomph::Data::value_pt ( const unsigned t,
const unsigned i 
) const
inline

Return the pointer to the i-th stored value, or any of its history values (const version). Typically this is required when direct access to the stored value is required, e.g. when writing functions that return a reference to a variable that is stored in a Data object.

338  {
339 #ifdef RANGE_CHECKING
340  range_check(t, i);
341 #endif
342  return &Value[i][t];
343  }

References i, range_check(), plotPSD::t, and Value.

Friends And Related Function Documentation

◆ BoundaryNode

template<class NODE_TYPE >
friend class BoundaryNode
friend

◆ BoundaryNodeBase

friend class BoundaryNodeBase
friend

◆ CopiedData

◆ HijackedData

friend class HijackedData
friend

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
const Data d 
)
friend

Output operator: output all values at all times, along with any extra information stored for the timestepper.

Data output operator: output equation numbers and values at all times, along with any extra information stored for the timestepper.

350  {
351  const unsigned nvalue = d.nvalue();
352  const unsigned nt = d.ntstorage();
353 
354  out << "Data: [" << std::endl;
355 
356  for (unsigned j = 0; j < nvalue; j++)
357  {
358  out << "global eq " << d.eqn_number(j) << ": [";
359  for (unsigned t = 0; t < nt - 1; t++)
360  {
361  out << d.value(t, j) << ", ";
362  }
363  out << d.value(nt - 1, j) << "]" << std::endl;
364  }
365  out << "]" << std::endl;
366 
367 
368  return out;
369  }

◆ SolidNode

friend class SolidNode
friend

Member Data Documentation

◆ Copy_of_data_pt

Data** oomph::Data::Copy_of_data_pt
protected

C-style array of any Data objects that contain copies of the current Data object's data values.

Referenced by add_copy(), remove_copy(), resize(), set_time_stepper(), and ~Data().

◆ Default_static_time_stepper_pt

TimeStepper * oomph::Data::Default_static_time_stepper_pt = new Steady<0>()
staticprotected

Default (static) timestepper used in steady problems.

Default (steady) timestepper for steady Data.

◆ Eqn_number

◆ Is_constrained

long oomph::Data::Is_constrained = -2
static

Static "Magic number" used in place of the equation number to indicate that the value is constrained because it is associated with non-conforming element boundaries — a hanging node — (and is therefore pinned)

Static "Magic number" to indicate that the value is constrained, usually because is it associated with non-conforming data, otherwise known as hanging nodes

Referenced by constrain(), is_constrained(), and unconstrain().

◆ Is_pinned

◆ Is_segregated_solve_pinned

long oomph::Data::Is_segregated_solve_pinned = -3
static

Static "Magic number" used in place of the equation number to indicate that the value is pinned, but only for the duration of a segregated solve.

Referenced by oomph::MyProblem::check_not_segregated(), is_segregated_solve_pinned(), oomph::MyProblem::segregated_pin_indices(), and oomph::MyProblem::undo_segregated_pinning().

◆ Is_unclassified

long oomph::Data::Is_unclassified = -10
static

Static "Magic number" used in place of the equation number to denote a value that hasn't been classified as pinned or free.

Static "Magic number" to indicate values that haven't been classified as pinned or free

Referenced by oomph::ElementWithMovingNodes::assign_all_generic_local_eqn_numbers(), oomph::SpectralElement::assign_all_generic_local_eqn_numbers(), oomph::GeneralisedElement::assign_internal_and_external_local_eqn_numbers(), oomph::FiniteElement::assign_nodal_local_eqn_numbers(), Data(), resize(), self_test(), unconstrain(), oomph::MyProblem::undo_segregated_pinning(), unpin(), and unpin_all().

◆ Ncopies

unsigned oomph::Data::Ncopies
protected

Number of Data that contain copies of this Data object's values

Referenced by add_copy(), remove_copy(), resize(), set_time_stepper(), and ~Data().

◆ Nvalue

◆ Time_stepper_pt

TimeStepper* oomph::Data::Time_stepper_pt
private

Pointer to a Timestepper. The inclusion of a Timestepper pointer in the Data class, ensures that time-derivatives can be calculated and storage can be managed at the low (Data) level.

Referenced by ntstorage(), set_time_stepper(), and time_stepper_pt().

◆ Value

double** oomph::Data::Value
private

C-style array of pointers to data values and possible history values. The data must be ordered in such a way that Value[i][t] gives the i-th data value at the time value t. The ordering is chosen so that all the time levels of a particular value can be access from a single pointer to a double. This is required for copying/hijacking functionality. The data should be accessed by using the member functions value(time,ival) and set_value(time,ival,value), where time=0: present.

Referenced by oomph::HijackedData::clear_copied_pointers(), oomph::CopiedData::clear_copied_pointers(), oomph::CopiedData::CopiedData(), Data(), delete_value_storage(), does_pointer_correspond_to_value(), oomph::HijackedData::HijackedData(), oomph::BoundaryNodeBase::make_node_periodic(), oomph::BoundaryNodeBase::make_nodes_periodic(), oomph::HijackedData::reset_copied_pointers(), oomph::CopiedData::reset_copied_pointers(), oomph::BoundaryNode< NODE_TYPE >::reset_copied_pointers(), resize(), oomph::SolidNode::set_external_variable_position_pt(), oomph::SolidNode::set_position_time_stepper(), set_time_stepper(), set_value(), oomph::SolidNode::SolidNode(), value(), value_pt(), oomph::CopiedData::~CopiedData(), and oomph::HijackedData::~HijackedData().


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