278 unsigned long n_lower = this->Nx * Ny1;
279 unsigned long n_upper = this->Nx * Ny2;
281 Lower_layer_element_pt.reserve(
n_lower);
287 Upper_layer_element_pt.reserve(
n_upper);
294 Interface_lower_boundary_element_pt.resize(this->Nx);
295 Interface_upper_boundary_element_pt.resize(this->Nx);
299 for (
unsigned e = 0;
e < this->Nx;
e++)
301 Interface_lower_boundary_element_pt[
e] =
304 Interface_upper_boundary_element_pt[
e] =
337 nod_pt->remove_from_boundary(3);
383 nod_pt->remove_from_boundary(2);
456 for (
unsigned e = 0;
e < this->Nx;
e++)
504 nod_pt->spine_mesh_pt() =
this;
506 nod_pt->node_update_fct_id() = 0;
510 for (
unsigned long i = 0;
i < Ny1;
i++)
520 nod_pt->fraction() = (
nod_pt->x(1) - this->Ymin) / (H1);
522 nod_pt->spine_mesh_pt() =
this;
524 nod_pt->node_update_fct_id() = 0;
529 for (
unsigned long i = 0;
i < Ny2;
i++)
540 nod_pt->fraction() = (
nod_pt->x(1) - (this->Ymin + H1)) / (H2);
542 nod_pt->spine_mesh_pt() =
this;
544 nod_pt->node_update_fct_id() = 1;
553 for (
unsigned long j = 0;
j < this->Nx;
j++)
560 if ((this->Xperiodic) && (
j == this->Nx - 1))
n_pmax =
n_p - 1;
576 nod_pt->spine_mesh_pt() =
this;
578 nod_pt->node_update_fct_id() = 0;
582 for (
unsigned long i = 0;
i < Ny1;
i++)
595 nod_pt->spine_mesh_pt() =
this;
597 nod_pt->node_update_fct_id() = 0;
602 for (
unsigned long i = 0;
i < Ny2;
i++)
614 nod_pt->fraction() = (
nod_pt->x(1) - (this->Ymin + H1)) / H2;
616 nod_pt->spine_mesh_pt() =
this;
618 nod_pt->node_update_fct_id() = 1;
642 nod_pt->node_update_fct_id() =
646 for (
unsigned i = 0;
i < (Ny1 + Ny2);
i++)
661 nod_pt->node_update_fct_id() =
695 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 ...