oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT > Class Template Reference

#include <face_mesh_project.h>

+ Inheritance diagram for oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >:

Public Member Functions

 BackupMeshForProjection (Mesh *mesh_pt, const unsigned &boundary_id, const unsigned &id_of_field_to_be_projected=UINT_MAX)
 
void project_onto_new_mesh (Mesh *new_mesh_pt)
 
void copy_onto_original_mesh ()
 
- Public Member Functions inherited from oomph::Mesh
 Mesh ()
 Default constructor. More...
 
 Mesh (const Vector< Mesh * > &sub_mesh_pt)
 
void merge_meshes (const Vector< Mesh * > &sub_mesh_pt)
 
virtual void setup_boundary_element_info ()
 
virtual void setup_boundary_element_info (std::ostream &outfile)
 
virtual void reset_boundary_element_info (Vector< unsigned > &ntmp_boundary_elements, Vector< Vector< unsigned >> &ntmp_boundary_elements_in_region, Vector< FiniteElement * > &deleted_elements)
 Virtual function to perform the reset boundary elements info rutines. More...
 
template<class BULK_ELEMENT >
void doc_boundary_coordinates (const unsigned &b, std::ofstream &the_file)
 
virtual void scale_mesh (const double &factor)
 
 Mesh (const Mesh &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const Mesh &)=delete
 Broken assignment operator. More...
 
virtual ~Mesh ()
 Virtual Destructor to clean up all memory. More...
 
void flush_element_and_node_storage ()
 
void flush_element_storage ()
 
void flush_node_storage ()
 
Node *& node_pt (const unsigned long &n)
 Return pointer to global node n. More...
 
Nodenode_pt (const unsigned long &n) const
 Return pointer to global node n (const version) More...
 
GeneralisedElement *& element_pt (const unsigned long &e)
 Return pointer to element e. More...
 
GeneralisedElementelement_pt (const unsigned long &e) const
 Return pointer to element e (const version) More...
 
const Vector< GeneralisedElement * > & element_pt () const
 Return reference to the Vector of elements. More...
 
Vector< GeneralisedElement * > & element_pt ()
 Return reference to the Vector of elements. More...
 
FiniteElementfinite_element_pt (const unsigned &e) const
 
Node *& boundary_node_pt (const unsigned &b, const unsigned &n)
 Return pointer to node n on boundary b. More...
 
Nodeboundary_node_pt (const unsigned &b, const unsigned &n) const
 Return pointer to node n on boundary b. More...
 
void set_nboundary (const unsigned &nbound)
 Set the number of boundaries in the mesh. More...
 
void remove_boundary_nodes ()
 Clear all pointers to boundary nodes. More...
 
void remove_boundary_nodes (const unsigned &b)
 
void remove_boundary_node (const unsigned &b, Node *const &node_pt)
 Remove a node from the boundary b. More...
 
void add_boundary_node (const unsigned &b, Node *const &node_pt)
 Add a (pointer to) a node to the b-th boundary. More...
 
void copy_boundary_node_data_from_nodes ()
 
bool boundary_coordinate_exists (const unsigned &i) const
 Indicate whether the i-th boundary has an intrinsic coordinate. More...
 
unsigned long nelement () const
 Return number of elements in the mesh. More...
 
unsigned long nnode () const
 Return number of nodes in the mesh. More...
 
unsigned ndof_types () const
 Return number of dof types in mesh. More...
 
unsigned elemental_dimension () const
 Return number of elemental dimension in mesh. More...
 
unsigned nodal_dimension () const
 Return number of nodal dimension in mesh. More...
 
void add_node_pt (Node *const &node_pt)
 Add a (pointer to a) node to the mesh. More...
 
void add_element_pt (GeneralisedElement *const &element_pt)
 Add a (pointer to) an element to the mesh. More...
 
virtual void node_update (const bool &update_all_solid_nodes=false)
 
virtual void reorder_nodes (const bool &use_old_ordering=true)
 
virtual void get_node_reordering (Vector< Node * > &reordering, const bool &use_old_ordering=true) const
 
template<class BULK_ELEMENT , template< class > class FACE_ELEMENT>
void build_face_mesh (const unsigned &b, Mesh *const &face_mesh_pt)
 
unsigned self_test ()
 Self-test: Check elements and nodes. Return 0 for OK. More...
 
void max_and_min_element_size (double &max_size, double &min_size)
 
double total_size ()
 
void check_inverted_elements (bool &mesh_has_inverted_elements, std::ofstream &inverted_element_file)
 
