47 MeshChecker::assert_geometric_element<QElementGeometricBase, ELEMENT>(2);
53 Element_pt.resize(Nx * Ny);
55 Element_pt[0] =
new ELEMENT;
58 Np =
dynamic_cast<ELEMENT*
>(finite_element_pt(0))->
nnode_1d();
91 for (
unsigned l2 = 1;
l2 < Np;
l2++)
105 if ((Nx == 1) && (
l2 == (Np - 1)))
115 for (
unsigned l1 = 1;
l1 < Np;
l1++)
129 if ((Ny == 1) && (
l1 == (Np - 1)))
138 for (
unsigned l2 = 1;
l2 < Np;
l2++)
142 if (((Nx == 1) && (
l2 == (Np - 1))) || ((Ny == 1) && (
l1 == (Np - 1))))
159 if ((Nx == 1) &&
l2 == (Np - 1))
164 if ((Ny == 1) && (
l1 == (Np - 1)))
177 for (
unsigned j = 1;
j < (Nx - 1);
j++)
180 Element_pt[
j] =
new ELEMENT;
184 finite_element_pt(
j - 1)->node_pt((Np - 1));
186 for (
unsigned l2 = 1;
l2 < Np;
l2++)
204 for (
unsigned l1 = 1;
l1 < Np;
l1++)
208 finite_element_pt(
j - 1)->node_pt(
l1 * Np + (Np - 1));
210 for (
unsigned l2 = 1;
l2 < Np;
l2++)
214 if ((Ny == 1) && (
l1 == (Np - 1)))
231 if ((Ny == 1) && (
l1 == (Np - 1)))
248 Element_pt[Nx - 1] =
new ELEMENT;
251 finite_element_pt(Nx - 1)->
node_pt(0) =
252 finite_element_pt(Nx - 2)->node_pt(Np - 1);
255 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
259 finite_element_pt(Nx - 1)->construct_boundary_node(
l2,
278 if (Xperiodic ==
true)
295 for (
unsigned l1 = 1;
l1 < Np;
l1++)
298 finite_element_pt(Nx - 1)->
node_pt(
l1 * Np) =
299 finite_element_pt(Nx - 2)->node_pt(
l1 * Np + (Np - 1));
302 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
306 if ((Ny == 1) && (
l1 == (Np - 1)))
309 finite_element_pt(Nx - 1)->construct_boundary_node(
324 if ((Ny == 1) && (
l1 == (Np - 1)))
335 finite_element_pt(Nx - 1)->construct_boundary_node(
l1 * Np + (Np - 1),
340 if (Xperiodic ==
true)
354 if ((Ny == 1) && (
l1 == (Np - 1)))
367 for (
unsigned i = 1;
i < (Ny - 1);
i++)
371 Element_pt[Nx *
i] =
new ELEMENT;
374 for (
unsigned l2 = 0;
l2 < Np;
l2++)
377 finite_element_pt(Nx * (
i - 1))->node_pt((Np - 1) * Np +
l2);
381 for (
unsigned l1 = 1;
l1 < Np;
l1++)
386 finite_element_pt(Nx *
i)->construct_boundary_node(
l1 * Np,
400 for (
unsigned l2 = 1;
l2 < Np;
l2++)
404 if ((Nx == 1) && (
l2 == (Np - 1)))
407 finite_element_pt(Nx *
i)->construct_boundary_node(
422 if ((Nx == 1) && (
l2 == (Np - 1)))
433 for (
unsigned j = 1;
j < (Nx - 1);
j++)
436 Element_pt[Nx *
i +
j] =
new ELEMENT;
438 for (
unsigned l2 = 0;
l2 < Np;
l2++)
441 finite_element_pt(Nx * (
i - 1) +
j)->node_pt((Np - 1) * Np +
l2);
444 for (
unsigned l1 = 1;
l1 < Np;
l1++)
447 finite_element_pt(Nx *
i +
j)->node_pt(
l1 * Np) =
448 finite_element_pt(Nx *
i + (
j - 1))->node_pt(
l1 * Np + (Np - 1));
450 for (
unsigned l2 = 1;
l2 < Np;
l2++)
454 finite_element_pt(Nx *
i +
j)
472 Element_pt[Nx *
i + Nx - 1] =
new ELEMENT;
474 for (
unsigned l2 = 0;
l2 < Np;
l2++)
476 finite_element_pt(Nx *
i + Nx - 1)->
node_pt(
l2) =
477 finite_element_pt(Nx * (
i - 1) + Nx - 1)
478 ->node_pt((Np - 1) * Np +
l2);
481 for (
unsigned l1 = 1;
l1 < Np;
l1++)
484 finite_element_pt(Nx *
i + Nx - 1)->node_pt(
l1 * Np) =
485 finite_element_pt(Nx *
i + Nx - 2)->node_pt(
l1 * Np + (Np - 1));
488 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
492 finite_element_pt(Nx *
i + Nx - 1)
505 finite_element_pt(Nx *
i + Nx - 1)
510 if (Xperiodic ==
true)
537 Element_pt[Nx * (Ny - 1)] =
new ELEMENT;
539 for (
unsigned l2 = 0;
l2 < Np;
l2++)
541 finite_element_pt(Nx * (Ny - 1))->
node_pt(
l2) =
542 finite_element_pt(Nx * (Ny - 2))->node_pt((Np - 1) * Np +
l2);
547 for (
unsigned l1 = 1;
l1 < (Np - 1);
l1++)
551 finite_element_pt(Nx * (Ny - 1))
565 for (
unsigned l2 = 1;
l2 < Np;
l2++)
568 if ((Nx == 1) && (
l2 == Np - 1))
571 finite_element_pt(Nx * (Ny - 1))
577 finite_element_pt(Nx * (Ny - 1))
586 if ((Nx == 1) && (
l2 == Np - 1))
601 finite_element_pt(Nx * (Ny - 1))
616 for (
unsigned l2 = 1;
l2 < Np;
l2++)
620 finite_element_pt(Nx * (Ny - 1))
631 if ((Nx == 1) && (
l2 == Np - 1))
641 for (
unsigned j = 1;
j < (Nx - 1);
j++)
644 Element_pt[Nx * (Ny - 1) +
j] =
new ELEMENT;
646 for (
unsigned l2 = 0;
l2 < Np;
l2++)
648 finite_element_pt(Nx * (Ny - 1) +
j)->
node_pt(
l2) =
649 finite_element_pt(Nx * (Ny - 2) +
j)->node_pt((Np - 1) * Np +
l2);
653 for (
unsigned l1 = 1;
l1 < (Np - 1);
l1++)
656 finite_element_pt(Nx * (Ny - 1) +
j)->node_pt(Np *
l1) =
657 finite_element_pt(Nx * (Ny - 1) + (
j - 1))
658 ->node_pt(Np *
l1 + (Np - 1));
661 for (
unsigned l2 = 1;
l2 < Np;
l2++)
665 finite_element_pt(Nx * (Ny - 1) +
j)
679 finite_element_pt(Nx * (Ny - 1) +
j)->
node_pt(Np * (Np - 1)) =
680 finite_element_pt(Nx * (Ny - 1) + (
j - 1))
681 ->node_pt(Np * (Np - 1) + (Np - 1));
683 for (
unsigned l2 = 1;
l2 < Np;
l2++)
687 finite_element_pt(Nx * (Ny - 1) +
j)
707 Element_pt[Nx * (Ny - 1) + Nx - 1] =
new ELEMENT;
709 for (
unsigned l2 = 0;
l2 < Np;
l2++)
711 finite_element_pt(Nx * (Ny - 1) + Nx - 1)->
node_pt(
l2) =
712 finite_element_pt(Nx * (Ny - 2) + Nx - 1)
713 ->node_pt((Np - 1) * Np +
l2);
717 for (
unsigned l1 = 1;
l1 < (Np - 1);
l1++)
720 finite_element_pt(Nx * (Ny - 1) + Nx - 1)->node_pt(Np *
l1) =
721 finite_element_pt(Nx * (Ny - 1) + Nx - 2)
722 ->node_pt(Np *
l1 + (Np - 1));
725 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
729 finite_element_pt(Nx * (Ny - 1) + Nx - 1)
734 x_spacing_function(Nx - 1,
l2, Ny - 1,
l1);
736 y_spacing_function(Nx - 1,
l2, Ny - 1,
l1);
745 finite_element_pt(Nx * (Ny - 1) + Nx - 1)
749 if (Xperiodic ==
true)
752 finite_element_pt(Nx * (Ny - 1))->
node_pt(Np *
l1));
757 x_spacing_function(Nx - 1, Np - 1, Ny - 1,
l1);
759 y_spacing_function(Nx - 1, Np - 1, Ny - 1,
l1);
771 finite_element_pt(Nx * (Ny - 1) + Nx - 1)->
node_pt(Np * (Np - 1)) =
772 finite_element_pt(Nx * (Ny - 1) + Nx - 2)
773 ->node_pt(Np * (Np - 1) + (Np - 1));
776 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
780 finite_element_pt(Nx * (Ny - 1) + Nx - 1)
785 x_spacing_function(Nx - 1,
l2, Ny - 1, Np - 1);
787 y_spacing_function(Nx - 1,
l2, Ny - 1, Np - 1);
799 ->construct_boundary_node(
803 if (Xperiodic ==
true)
806 finite_element_pt(Nx * (Ny - 1))->
node_pt(Np * (Np - 1)));
811 x_spacing_function(Nx - 1, Np - 1, Ny - 1, Np - 1);
813 y_spacing_function(Nx - 1, Np - 1, Ny - 1, Np - 1);
826 setup_boundary_element_info();