277 unsigned long n_lower = this->Nx * Ny1;
278 unsigned long n_upper = this->Nx * Ny2;
280 Lower_layer_element_pt.reserve(
n_lower);
286 Upper_layer_element_pt.reserve(
n_upper);
293 Interface_lower_boundary_element_pt.resize(this->Nx);
294 Interface_upper_boundary_element_pt.resize(this->Nx);
298 for (
unsigned e = 0;
e < this->Nx;
e++)
300 Interface_lower_boundary_element_pt[
e] =
303 Interface_upper_boundary_element_pt[
e] =
336 nod_pt->remove_from_boundary(3);
382 nod_pt->remove_from_boundary(2);
454 for (
unsigned e = 0;
e < this->Nx;
e++)
501 nod_pt->spine_mesh_pt() =
this;
503 nod_pt->node_update_fct_id() = 0;
507 for (
unsigned long i = 0;
i < Ny1;
i++)
517 nod_pt->fraction() = (
nod_pt->x(1) - this->Ymin) / (H1);
519 nod_pt->spine_mesh_pt() =
this;
521 nod_pt->node_update_fct_id() = 0;
526 for (
unsigned long i = 0;
i < Ny2;
i++)
537 nod_pt->fraction() = (
nod_pt->x(1) - (this->Ymin + H1)) / (H2);
539 nod_pt->spine_mesh_pt() =
this;
541 nod_pt->node_update_fct_id() = 1;
549 for (
unsigned long j = 0;
j < this->Nx;
j++)
556 if ((this->Xperiodic) && (
j == this->Nx - 1))
n_pmax =
n_p - 1;
572 nod_pt->spine_mesh_pt() =
this;
574 nod_pt->node_update_fct_id() = 0;
578 for (
unsigned long i = 0;
i < Ny1;
i++)
591 nod_pt->spine_mesh_pt() =
this;
593 nod_pt->node_update_fct_id() = 0;
598 for (
unsigned long i = 0;
i < Ny2;
i++)
610 nod_pt->fraction() = (
nod_pt->x(1) - (this->Ymin + H1)) / H2;
612 nod_pt->spine_mesh_pt() =
this;
614 nod_pt->node_update_fct_id() = 1;
637 nod_pt->node_update_fct_id() =
641 for (
unsigned i = 0;
i < (Ny1 + Ny2);
i++)
656 nod_pt->node_update_fct_id() =
689 this->setup_boundary_element_info();
TwoLayerSpineMesh(const unsigned &nx, const unsigned &ny1, const unsigned &ny2, const double &lx, const double &h1, const double &h2, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass number of elements in x-direction, number of elements in y-direction in bottom and ...