void check_inverted_elements (bool &mesh_has_inverted_elements)
 
unsigned check_for_repeated_nodes (const double &epsilon=1.0e-12)
 
Vector< Node * > prune_dead_nodes ()
 
unsigned nboundary () const
 Return number of boundaries. More...
 
unsigned long nboundary_node (const unsigned &ibound) const
 Return number of nodes on a particular boundary. More...
 
FiniteElementboundary_element_pt (const unsigned &b, const unsigned &e) const
 Return pointer to e-th finite element on boundary b. More...
 
Nodeget_some_non_boundary_node () const
 
unsigned nboundary_element (const unsigned &b) const
 Return number of finite elements that are adjacent to boundary b. More...
 
int face_index_at_boundary (const unsigned &b, const unsigned &e) const
 
virtual void dump (std::ofstream &dump_file, const bool &use_old_ordering=true) const
 Dump the data in the mesh into a file for restart. More...
 
void dump (const std::string &dump_file_name, const bool &use_old_ordering=true) const
 Dump the data in the mesh into a file for restart. More...
 
virtual void read (std::ifstream &restart_file)
 Read solution from restart file. More...
 
void output_paraview (std::ofstream &file_out, const unsigned &nplot) const
 
void output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
 
void output_fct_paraview (std::ofstream &file_out, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
void output (std::ostream &outfile)
 Output for all elements. More...
 
void output (std::ostream &outfile, const unsigned &n_plot)
 Output at f(n_plot) points in each element. More...
 
void output (FILE *file_pt)
 Output for all elements (C-style output) More...
 
void output (FILE *file_pt, const unsigned &nplot)
 Output at f(n_plot) points in each element (C-style output) More...
 
void output (const std::string &output_filename)
 Output for all elements. More...
 
void output (const std::string &output_filename, const unsigned &n_plot)
 Output at f(n_plot) points in each element. More...
 
void output_fct (std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt)
 Output a given Vector function at f(n_plot) points in each element. More...
 
void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt)
 
void output_boundaries (std::ostream &outfile)
 Output the nodes on the boundaries (into separate tecplot zones) More...
 
void output_boundaries (const std::string &output_filename)
 
void assign_initial_values_impulsive ()
 Assign initial values for an impulsive start. More...
 
void shift_time_values ()
 
void calculate_predictions ()
 
void set_nodal_and_elemental_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
virtual void set_mesh_level_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
void set_consistent_pinned_values_for_continuation (ContinuationStorageScheme *const &continuation_stepper_pt)
 Set consistent values for pinned data in continuation. More...
 
bool does_pointer_correspond_to_mesh_data (double *const &parameter_pt)
 Does the double pointer correspond to any mesh data. More...
 
void set_nodal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 Set the timestepper associated with the nodal data in the mesh. More...
 
