![]() |
|
#include <two_layer_perturbed_spine_mesh.template.h>
Public Member Functions | |
TwoLayerPerturbedSpineMesh (const unsigned &nx, const unsigned &ny1, const unsigned &ny2, const double &lx, const double &h1, const double &h2, SpineMesh *&base_mesh_pt, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
TwoLayerPerturbedSpineMesh (const unsigned &nx, const unsigned &ny1, const unsigned &ny2, const double &lx, const double &h1, const double &h2, const bool &periodic_in_x, SpineMesh *&base_mesh_pt, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
TwoLayerPerturbedSpineMesh (const unsigned &nx, const unsigned &ny1, const unsigned &ny2, const double &lx, const double &h1, const double &h2, const bool &periodic_in_x, const bool &build_mesh, SpineMesh *&base_mesh_pt, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
void | element_reorder () |
FiniteElement *& | upper_layer_element_pt (const unsigned long &i) |
Access functions for pointers to elements in upper layer. More... | |
FiniteElement *& | lower_layer_element_pt (const unsigned long &i) |
Access functions for pointers to elements in lower layer. More... | |
unsigned long | nupper () const |
Number of elements in upper layer. More... | |
unsigned long | nlower () const |
Number of elements in top layer. More... | |
void | perturbed_spine_node_update (PerturbedSpineNode *spine_node_pt) |
const unsigned & | ny1 () const |
Access function for number of elements in lower layer. More... | |
const unsigned & | ny2 () const |
Access function for number of elements in upper layer. More... | |
const void | set_perturbation_to_nodal_positions_indices (const unsigned &cosine_index, const unsigned &sine_index) |
![]() | |
RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, const bool &periodic_in_x, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, const bool &periodic_in_x, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
const unsigned & | nx () const |
Return number of elements in x direction. More... | |
const unsigned & | ny () const |
Return number of elements in y direction. More... | |
const double | x_min () const |
Return the minimum value of x coordinate. More... | |
const double | x_max () const |
Return the maximum value of x coordinate. More... | |
const double | y_min () const |
Return the minimum value of y coordinate. More... | |
const double | y_max () const |
Return the maximum value of y coordinate. More... | |
![]() | |
QuadMeshBase () | |
Constructor (empty) More... | |
QuadMeshBase (const QuadMeshBase &node)=delete | |
Broken copy constructor. More... | |
void | operator= (const QuadMeshBase &)=delete |
Broken assignment operator. More... | |
virtual | ~QuadMeshBase () |
Destructor (empty) More... | |
void | setup_boundary_element_info () |
void | setup_boundary_element_info (std::ostream &outfile) |
![]() | |
Mesh () | |
Default constructor. More... | |
Mesh (const Vector< Mesh * > &sub_mesh_pt) | |
void | merge_meshes (const Vector< Mesh * > &sub_mesh_pt) |
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... | |
Node * | node_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... | |
GeneralisedElement * | element_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... | |
FiniteElement * | finite_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... | |
Node * | boundary_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 | 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... | |
FiniteElement * | boundary_element_pt (const unsigned &b, const unsigned &e) const |
Return pointer to e-th finite element on boundary b. More... | |
Node * | get_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 |
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... | |
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 ¶meter_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... | |
OomphCommunicator * | communicator_pt () const |
void | delete_all_external_storage () |
Wipe the storage for all externally-based elements. More... | |
![]() | |
virtual | ~PerturbedSpineMesh () |
Destructor to clean up the memory allocated to the perturbed spines. More... | |
PerturbedSpine *const & | perturbed_spine_pt (const unsigned long &i) const |
Return the i-th perturbed spine in the mesh. More... | |
unsigned long | nspine () const |
Return the number of perturbed spines in the mesh. More... | |
void | add_perturbed_spine_pt (PerturbedSpine *const &spine_pt) |
Add a perturbed spine to the mesh. More... | |
PerturbedSpineNode * | node_pt (const unsigned long &n) |
Return a pointer to the n-th global PerturbedSpineNode. More... | |
PerturbedSpineNode * | element_node_pt (const unsigned long &e, const unsigned &n) |
unsigned long | assign_global_eqn_numbers (Vector< double * > &Dof_pt) |
Assign equation numbers for perturbed spines. More... | |
void | node_update (const bool &update_all_solid_nodes=false) |
void | dump (std::ofstream &dump_file, const bool &use_old_ordering=true) const |
Overload the dump function so that the spine data is dumped. More... | |
void | read (std::ifstream &restart_file) |
Overload the read function so that the spine data is also read. More... | |
Protected Member Functions | |
double | x_spacing_function (unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode) |
double | y_spacing_function (unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode) |
void | spine_node_update_lower (PerturbedSpineNode *spine_node_pt) |
Update function for the lower part of the domain. More... | |
void | spine_node_update_upper (PerturbedSpineNode *spine_node_pt) |
Update function for the upper part of the domain. More... | |
virtual void | build_two_layer_mesh (TimeStepper *time_stepper_pt) |
![]() | |
void | build_mesh (TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) |
Generic mesh construction function: contains all the hard work. More... | |
RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, const bool &periodic_in_x, const bool &build, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
![]() | |
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 ¤t_string) const |
void | describe_local_dofs (std::ostream &out, const std::string ¤t_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 | |
unsigned | Ny1 |
Number of elements in lower layer. More... | |
unsigned | Ny2 |
Number of elements in upper layer. More... | |
double | H1 |
Height of the lower layer. More... | |
double | H2 |
Height of the upper layer. More... | |
SpineMesh * | Base_mesh_pt |
Pointer to corresponding mesh of base state problem. More... | |
int | YC_index |
int | YS_index |
Vector< FiniteElement * > | Lower_layer_element_pt |
Vector of pointers to element in the lower layer. More... | |
Vector< FiniteElement * > | Upper_layer_element_pt |
Vector of pointers to element in the upper layer. More... | |
![]() | |
unsigned | Nx |
Nx: number of elements in x-direction. More... | |
unsigned | Ny |
Ny: number of elements in y-direction. More... | |
unsigned | Np |
Np: number of (linear) points in the element. More... | |
double | Xmin |
Minimum value of x coordinate. More... | |
double | Xmax |
Maximum value of x coordinate. More... | |
double | Ymin |
Minimum value of y coordinate. More... | |
double | Ymax |
Maximum value of y coordinate. More... | |
bool | Xperiodic |
![]() | |
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< bool > | Boundary_coordinate_exists |
![]() | |
Vector< PerturbedSpine * > | PerturbedSpine_pt |
A PerturbedSpine mesh contains a Vector of pointers to perturbed spines. More... | |
Static Private Attributes | |
static int | Perturbation_to_nodal_position_indices_not_set_up |
Additional Inherited Members | |
![]() | |
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 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... | |
Two-layer spine mesh class derived from standard 2D mesh. The mesh contains two layers of spinified fluid elements (of type ELEMENT; e.g PerturbedSpineElement<QCrouzeixRaviartElement<2>) and an intermediate interface layer of corresponding PerturbedSpine interface elements, of type INTERFACE_ELEMENT, e.g. PerturbedSpineLineFluidInterfaceElement<ELEMENT> for 2D planar problems.
oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh | ( | const unsigned & | nx, |
const unsigned & | ny1, | ||
const unsigned & | ny2, | ||
const double & | lx, | ||
const double & | h1, | ||
const double & | h2, | ||
SpineMesh *& | base_mesh_pt, | ||
TimeStepper * | time_stepper_pt = &Mesh::Default_TimeStepper |
||
) |
Constructor: Pass in:
Constructor for 2D perturbed spine mesh: Pass in:
The mesh contains two layers of elements (of type ELEMENT; e.g PerturbedSpineElement<QCrouzeixRaviartElement<2>) and an interfacial layer of corresponding PerturbedSpine interface elements of type INTERFACE_ELEMENT, e.g. PerturbedSpineLineFluidInterfaceElement<ELEMENT> for 2D planar problems.
We set YC_index and YS_index, which store the indices at which the cosine and sine parts (respectively) of the perturbation to the nodal y-position are stored in the bulk element, to a "magic" number which indicates that the indices have not been set up yet.
oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh | ( | const unsigned & | nx, |
const unsigned & | ny1, | ||
const unsigned & | ny2, | ||
const double & | lx, | ||
const double & | h1, | ||
const double & | h2, | ||
const bool & | periodic_in_x, | ||
SpineMesh *& | base_mesh_pt, | ||
TimeStepper * | time_stepper_pt = &Mesh::Default_TimeStepper |
||
) |
Constructor: Pass in:
Constructor for 2D perturbed spine mesh: Pass in:
The mesh contains two layers of elements (of type ELEMENT; e.g PerturbedSpineElement<QCrouzeixRaviartElement<2>) and an interfacial layer of corresponding PerturbedSpine interface elements of type INTERFACE_ELEMENT, e.g. PerturbedSpineLineFluidInterfaceElement<ELEMENT> for 2D planar problems.
We set YC_index and YS_index, which store the indices at which the cosine and sine parts (respectively) of the perturbation to the nodal y-position are stored in the bulk element, to a "magic" number which indicates that the indices have not been set up yet.
References oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::build_two_layer_mesh(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::H1, oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::H2, oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::ny1(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Ny1, oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::ny2(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Ny2.
oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh | ( | const unsigned & | nx, |
const unsigned & | ny1, | ||
const unsigned & | ny2, | ||
const double & | lx, | ||
const double & | h1, | ||
const double & | h2, | ||
const bool & | periodic_in_x, | ||
const bool & | build_mesh, | ||
SpineMesh *& | base_mesh_pt, | ||
TimeStepper * | time_stepper_pt = &Mesh::Default_TimeStepper |
||
) |
Constructor: Pass in:
Constructor for 2D perturbed spine mesh: Pass in:
The mesh contains two layers of elements (of type ELEMENT; e.g PerturbedSpineElement<QCrouzeixRaviartElement<2>) and an interfacial layer of corresponding PerturbedSpine interface elements of type INTERFACE_ELEMENT, e.g. PerturbedSpineLineFluidInterfaceElement<ELEMENT> for 2D planar problems.
We set YC_index and YS_index, which store the indices at which the cosine and sine parts (respectively) of the perturbation to the nodal y-position are stored in the bulk element, to a "magic" number which indicates that the indices have not been set up yet.
References oomph::RectangularQuadMesh< ELEMENT >::build_mesh(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::build_two_layer_mesh(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::H1, oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::H2, oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::ny1(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Ny1, oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::ny2(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Ny2.
|
protectedvirtual |
Helper function to actually build the two-layer spine mesh (called from various constructors)
Helper function that actually builds the two-layer spine mesh based on the parameters set in the various constructors
References oomph::RectangularQuadMesh< ELEMENT >::build_mesh(), e(), and GlobalParameters::Nx.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh().
|
virtual |
Reorder the elements so we loop over them vertically first (advantageous in "wide" domains if a frontal solver is used).
Reorder the elements, so we loop over them vertically first (advantageous in "wide" domains if a frontal solver is used).
Reimplemented from oomph::RectangularQuadMesh< ELEMENT >.
References e(), i, j, and GlobalParameters::Nx.
|
inline |
Access functions for pointers to elements in lower layer.
References i, and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Lower_layer_element_pt.
Referenced by PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem().
|
inline |
Number of elements in top layer.
References oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Lower_layer_element_pt.
Referenced by PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem().
|
inline |
Number of elements in upper layer.
References oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Upper_layer_element_pt.
Referenced by PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem().
|
inline |
Access function for number of elements in lower layer.
References oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Ny1.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh().
|
inline |
Access function for number of elements in upper layer.
References oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Ny2.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh().
|
inlinevirtual |
General node update function implements pure virtual function defined in PerturbedSpineMesh base class and performs specific update actions, depending on the node update fct id stored for each node. This function sets the nodal positions to be the same as in the base state problem through the perturbed spine's pointer to its corresponding base spine. Additionally this function updates the perturbations to the nodal positions, which are stored as (pinned) values at the nodes.
Implements oomph::PerturbedSpineMesh.
References oomph::PerturbedSpineNode::node_update_fct_id(), OOMPH_EXCEPTION_LOCATION, oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::spine_node_update_lower(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::spine_node_update_upper().
|
inline |
Set up the internal data YC_index and YS_index, which store the indices at which the perturbations to the nodal y-position are stored in the bulk element
References oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::YC_index, and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::YS_index.
Referenced by PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem().
|
inlineprotected |
Update function for the lower part of the domain.
References oomph::PerturbedSpine::base_spine_pt(), oomph::PerturbedSpineNode::fraction(), oomph::Spine::height(), oomph::PerturbedSpine::height(), OOMPH_EXCEPTION_LOCATION, oomph::PerturbedSpineNode::perturbed_spine_pt(), oomph::Data::set_value(), w, oomph::Node::x(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::YC_index, oomph::RectangularQuadMesh< ELEMENT >::Ymin, and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::YS_index.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::perturbed_spine_node_update().
|
inlineprotected |
Update function for the upper part of the domain.
References oomph::PerturbedSpine::base_spine_pt(), oomph::PerturbedSpineNode::fraction(), oomph::Spine::height(), oomph::PerturbedSpine::height(), OOMPH_EXCEPTION_LOCATION, oomph::PerturbedSpineNode::perturbed_spine_pt(), oomph::Data::set_value(), w, oomph::Node::x(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::YC_index, oomph::RectangularQuadMesh< ELEMENT >::Ymax, oomph::RectangularQuadMesh< ELEMENT >::Ymin, and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::YS_index.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::perturbed_spine_node_update().
|
inline |
Access functions for pointers to elements in upper layer.
References i, and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::Upper_layer_element_pt.
Referenced by PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem().
|
protectedvirtual |
The spacing function for the x co-ordinates with two regions.
The spacing function for the x co-ordinate, which is the same as the default function.
Reimplemented from oomph::RectangularQuadMesh< ELEMENT >.
References GlobalParameters::Nx.
|
protectedvirtual |
The spacing function for the y co-ordinates with three regions in each fluid.
The spacing function for the y co-ordinates, which splits the region into two regions (1 and 2), according to the heights H1 and H2, with Ny1 and Ny2 elements respectively.
Reimplemented from oomph::RectangularQuadMesh< ELEMENT >.
|
protected |
Pointer to corresponding mesh of base state problem.
|
protected |
Height of the lower layer.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh().
|
protected |
Height of the upper layer.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh().
|
protected |
Vector of pointers to element in the lower layer.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::lower_layer_element_pt(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::nlower().
|
protected |
Number of elements in lower layer.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::ny1(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh().
|
protected |
Number of elements in upper layer.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::ny2(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::TwoLayerPerturbedSpineMesh().
|
staticprivate |
Static "magic" number that indicates that the indices at which the perturbations to the nodal y-positions are stored have not been set up
|
protected |
Vector of pointers to element in the upper layer.
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::nupper(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::upper_layer_element_pt().
|
protected |
Index at which the cosine part of the perturbation to the nodal y-position is stored in the bulk element. The mesh needs to know this so that the value of the nodal position perturbation can be updated during the "perturbed spine node update" procedure
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::set_perturbation_to_nodal_positions_indices(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::spine_node_update_lower(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::spine_node_update_upper().
|
protected |
Index at which the sine part of the perturbation to the nodal y-position is stored in the bulk element. The mesh needs to know this so that the value of the nodal position perturbation can be updated during the "perturbed spine node update" procedure
Referenced by oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::set_perturbation_to_nodal_positions_indices(), oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::spine_node_update_lower(), and oomph::TwoLayerPerturbedSpineMesh< ELEMENT >::spine_node_update_upper().