606 MeshChecker::assert_geometric_element<QHermiteElementBase, ELEMENT>(2);
612 Element_pt.resize(Nelement[0] * Nelement[1]);
615 Element_pt[0] =
new ELEMENT;
616 finite_element_pt(0)->set_macro_elem_pt(Domain_pt->macro_element_pt(0));
652 set_position_of_boundary_node(
668 if (Nelement[0] == 1)
674 set_position_of_boundary_node(
690 if (Nelement[1] == 1)
696 set_position_of_boundary_node(
709 if (Nelement[0] == 1)
714 if (Nelement[1] == 1)
720 if (Nelement[0] == 1 || Nelement[1] == 1)
723 set_position_of_boundary_node(
743 for (
unsigned j = 1;
j < (Nelement[0] - 1);
j++)
746 Element_pt[
j] =
new ELEMENT;
753 finite_element_pt(
j)->
node_pt(0) = finite_element_pt(
j - 1)->node_pt(1);
765 set_position_of_boundary_node(
774 finite_element_pt(
j)->
node_pt(2) = finite_element_pt(
j - 1)->node_pt(3);
783 if (Nelement[0] == 1)
789 if (Nelement[0] == 1)
790 set_position_of_boundary_node(
807 Element_pt[Nelement[0] - 1] =
new ELEMENT;
808 finite_element_pt(Nelement[0] - 1)
814 finite_element_pt(Nelement[0] - 1)->
node_pt(0) =
815 finite_element_pt(Nelement[0] - 2)->node_pt(1);
821 if (Xperiodic ==
true)
824 finite_element_pt(Nelement[0] - 1)->node_pt(1) =
825 finite_element_pt(0)->node_pt(0);
840 set_position_of_boundary_node(
844 if (Xperiodic ==
false)
852 finite_element_pt(Nelement[0] - 1)->
node_pt(2) =
853 finite_element_pt(Nelement[0] - 2)->node_pt(3);
856 if (Nelement[1] == 1)
862 if (Nelement[1] == 1)
863 set_position_of_boundary_node(
867 finite_element_pt(Nelement[0] - 2)->
node_pt(3)));
873 if (Xperiodic ==
true)
876 finite_element_pt(Nelement[0] - 1)->node_pt(3) =
877 finite_element_pt(0)->node_pt(2);
888 if (Nelement[1] == 1)
897 set_position_of_boundary_node(
901 if (Xperiodic ==
false)
914 for (
unsigned i = 1;
i < (Nelement[1] - 1);
i++)
921 Element_pt[Nelement[0] *
i] =
new ELEMENT;
922 finite_element_pt(Nelement[0] *
i)
926 for (
unsigned l = 0;
l < 2;
l++)
928 finite_element_pt(Nelement[0] *
i)->
node_pt(
l) =
929 finite_element_pt(Nelement[0] * (
i - 1))->node_pt(2 +
l);
942 set_position_of_boundary_node(
951 if (Nelement[0] == 1)
964 if (Nelement[0] == 1)
970 if (Nelement[0] == 1)
971 set_position_of_boundary_node(
984 for (
unsigned j = 1;
j < (Nelement[0] - 1);
j++)
987 Element_pt[Nelement[0] *
i +
j] =
new ELEMENT;
988 finite_element_pt(Nelement[0] *
i +
j)
994 for (
unsigned l = 0;
l < 2;
l++)
996 finite_element_pt(Nelement[0] *
i +
j)->
node_pt(
l) =
997 finite_element_pt(Nelement[0] * (
i - 1) +
j)->node_pt(2 +
l);
1003 finite_element_pt(Nelement[0] *
i +
j)->node_pt(2) =
1004 finite_element_pt(Nelement[0] *
i + (
j - 1))->node_pt(3);
1025 if (Nelement[0] > 1)
1028 Element_pt[Nelement[0] *
i + Nelement[0] - 1] =
new ELEMENT;
1029 finite_element_pt(Nelement[0] *
i + Nelement[0] - 1)
1035 for (
unsigned l = 0;
l < 2;
l++)
1037 finite_element_pt(Nelement[0] *
i + Nelement[0] - 1)->
node_pt(
l) =
1038 finite_element_pt(Nelement[0] * (
i - 1) + Nelement[0] - 1)
1045 finite_element_pt(Nelement[0] *
i + Nelement[0] - 1)->node_pt(2) =
1046 finite_element_pt(Nelement[0] *
i + Nelement[0] - 2)->node_pt(3);
1052 if (Xperiodic ==
true)
1055 finite_element_pt(Nelement[0] *
i + Nelement[0] - 1)->node_pt(3) =
1056 finite_element_pt(Nelement[0] *
i)->node_pt(2);
1062 finite_element_pt(Nelement[0] *
i + Nelement[0] - 1)
1070 set_position_of_boundary_node(
1087 if (Nelement[1] > 1)
1093 Element_pt[Nelement[0] * (Nelement[1] - 1)] =
new ELEMENT;
1094 finite_element_pt(Nelement[0] * (Nelement[1] - 1))
1100 for (
unsigned l = 0;
l < 2;
l++)
1102 finite_element_pt(Nelement[0] * (Nelement[1] - 1))->
node_pt(
l) =
1103 finite_element_pt(Nelement[0] * (Nelement[1] - 2))->node_pt(2 +
l);
1117 set_position_of_boundary_node(
1133 set_position_of_boundary_node(
1145 for (
unsigned j = 1;
j < (Nelement[0] - 1);
j++)
1148 Element_pt[Nelement[0] * (Nelement[1] - 1) +
j] =
new ELEMENT;
1149 finite_element_pt(Nelement[0] * (Nelement[1] - 1) +
j)
1155 for (
unsigned l = 0;
l < 2;
l++)
1157 finite_element_pt(Nelement[0] * (Nelement[1] - 1) +
j)->
node_pt(
l) =
1158 finite_element_pt(Nelement[0] * (Nelement[1] - 2) +
j)
1165 finite_element_pt(Nelement[0] * (Nelement[1] - 1) +
j)->node_pt(2) =
1166 finite_element_pt(Nelement[0] * (Nelement[1] - 1) + (
j - 1))
1173 finite_element_pt(Nelement[0] * (Nelement[1] - 1) +
j)
1180 set_position_of_boundary_node(
1195 if (Nelement[0] > 1)
1198 Element_pt[Nelement[0] * (Nelement[1] - 1) + Nelement[0] - 1] =
1200 finite_element_pt(Nelement[0] * (Nelement[1] - 1) + Nelement[0] - 1)
1206 for (
unsigned l = 0;
l < 2;
l++)
1208 finite_element_pt(Nelement[0] * (Nelement[1] - 1) + Nelement[0] - 1)
1210 finite_element_pt(Nelement[0] * (Nelement[1] - 2) + Nelement[0] - 1)
1217 finite_element_pt(Nelement[0] * (Nelement[1] - 1) + Nelement[0] - 1)
1219 finite_element_pt(Nelement[0] * (Nelement[1] - 1) + Nelement[0] - 2)
1226 if (Xperiodic ==
true)
1229 finite_element_pt(Nelement[0] * (Nelement[1] - 1) + Nelement[0] - 1)
1231 finite_element_pt(Nelement[0] * (Nelement[1] - 1))->node_pt(2);
1237 finite_element_pt(Nelement[0] * (Nelement[1] - 1) + Nelement[0] - 1)
1246 set_position_of_boundary_node(
1257 setup_boundary_element_info();