void set_elemental_internal_time_stepper (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
virtual void compute_norm (double &norm)
 
virtual void compute_norm (Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 Returns the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
bool is_mesh_distributed () const
 Boolean to indicate if Mesh has been distributed. More...
 
OomphCommunicatorcommunicator_pt () const
 
void delete_all_external_storage ()
 Wipe the storage for all externally-based elements. More...
 

Private Attributes

std::map< Node *, Node * > New_node_pt
 Map returning new node, labeled by node point in original mesh. More...
 
unsigned Boundary_id
 Boundary id. More...
 
unsigned ID_of_field_to_be_projected
 

Additional Inherited Members

- Public Types inherited from oomph::Mesh
typedef void(FiniteElement::* SteadyExactSolutionFctPt) (const Vector< double > &x, Vector< double > &soln)
 
typedef void(FiniteElement::* UnsteadyExactSolutionFctPt) (const double &time, const Vector< double > &x, Vector< double > &soln)
 
- Static Public Attributes inherited from oomph::Mesh
static Steady< 0 > Default_TimeStepper
 The Steady Timestepper. More...
 
static bool Suppress_warning_about_empty_mesh_level_time_stepper_function
 Static boolean flag to control warning about mesh level timesteppers. More...
 
- Protected Member Functions inherited from oomph::Mesh
unsigned long assign_global_eqn_numbers (Vector< double * > &Dof_pt)
 Assign (global) equation numbers to the nodes. More...
 
void describe_dofs (std::ostream &out, const std::string &current_string) const
 
void describe_local_dofs (std::ostream &out, const std::string &current_string) const
 
void assign_local_eqn_numbers (const bool &store_local_dof_pt)
 Assign local equation numbers in all elements. More...
 
void convert_to_boundary_node (Node *&node_pt, const Vector< FiniteElement * > &finite_element_pt)
 
void convert_to_boundary_node (Node *&node_pt)
 
- Protected Attributes inherited from oomph::Mesh
Vector< Vector< Node * > > Boundary_node_pt
 
bool Lookup_for_elements_next_boundary_is_setup
 
Vector< Vector< FiniteElement * > > Boundary_element_pt
 
Vector< Vector< int > > Face_index_at_boundary
 
Vector< Node * > Node_pt
 Vector of pointers to nodes. More...
 
Vector< GeneralisedElement * > Element_pt
 Vector of pointers to generalised elements. More...
 
std::vector< boolBoundary_coordinate_exists
 

Detailed Description

template<class GEOMETRIC_ELEMENT>
class oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >

//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Class that makes backup (via a deep copy) of a mesh, keeping alive enough information to allow the solution that is currently stored on the mesh to be projected onto another mesh sometime in the future (when the original mesh may already have been deleted). This is mainly useful for the projection of additional nodal values (such as Lagrange multipliers) created by FaceElements. ASSUMPTION: All fields in the element are represented by isoparametric Lagrange interpolation between the nodal values. Any fields that do not fall into this category will not be copied across correctly and if you're unlucky the code may die...).

Constructor & Destructor Documentation

◆ BackupMeshForProjection()

template<class GEOMETRIC_ELEMENT >
oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::BackupMeshForProjection ( Mesh mesh_pt,
const unsigned boundary_id,
const unsigned id_of_field_to_be_projected = UINT_MAX 
)
inline

Constructor: Pass existing mesh and the boundary ID (need to find the boundary coordinates that are used for the projection. Optional final argument specifies the ID of the field (i.e. the index of the relevant nodal value!) to be projected. If omitted, we project all of them.

234  : Boundary_id(boundary_id),
235  ID_of_field_to_be_projected(id_of_field_to_be_projected)
236  {
237  // Find unique nodes (via elements because Node_pt vector in
238  // original mesh may not have been filled (typical for most
239  // face element meshes)
240  unsigned nel = mesh_pt->nelement();
241  Element_pt.reserve(nel);
242  Node_pt.reserve(mesh_pt->nnode());
243  for (unsigned e = 0; e < nel; e++)
244  {
245  FiniteElement* el_pt = mesh_pt->finite_element_pt(e);
246  if (el_pt != 0)
247  {
248  // Make new element
249 #ifdef PARANOID
250  if (dynamic_cast<GEOMETRIC_ELEMENT*>(mesh_pt->element_pt(e)) == 0)
251  {
252  std::ostringstream error_message;
253  error_message << "Element is of wrong type " << typeid(el_pt).name()
254  << " doesn't match template parameter!" << std::endl;
255  throw OomphLibError(error_message.str(),
258 
259  if (el_pt->ninternal_data() != 0)
260  {
261  std::ostringstream error_message;
262  error_message
263  << "Internal data will NOT be projected across!\n"
264  << "If you want this functionality you'll have to \n"
265  << "implement it yourself" << std::endl;
266  OomphLibWarning(error_message.str(),
269  }
270  }
271 #endif
272 
273  // Make a new element
274  GenericLagrangeInterpolatedProjectableElement<GEOMETRIC_ELEMENT>*
275  new_el_pt = new GenericLagrangeInterpolatedProjectableElement<
276  GEOMETRIC_ELEMENT>;
277 
278  // Set boundary ID
279  new_el_pt->set_boundary_id(Boundary_id);
280 
281  // Set nodal dimension
282  unsigned nodal_dim = el_pt->node_pt(0)->ndim();
283  new_el_pt->set_nodal_dimension(nodal_dim);
284 
285  // Add it to mesh
286  add_element_pt(new_el_pt);
287 
288  // Create new nodes if needed
289  unsigned nnod = el_pt->nnode();
290  for (unsigned j = 0; j < nnod; j++)
291  {
292  Node* old_node_pt = el_pt->node_pt(j);
293  if (New_node_pt[old_node_pt] == 0)
294  {
295  Node* new_nod_pt = 0;
296 
297 
298 #ifdef PARANOID
299  // Check boundary node-ness
300  if (!old_node_pt->is_on_boundary())
301  {
302  std::ostringstream error_message;
303  error_message << "Node isn't on a boundary!" << std::endl;
304  throw OomphLibError(error_message.str(),
307  }
308 #endif
309 
310 
311  // How many values are we projecting? Default: All
312  unsigned nval = old_node_pt->nvalue();
313  unsigned first_index_in_old_node = 0;
314  if (ID_of_field_to_be_projected != UINT_MAX)
315  {
316  nval = dynamic_cast<BoundaryNodeBase*>(old_node_pt)
317  ->nvalue_assigned_by_face_element(
319  first_index_in_old_node =
320  dynamic_cast<BoundaryNodeBase*>(old_node_pt)
321  ->index_of_first_value_assigned_by_face_element(
323  }
324 
325  // Build new node
326  new_nod_pt =
327  new BoundaryNode<Node>(old_node_pt->time_stepper_pt(),
328  old_node_pt->ndim(),
329  old_node_pt->nposition_type(),
330  nval);
331 
332  // Copy data across
333  unsigned n_time = old_node_pt->ntstorage();
334  for (unsigned t = 0; t < n_time; t++)
335  {
336  for (unsigned i = 0; i < nval; i++)
337  {
338  new_nod_pt->set_value(
339  t, i, old_node_pt->value(t, first_index_in_old_node + i));
340  }
341  }
342 
343  // Copy nodal positions
344  unsigned n_dim = old_node_pt->ndim();
345  for (unsigned i = 0; i < n_dim; i++)
346  {
347  new_nod_pt->x(i) = old_node_pt->x(i);
348  }
349 
350  // Add to boundary
351  new_nod_pt->add_to_boundary(Boundary_id);
352 
353  // Transfer boundary coordinates
354 #ifdef PARANOID
355  if (!old_node_pt->is_on_boundary(Boundary_id))
356  {
357  std::ostringstream error_message;
358  error_message << "Boundary ID specified as " << Boundary_id
359  << " but node isn't actually on that boundary!"
360  << std::endl;
361  throw OomphLibError(error_message.str(),
364  }
365 #endif
366 
367  // Get vector of coordinates on mesh boundary from old node
368  unsigned n = old_node_pt->ncoordinates_on_boundary(Boundary_id);
369  Vector<double> zeta(n);
370  old_node_pt->get_coordinates_on_boundary(Boundary_id, zeta);
371 
372  // Set for new node
373  new_nod_pt->set_coordinates_on_boundary(Boundary_id, zeta);
374 
375  // Add node
376  Node_pt.push_back(new_nod_pt);
377 
378  // Setup association
379  New_node_pt[old_node_pt] = new_nod_pt;
380  }
381 
382  // Set node pointer from new element
383  new_el_pt->node_pt(j) = New_node_pt[old_node_pt];
384  }
385  }
386  }
387  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
std::map< Node *, Node * > New_node_pt
Map returning new node, labeled by node point in original mesh.
Definition: face_mesh_project.h:468
unsigned Boundary_id
Boundary id.
Definition: face_mesh_project.h:471
unsigned ID_of_field_to_be_projected
Definition: face_mesh_project.h:475
Vector< Node * > Node_pt
Vector of pointers to nodes.
Definition: mesh.h:183
void add_element_pt(GeneralisedElement *const &element_pt)
Add a (pointer to) an element to the mesh.
Definition: mesh.h:617
Vector< GeneralisedElement * > Element_pt
Vector of pointers to generalised elements.
Definition: mesh.h:186
EIGEN_STRONG_INLINE const Eigen::CwiseBinaryOp< Eigen::internal::scalar_zeta_op< typename DerivedX::Scalar >, const DerivedX, const DerivedQ > zeta(const Eigen::ArrayBase< DerivedX > &x, const Eigen::ArrayBase< DerivedQ > &q)
Definition: SpecialFunctionsArrayAPI.h:152
string name
Definition: plotDoE.py:33
t
Definition: plotPSD.py:36
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References oomph::Mesh::add_element_pt(), oomph::Node::add_to_boundary(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::Boundary_id, e(), oomph::Mesh::Element_pt, oomph::Mesh::element_pt(), oomph::Mesh::finite_element_pt(), oomph::Node::get_coordinates_on_boundary(), i, oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::ID_of_field_to_be_projected, oomph::Node::is_on_boundary(), j, n, plotDoE::name, oomph::Node::ncoordinates_on_boundary(), oomph::Node::ndim(), oomph::Mesh::nelement(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::New_node_pt, oomph::GeneralisedElement::ninternal_data(), oomph::FiniteElement::nnode(), oomph::Mesh::nnode(), oomph::FiniteElement::node_pt(), oomph::Mesh::Node_pt, oomph::Node::nposition_type(), oomph::Data::ntstorage(), oomph::Data::nvalue(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::set_boundary_id(), oomph::Node::set_coordinates_on_boundary(), oomph::FiniteElement::set_nodal_dimension(), oomph::Data::set_value(), plotPSD::t, oomph::Data::time_stepper_pt(), oomph::Node::value(), oomph::Node::x(), and Eigen::zeta().

Member Function Documentation

◆ copy_onto_original_mesh()

template<class GEOMETRIC_ELEMENT >
void oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::copy_onto_original_mesh ( )
inline

Copy nodal values back onto original mesh from which this mesh was built. This obviously only makes sense if the original mesh still exists!

427  {
428  for (std::map<Node*, Node*>::iterator it = New_node_pt.begin();
429  it != New_node_pt.end();
430  it++)
431  {
432  // Get old node (in the previously existing mesh)
433  Node* old_node_pt = (*it).first;
434 
435  // ...and corresponding new one (in the mesh where we did the projection
436  Node* new_node_pt = (*it).second;
437 
438  // How many values are we moving across?
439  unsigned nval = old_node_pt->nvalue();
440  unsigned first_index_in_old_node = 0;
441  if (ID_of_field_to_be_projected != UINT_MAX)
442  {
443  nval =
444  dynamic_cast<BoundaryNodeBase*>(old_node_pt)
445  ->nvalue_assigned_by_face_element(ID_of_field_to_be_projected);
446  first_index_in_old_node =
447  dynamic_cast<BoundaryNodeBase*>(old_node_pt)
448  ->index_of_first_value_assigned_by_face_element(
450  }
451 
452  // Copy data across (include offset in orig mesh)
453  unsigned n_time = old_node_pt->ntstorage();
454  for (unsigned t = 0; t < n_time; t++)
455  {
456  for (unsigned i = 0; i < nval; i++)
457  {
458  old_node_pt->set_value(
459  t, first_index_in_old_node + i, new_node_pt->value(t, i));
460  }
461  }
462  }
463  }

References i, oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::ID_of_field_to_be_projected, oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::New_node_pt, oomph::Data::ntstorage(), oomph::Data::nvalue(), oomph::Data::set_value(), plotPSD::t, and oomph::Node::value().

Referenced by oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::project_onto_new_mesh().

◆ project_onto_new_mesh()

template<class GEOMETRIC_ELEMENT >
void oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::project_onto_new_mesh ( Mesh new_mesh_pt)
inline

Project the solution that was present in the original mesh and from which this backup mesh was created onto the mesh pointed to by new_mesh_pt. Note that elements in the new mesh do not have to be projectable. The original mesh may by now have been deleted.

395  {
396  // Make copy of new mesh that we can project onto
397  BackupMeshForProjection<GEOMETRIC_ELEMENT>* projectable_new_mesh_pt =
398  new BackupMeshForProjection<GEOMETRIC_ELEMENT>(
400 
401  // Create projection problem
402  ProjectionProblem<
403  GenericLagrangeInterpolatedProjectableElement<GEOMETRIC_ELEMENT>>*
404  proj_problem_pt = new ProjectionProblem<
405  GenericLagrangeInterpolatedProjectableElement<GEOMETRIC_ELEMENT>>;
406 
407  // Set the mesh we want to project onto
408  proj_problem_pt->mesh_pt() = projectable_new_mesh_pt;
409 
410  // Project from projectable copy of original mesh -- this one!
411  bool dont_project_positions = true;
412  proj_problem_pt->project(this, dont_project_positions);
413 
414  // Copy nodal values onto the corresponding nodes in the new mesh
415  projectable_new_mesh_pt->copy_onto_original_mesh();
416 
417  // Kill!
418  delete proj_problem_pt;
419  delete projectable_new_mesh_pt;
420  }

References oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::Boundary_id, oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::copy_onto_original_mesh(), and oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::ID_of_field_to_be_projected.

Referenced by ContactProblem< ELEMENT >::actions_after_adapt().

Member Data Documentation

◆ Boundary_id

◆ ID_of_field_to_be_projected

template<class GEOMETRIC_ELEMENT >
unsigned oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::ID_of_field_to_be_projected
private

◆ New_node_pt

template<class GEOMETRIC_ELEMENT >
std::map<Node*, Node*> oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::New_node_pt
private

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