58 MeshChecker::assert_geometric_element<QElementGeometricBase, ELEMENT>(2);
85 unsigned nmacro_element = Domain_pt->nmacro_element();
86 for (
unsigned e = 0;
e < nmacro_element;
e++)
89 Element_pt.push_back(
new ELEMENT);
93 dynamic_cast<ELEMENT*
>(this->finite_element_pt(
e))->
nnode_1d();
103 this->finite_element_pt(
e)->construct_boundary_node(
109 Domain_pt->macro_element_pt(
e)->macro_map(
s,
r);
127 dynamic_cast<ELEMENT*
>(this->finite_element_pt(0))->
nnode_1d();
130 for (
unsigned n = 0;
n <
np;
n++)
134 this->finite_element_pt(0)->node_pt((
np - 1) *
np +
np - 1 -
n);
142 for (
unsigned n = 0;
n <
np;
n++)
146 this->finite_element_pt(1)->node_pt(
np *
n +
np - 1);
154 for (
unsigned n = 0;
n <
np;
n++)
157 this->finite_element_pt(3)->
node_pt(
np * (
np - 1) +
n) =
158 this->finite_element_pt(2)->node_pt(
np *
n +
np - 1);
166 for (
unsigned n = 0;
n <
np;
n++)
169 this->finite_element_pt(4)->
node_pt(
n) =
170 this->finite_element_pt(5)->node_pt(
np * (
np -
n - 1) +
np - 1);
178 for (
unsigned n = 0;
n <
np;
n++)
182 this->finite_element_pt(6)->node_pt(
np *
n +
np - 1);
190 for (
unsigned n = 0;
n <
np;
n++)
194 this->finite_element_pt(0)->node_pt(
n);
202 for (
unsigned n = 0;
n <
np;
n++)
206 this->finite_element_pt(2)->node_pt((
np - 1) *
np +
np - 1 -
n);
214 for (
unsigned n = 0;
n <
np;
n++)
218 this->finite_element_pt(3)->node_pt(
np *
n +
np - 1);
226 for (
unsigned n = 0;
n <
np;
n++)
230 this->finite_element_pt(4)->node_pt(
np *
n +
np - 1);
239 for (
unsigned n = 0;
n <
np;
n++)
242 this->finite_element_pt(10)->
node_pt(
n *
np) =
243 this->finite_element_pt(5)->node_pt(
n);
252 for (
unsigned n = 0;
n <
np;
n++)
255 this->finite_element_pt(11)->
node_pt(
n *
np) =
256 this->finite_element_pt(7)->node_pt(
np *
n +
np - 1);
264 for (
unsigned n = 0;
n <
np;
n++)
267 this->finite_element_pt(12)->
node_pt(
n *
np) =
268 this->finite_element_pt(8)->node_pt(
np *
n +
np - 1);
276 for (
unsigned n = 0;
n <
np;
n++)
279 this->finite_element_pt(13)->
node_pt(
n *
np) =
280 this->finite_element_pt(9)->node_pt(
np *
n +
np - 1);
288 for (
unsigned n = 0;
n <
np;
n++)
291 this->finite_element_pt(14)->
node_pt(
n *
np) =
292 this->finite_element_pt(10)->node_pt(
np *
n +
np - 1);
301 for (
unsigned n = 0;
n <
np;
n++)
304 this->finite_element_pt(8)->
node_pt(
np * (
np - 1) +
n) =
305 this->finite_element_pt(7)->node_pt(
n);
314 for (
unsigned n = 0;
n <
np;
n++)
317 this->finite_element_pt(10)->
node_pt(
np * (
np - 1) +
n) =
318 this->finite_element_pt(9)->node_pt(
n);
327 for (
unsigned n = 0;
n <
np;
n++)
330 this->finite_element_pt(15)->
node_pt(
n *
np) =
331 this->finite_element_pt(11)->node_pt(
np *
n +
np - 1);
339 for (
unsigned n = 0;
n <
np;
n++)
342 this->finite_element_pt(16)->
node_pt(
n *
np) =
343 this->finite_element_pt(12)->node_pt(
np *
n +
np - 1);
351 for (
unsigned n = 0;
n <
np;
n++)
354 this->finite_element_pt(17)->
node_pt(
n *
np) =
355 this->finite_element_pt(13)->node_pt(
np *
n +
np - 1);
363 for (
unsigned n = 0;
n <
np;
n++)
366 this->finite_element_pt(18)->
node_pt(
n *
np) =
367 this->finite_element_pt(14)->node_pt(
np *
n +
np - 1);
376 for (
unsigned n = 0;
n <
np;
n++)
379 this->finite_element_pt(12)->
node_pt(
np * (
np - 1) +
n) =
380 this->finite_element_pt(11)->node_pt(
n);
389 for (
unsigned n = 0;
n <
np;
n++)
392 this->finite_element_pt(14)->
node_pt(
np * (
np - 1) +
n) =
393 this->finite_element_pt(13)->node_pt(
n);
402 for (
unsigned n = 0;
n <
np;
n++)
405 this->finite_element_pt(19)->
node_pt(
np * (
np - 1) +
n) =
406 this->finite_element_pt(15)->node_pt(
np *
n +
np - 1);
415 for (
unsigned n = 0;
n <
np;
n++)
419 this->finite_element_pt(19)->node_pt(
n *
np);
428 for (
unsigned n = 0;
n <
np;
n++)
431 this->finite_element_pt(16)->
node_pt(
np * (
np - 1) +
n) =
432 this->finite_element_pt(15)->node_pt(
n);
441 for (
unsigned n = 0;
n <
np;
n++)
444 this->finite_element_pt(20)->
node_pt(
n) =
445 this->finite_element_pt(18)->node_pt(
np * (
np -
n - 1) +
np - 1);
454 for (
unsigned n = 0;
n <
np;
n++)
457 this->finite_element_pt(20)->
node_pt(
n *
np) =
458 this->finite_element_pt(17)->node_pt(
np *
n +
np - 1);
467 for (
unsigned n = 0;
n <
np;
n++)
470 this->finite_element_pt(18)->
node_pt(
np * (
np - 1) +
n) =
471 this->finite_element_pt(17)->node_pt(
n);
480 for (
unsigned n = 0;
n <
np;
n++)
483 this->finite_element_pt(21)->
node_pt(
n *
np) =
484 this->finite_element_pt(19)->node_pt(
np *
n +
np - 1);
493 for (
unsigned n = 0;
n <
np;
n++)
496 this->finite_element_pt(22)->
node_pt(
np * (
np - 1) +
n) =
497 this->finite_element_pt(21)->node_pt(
n);
506 for (
unsigned n = 0;
n <
np;
n++)
509 this->finite_element_pt(23)->
node_pt(
n *
np) =
510 this->finite_element_pt(20)->node_pt(
np *
n +
np - 1);
519 for (
unsigned n = 0;
n <
np;
n++)
522 this->finite_element_pt(22)->
node_pt(
n) =
523 this->finite_element_pt(23)->node_pt(
np * (
np - 1) +
n);
532 for (
unsigned n = 0;
n <
np;
n++)
535 this->finite_element_pt(24)->
node_pt(
n *
np) =
536 this->finite_element_pt(21)->node_pt(
np *
n +
np - 1);
545 for (
unsigned n = 0;
n <
np;
n++)
548 this->finite_element_pt(25)->
node_pt(
n *
np) =
549 this->finite_element_pt(22)->node_pt(
np *
n +
np - 1);
558 for (
unsigned n = 0;
n <
np;
n++)
561 this->finite_element_pt(26)->
node_pt(
n *
np) =
562 this->finite_element_pt(23)->node_pt(
np *
n +
np - 1);
571 for (
unsigned n = 0;
n <
np;
n++)
574 this->finite_element_pt(25)->
node_pt(
np * (
np - 1) +
n) =
575 this->finite_element_pt(24)->node_pt(
n);
584 for (
unsigned n = 0;
n <
np;
n++)
587 this->finite_element_pt(26)->
node_pt(
np * (
np - 1) +
n) =
588 this->finite_element_pt(25)->node_pt(
n);
597 for (
unsigned n = 0;
n <
np;
n++)
600 this->finite_element_pt(27)->
node_pt(
np * (
np - 1) +
n) =
601 this->finite_element_pt(24)->node_pt(
np *
n +
np - 1);
610 for (
unsigned n = 0;
n <
np;
n++)
613 this->finite_element_pt(27)->
node_pt(
n *
np) =
614 this->finite_element_pt(25)->node_pt(
np *
n +
np - 1);
623 for (
unsigned n = 0;
n <
np;
n++)
626 this->finite_element_pt(27)->
node_pt(
n) =
627 this->finite_element_pt(26)->node_pt(
np * (
np -
n - 1) +
np - 1);
636 for (
unsigned n = 0;
n <
np;
n++)
639 this->finite_element_pt(28)->
node_pt(
n *
np) =
640 this->finite_element_pt(27)->node_pt(
np *
n +
np - 1);
649 for (
unsigned n = 0;
n <
np;
n++)
652 this->finite_element_pt(29)->
node_pt(
n *
np) =
653 this->finite_element_pt(28)->node_pt(
np *
n +
np - 1);
662 for (
unsigned n = 0;
n <
np;
n++)
665 this->finite_element_pt(30)->
node_pt(
n *
np) =
666 this->finite_element_pt(29)->node_pt(
np *
n +
np - 1);
683 this->set_nboundary(8);
685 for (
unsigned n = 0;
n <
np;
n++)
688 this->add_boundary_node(3, this->finite_element_pt(0)->
node_pt(
n *
np));
690 this->add_boundary_node(
691 1, this->finite_element_pt(30)->
node_pt(
n *
np +
np - 1));
694 this->add_boundary_node(0, this->finite_element_pt(6)->
node_pt(
n));
697 this->add_boundary_node(
698 2, this->finite_element_pt(1)->
node_pt(
np * (
np - 1) +
n));
701 this->add_boundary_node(4, this->finite_element_pt(3)->
node_pt(
np *
n));
704 this->add_boundary_node(
705 5, this->finite_element_pt(4)->
node_pt(
np * (
np - 1) +
n));
708 this->add_boundary_node(6, this->finite_element_pt(3)->
node_pt(
n));
711 this->add_boundary_node(7, this->finite_element_pt(22)->
node_pt(
n *
np));
714 for (
unsigned n = 1;
n <
np;
n++)
717 this->add_boundary_node(0, this->finite_element_pt(10)->
node_pt(
n));
720 this->add_boundary_node(
721 2, this->finite_element_pt(7)->
node_pt(
np * (
np - 1) +
n));
724 this->add_boundary_node(
725 5, this->finite_element_pt(9)->
node_pt(
np * (
np - 1) +
n));
728 this->add_boundary_node(6, this->finite_element_pt(8)->
node_pt(
n));
731 for (
unsigned n =
np - 2;
n > 0;
n--)
734 this->add_boundary_node(4, this->finite_element_pt(2)->
node_pt(
n));
737 for (
unsigned n = 1;
n <
np;
n++)
740 this->add_boundary_node(0, this->finite_element_pt(14)->
node_pt(
n));
743 this->add_boundary_node(
744 2, this->finite_element_pt(11)->
node_pt(
np * (
np - 1) +
n));
747 this->add_boundary_node(
748 5, this->finite_element_pt(13)->
node_pt(
np * (
np - 1) +
n));
751 this->add_boundary_node(6, this->finite_element_pt(12)->
node_pt(
n));
754 for (
unsigned n =
np - 1;
n > 0;
n--)
757 this->add_boundary_node(4, this->finite_element_pt(1)->
node_pt(
n));
760 for (
unsigned n = 1;
n <
np;
n++)
763 this->add_boundary_node(0, this->finite_element_pt(18)->
node_pt(
n));
765 this->add_boundary_node(
766 2, this->finite_element_pt(15)->
node_pt(
np * (
np - 1) +
n));
769 this->add_boundary_node(
770 5, this->finite_element_pt(17)->
node_pt(
np * (
np - 1) +
n));
773 this->add_boundary_node(6, this->finite_element_pt(16)->
node_pt(
n));
776 for (
unsigned n =
np - 1;
n > 0;
n--)
779 this->add_boundary_node(
780 4, this->finite_element_pt(0)->
node_pt(
n *
np +
np - 1));
784 for (
unsigned n = 1;
n <
np;
n++)
787 this->add_boundary_node(0, this->finite_element_pt(23)->
node_pt(
n));
789 this->add_boundary_node(
790 2, this->finite_element_pt(21)->
node_pt(
np * (
np - 1) +
n));
793 this->add_boundary_node(
794 4, this->finite_element_pt(6)->
node_pt(
np * (
np - 1) +
n));
797 this->add_boundary_node(
798 5, this->finite_element_pt(20)->
node_pt(
np * (
np - 1) +
n));
801 this->add_boundary_node(6, this->finite_element_pt(19)->
node_pt(
n));
804 for (
unsigned n = 0;
n <
np;
n++)
807 this->add_boundary_node(
808 4, this->finite_element_pt(6)->
node_pt(
np * (
np - 1) +
n));
812 for (
unsigned n = 1;
n <
np;
n++)
815 this->add_boundary_node(0, this->finite_element_pt(26)->
node_pt(
n));
817 this->add_boundary_node(
818 2, this->finite_element_pt(24)->
node_pt(
np * (
np - 1) +
n));
821 this->add_boundary_node(
822 4, this->finite_element_pt(5)->
node_pt(
np * (
np - 1) +
n));
826 for (
unsigned n = 1;
n <
np;
n++)
829 this->add_boundary_node(0, this->finite_element_pt(28)->
node_pt(
n));
831 this->add_boundary_node(
832 2, this->finite_element_pt(28)->
node_pt(
np * (
np - 1) +
n));
835 this->add_boundary_node(4, this->finite_element_pt(4)->
node_pt(
np *
n));
838 for (
unsigned n = 1;
n <
np;
n++)
841 this->add_boundary_node(0, this->finite_element_pt(29)->
node_pt(
n));
843 this->add_boundary_node(
844 2, this->finite_element_pt(29)->
node_pt(
np * (
np - 1) +
n));
847 for (
unsigned n = 1;
n <
np;
n++)
850 this->add_boundary_node(0, this->finite_element_pt(30)->
node_pt(
n));
852 this->add_boundary_node(
853 2, this->finite_element_pt(30)->
node_pt(
np * (
np - 1) +
n));
858 setup_boundary_element_info();
866 unsigned nnode = this->nboundary_node(5);
867 for (
unsigned k = 0;
k <
nnode;
k++)
875 nnode = this->nboundary_node(6);
876 for (
unsigned k = 0;
k <
nnode;
k++)
884 nnode = this->nboundary_node(7);
885 for (
unsigned k = 0;
k <
nnode;
k++)
893 this->Boundary_coordinate_exists[5] =
true;
894 this->Boundary_coordinate_exists[6] =
true;
895 this->Boundary_coordinate_exists[7] =
true;
898 for (
unsigned e = 0;
e < 31;
e++)
900 dynamic_cast<ELEMENT*
>(this->element_pt(
e))