46 MeshChecker::assert_geometric_element<QElementGeometricBase, ELEMENT>(2);
52 Element_pt.resize(Nx * Ny);
54 Element_pt[0] =
new ELEMENT;
57 Np =
dynamic_cast<ELEMENT*
>(finite_element_pt(0))->
nnode_1d();
90 for (
unsigned l2 = 1;
l2 < Np;
l2++)
104 if ((Nx == 1) && (
l2 == (Np - 1)))
114 for (
unsigned l1 = 1;
l1 < Np;
l1++)
128 if ((Ny == 1) && (
l1 == (Np - 1)))
137 for (
unsigned l2 = 1;
l2 < Np;
l2++)
141 if (((Nx == 1) && (
l2 == (Np - 1))) || ((Ny == 1) && (
l1 == (Np - 1))))
158 if ((Nx == 1) &&
l2 == (Np - 1))
163 if ((Ny == 1) && (
l1 == (Np - 1)))
176 for (
unsigned j = 1;
j < (Nx - 1);
j++)
179 Element_pt[
j] =
new ELEMENT;
183 finite_element_pt(
j - 1)->node_pt((Np - 1));
185 for (
unsigned l2 = 1;
l2 < Np;
l2++)
203 for (
unsigned l1 = 1;
l1 < Np;
l1++)
207 finite_element_pt(
j - 1)->node_pt(
l1 * Np + (Np - 1));
209 for (
unsigned l2 = 1;
l2 < Np;
l2++)
213 if ((Ny == 1) && (
l1 == (Np - 1)))
230 if ((Ny == 1) && (
l1 == (Np - 1)))
247 Element_pt[Nx - 1] =
new ELEMENT;
250 finite_element_pt(Nx - 1)->
node_pt(0) =
251 finite_element_pt(Nx - 2)->node_pt(Np - 1);
254 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
258 finite_element_pt(Nx - 1)->construct_boundary_node(
l2,
277 if (Xperiodic ==
true)
294 for (
unsigned l1 = 1;
l1 < Np;
l1++)
297 finite_element_pt(Nx - 1)->
node_pt(
l1 * Np) =
298 finite_element_pt(Nx - 2)->node_pt(
l1 * Np + (Np - 1));
301 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
305 if ((Ny == 1) && (
l1 == (Np - 1)))
308 finite_element_pt(Nx - 1)->construct_boundary_node(
323 if ((Ny == 1) && (
l1 == (Np - 1)))
334 finite_element_pt(Nx - 1)->construct_boundary_node(
l1 * Np + (Np - 1),
339 if (Xperiodic ==
true)
353 if ((Ny == 1) && (
l1 == (Np - 1)))
366 for (
unsigned i = 1;
i < (Ny - 1);
i++)
370 Element_pt[Nx *
i] =
new ELEMENT;
373 for (
unsigned l2 = 0;
l2 < Np;
l2++)
376 finite_element_pt(Nx * (
i - 1))->node_pt((Np - 1) * Np +
l2);
380 for (
unsigned l1 = 1;
l1 < Np;
l1++)
385 finite_element_pt(Nx *
i)->construct_boundary_node(
l1 * Np,
399 for (
unsigned l2 = 1;
l2 < Np;
l2++)
403 if ((Nx == 1) && (
l2 == (Np - 1)))
406 finite_element_pt(Nx *
i)->construct_boundary_node(
421 if ((Nx == 1) && (
l2 == (Np - 1)))
432 for (
unsigned j = 1;
j < (Nx - 1);
j++)
435 Element_pt[Nx *
i +
j] =
new ELEMENT;
437 for (
unsigned l2 = 0;
l2 < Np;
l2++)
440 finite_element_pt(Nx * (
i - 1) +
j)->node_pt((Np - 1) * Np +
l2);
443 for (
unsigned l1 = 1;
l1 < Np;
l1++)
446 finite_element_pt(Nx *
i +
j)->node_pt(
l1 * Np) =
447 finite_element_pt(Nx *
i + (
j - 1))->node_pt(
l1 * Np + (Np - 1));
449 for (
unsigned l2 = 1;
l2 < Np;
l2++)
453 finite_element_pt(Nx *
i +
j)
471 Element_pt[Nx *
i + Nx - 1] =
new ELEMENT;
473 for (
unsigned l2 = 0;
l2 < Np;
l2++)
475 finite_element_pt(Nx *
i + Nx - 1)->
node_pt(
l2) =
476 finite_element_pt(Nx * (
i - 1) + Nx - 1)
477 ->node_pt((Np - 1) * Np +
l2);
480 for (
unsigned l1 = 1;
l1 < Np;
l1++)
483 finite_element_pt(Nx *
i + Nx - 1)->node_pt(
l1 * Np) =
484 finite_element_pt(Nx *
i + Nx - 2)->node_pt(
l1 * Np + (Np - 1));
487 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
491 finite_element_pt(Nx *
i + Nx - 1)
504 finite_element_pt(Nx *
i + Nx - 1)
509 if (Xperiodic ==
true)
536 Element_pt[Nx * (Ny - 1)] =
new ELEMENT;
538 for (
unsigned l2 = 0;
l2 < Np;
l2++)
540 finite_element_pt(Nx * (Ny - 1))->
node_pt(
l2) =
541 finite_element_pt(Nx * (Ny - 2))->node_pt((Np - 1) * Np +
l2);
546 for (
unsigned l1 = 1;
l1 < (Np - 1);
l1++)
550 finite_element_pt(Nx * (Ny - 1))
564 for (
unsigned l2 = 1;
l2 < Np;
l2++)
567 if ((Nx == 1) && (
l2 == Np - 1))
570 finite_element_pt(Nx * (Ny - 1))
576 finite_element_pt(Nx * (Ny - 1))
585 if ((Nx == 1) && (
l2 == Np - 1))
600 finite_element_pt(Nx * (Ny - 1))
615 for (
unsigned l2 = 1;
l2 < Np;
l2++)
619 finite_element_pt(Nx * (Ny - 1))
630 if ((Nx == 1) && (
l2 == Np - 1))
640 for (
unsigned j = 1;
j < (Nx - 1);
j++)
643 Element_pt[Nx * (Ny - 1) +
j] =
new ELEMENT;
645 for (
unsigned l2 = 0;
l2 < Np;
l2++)
647 finite_element_pt(Nx * (Ny - 1) +
j)->
node_pt(
l2) =
648 finite_element_pt(Nx * (Ny - 2) +
j)->node_pt((Np - 1) * Np +
l2);
652 for (
unsigned l1 = 1;
l1 < (Np - 1);
l1++)
655 finite_element_pt(Nx * (Ny - 1) +
j)->node_pt(Np *
l1) =
656 finite_element_pt(Nx * (Ny - 1) + (
j - 1))
657 ->node_pt(Np *
l1 + (Np - 1));
660 for (
unsigned l2 = 1;
l2 < Np;
l2++)
664 finite_element_pt(Nx * (Ny - 1) +
j)
678 finite_element_pt(Nx * (Ny - 1) +
j)->
node_pt(Np * (Np - 1)) =
679 finite_element_pt(Nx * (Ny - 1) + (
j - 1))
680 ->node_pt(Np * (Np - 1) + (Np - 1));
682 for (
unsigned l2 = 1;
l2 < Np;
l2++)
686 finite_element_pt(Nx * (Ny - 1) +
j)
706 Element_pt[Nx * (Ny - 1) + Nx - 1] =
new ELEMENT;
708 for (
unsigned l2 = 0;
l2 < Np;
l2++)
710 finite_element_pt(Nx * (Ny - 1) + Nx - 1)->
node_pt(
l2) =
711 finite_element_pt(Nx * (Ny - 2) + Nx - 1)
712 ->node_pt((Np - 1) * Np +
l2);
716 for (
unsigned l1 = 1;
l1 < (Np - 1);
l1++)
719 finite_element_pt(Nx * (Ny - 1) + Nx - 1)->node_pt(Np *
l1) =
720 finite_element_pt(Nx * (Ny - 1) + Nx - 2)
721 ->node_pt(Np *
l1 + (Np - 1));
724 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
728 finite_element_pt(Nx * (Ny - 1) + Nx - 1)
733 x_spacing_function(Nx - 1,
l2, Ny - 1,
l1);
735 y_spacing_function(Nx - 1,
l2, Ny - 1,
l1);
744 finite_element_pt(Nx * (Ny - 1) + Nx - 1)
748 if (Xperiodic ==
true)
751 finite_element_pt(Nx * (Ny - 1))->
node_pt(Np *
l1));
756 x_spacing_function(Nx - 1, Np - 1, Ny - 1,
l1);
758 y_spacing_function(Nx - 1, Np - 1, Ny - 1,
l1);
770 finite_element_pt(Nx * (Ny - 1) + Nx - 1)->
node_pt(Np * (Np - 1)) =
771 finite_element_pt(Nx * (Ny - 1) + Nx - 2)
772 ->node_pt(Np * (Np - 1) + (Np - 1));
775 for (
unsigned l2 = 1;
l2 < (Np - 1);
l2++)
779 finite_element_pt(Nx * (Ny - 1) + Nx - 1)
784 x_spacing_function(Nx - 1,
l2, Ny - 1, Np - 1);
786 y_spacing_function(Nx - 1,
l2, Ny - 1, Np - 1);
798 ->construct_boundary_node(
802 if (Xperiodic ==
true)
805 finite_element_pt(Nx * (Ny - 1))->
node_pt(Np * (Np - 1)));
810 x_spacing_function(Nx - 1, Np - 1, Ny - 1, Np - 1);
812 y_spacing_function(Nx - 1, Np - 1, Ny - 1, Np - 1);
825 setup_boundary_element_info();