46 MeshChecker::assert_geometric_element<QElementGeometricBase, ELEMENT>(3);
48 if ((Nx == 1) || (Ny == 1) || (Nz == 1))
50 std::ostringstream error_message;
51 error_message <<
"SimpleCubicMesh needs at least two elements in each,\n"
52 <<
"coordinate direction. You have specified \n"
53 <<
"Nx=" << Nx <<
"; Ny=" << Ny <<
"; Nz=" << Nz
63 Element_pt.resize(Nx * Ny * Nz);
69 unsigned n_p =
dynamic_cast<ELEMENT*
>(finite_element_pt(0))->
nnode_1d();
73 (1 + (
n_p - 1) * Nz));
81 double el_length[3] = {(Xmax - Xmin) /
double(Nx),
82 (Ymax - Ymin) /
double(Ny),
83 (Zmax - Zmin) /
double(Nz)};
339 for (
unsigned j = 1;
j < (Nx - 1);
j++)
425 finite_element_pt(
j - 1)->node_pt(
l3 *
n_p *
n_p + (
n_p - 1));
461 finite_element_pt(
j - 1)->node_pt(
l1 *
n_p + (
n_p - 1) +
513 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
579 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
644 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
709 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
769 for (
unsigned i = 1;
i < (Ny - 1);
i++)
918 for (
unsigned j = 1;
j < (Nx - 1);
j++)
1044 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1124 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1204 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1336 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1454 for (
unsigned j = 1;
j < (Nx - 1);
j++)
1467 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1551 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1643 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1650 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1714 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1784 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1792 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1857 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1920 for (
unsigned k = 1;
k < (Nz - 1);
k++)
2069 for (
unsigned j = 1;
j < (Nx - 1);
j++)
2081 finite_element_pt(
j + (
k - 1) * Nx * Ny)
2090 finite_element_pt(
j +
k * Nx * Ny)->node_pt(
l3 *
n_p *
n_p) =
2091 finite_element_pt(
j - 1 +
k * Nx * Ny)
2129 finite_element_pt(
j +
k * Nx * Ny)
2131 finite_element_pt(
j - 1 +
k * Nx * Ny)
2181 finite_element_pt(Nx - 1 + (
k - 1) * Nx * Ny)
2190 finite_element_pt(Nx - 1 +
k * Nx * Ny)->node_pt(
l3 *
n_p *
n_p) =
2191 finite_element_pt(Nx - 2 +
k * Nx * Ny)
2195 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
2256 finite_element_pt(Nx - 1 +
k * Nx * Ny)
2258 finite_element_pt(Nx - 2 +
k * Nx * Ny)
2262 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
2324 for (
unsigned i = 1;
i < (Ny - 1);
i++)
2338 finite_element_pt(Nx *
i + (
k - 1) * Nx * Ny)
2350 finite_element_pt(Nx *
i +
k * Nx * Ny)
2352 finite_element_pt(Nx * (
i - 1) +
k * Nx * Ny)
2424 for (
unsigned j = 1;
j < (Nx - 1);
j++)
2435 finite_element_pt(Nx *
i +
j +
k * Nx * Ny)
2437 finite_element_pt(Nx *
i +
j + (
k - 1) * Nx * Ny)
2450 finite_element_pt(Nx *
i +
j +
k * Nx * Ny)
2452 finite_element_pt(Nx * (
i - 1) +
j +
k * Nx * Ny)
2459 finite_element_pt(Nx *
i +
j +
k * Nx * Ny)
2461 finite_element_pt(Nx *
i + (
j - 1) +
k * Nx * Ny)
2509 finite_element_pt(Nx *
i + Nx - 1 +
k * Nx * Ny)
2511 finite_element_pt(Nx *
i + Nx - 1 + (
k - 1) * Nx * Ny)
2522 finite_element_pt(Nx *
i + Nx - 1 +
k * Nx * Ny)
2524 finite_element_pt(Nx * (
i - 1) + Nx - 1 +
k * Nx * Ny)
2531 finite_element_pt(Nx *
i + Nx - 1 +
k * Nx * Ny)
2533 finite_element_pt(Nx *
i + Nx - 2 +
k * Nx * Ny)
2537 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
2618 finite_element_pt(Nx * (Ny - 1) +
k * Nx * Ny)
2620 finite_element_pt(Nx * (Ny - 1) + (
k - 1) * Nx * Ny)
2631 finite_element_pt(Nx * (Ny - 1) +
k * Nx * Ny)
2633 finite_element_pt(Nx * (Ny - 2) +
k * Nx * Ny)
2639 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
2760 for (
unsigned j = 1;
j < (Nx - 1);
j++)
2771 finite_element_pt(Nx * (Ny - 1) +
j +
k * Nx * Ny)
2773 finite_element_pt(Nx * (Ny - 1) +
j + (
k - 1) * Nx * Ny)
2785 finite_element_pt(Nx * (Ny - 1) +
j +
k * Nx * Ny)
2787 finite_element_pt(Nx * (Ny - 2) +
j +
k * Nx * Ny)
2792 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
2795 finite_element_pt(Nx * (Ny - 1) +
j +
k * Nx * Ny)
2797 finite_element_pt(Nx * (Ny - 1) + (
j - 1) +
k * Nx * Ny)
2836 finite_element_pt(Nx * (Ny - 1) +
j +
k * Nx * Ny)
2838 finite_element_pt(Nx * (Ny - 1) + (
j - 1) +
k * Nx * Ny)
2886 finite_element_pt(Nx * (Ny - 1) + Nx - 1 +
k * Nx * Ny)
2888 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (
k - 1) * Nx * Ny)
2900 finite_element_pt(Nx * (Ny - 1) + Nx - 1 +
k * Nx * Ny)
2902 finite_element_pt(Nx * (Ny - 2) + Nx - 1 +
k * Nx * Ny)
2907 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
2910 finite_element_pt(Nx * (Ny - 1) + Nx - 1 +
k * Nx * Ny)
2912 finite_element_pt(Nx * (Ny - 1) + Nx - 2 +
k * Nx * Ny)
2916 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
2976 finite_element_pt(Nx * (Ny - 1) + Nx - 1 +
k * Nx * Ny)
2978 finite_element_pt(Nx * (Ny - 1) + Nx - 2 +
k * Nx * Ny)
2982 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3060 finite_element_pt((Nz - 2) * Nx * Ny)
3067 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3316 for (
unsigned j = 1;
j < (Nx - 1);
j++)
3328 finite_element_pt(
j + (Nz - 2) * Nx * Ny)
3334 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3337 finite_element_pt(
j + (Nz - 1) * Nx * Ny)->node_pt(
l3 *
n_p *
n_p) =
3338 finite_element_pt(
j - 1 + (Nz - 1) * Nx * Ny)
3375 finite_element_pt(
j + (Nz - 1) * Nx * Ny)
3377 finite_element_pt(
j - 1 + (Nz - 1) * Nx * Ny)
3416 finite_element_pt(
j + (Nz - 1) * Nx * Ny)
3418 finite_element_pt(
j - 1 + (Nz - 1) * Nx * Ny)
3455 finite_element_pt(
j + (Nz - 1) * Nx * Ny)
3457 finite_element_pt(
j - 1 + (Nz - 1) * Nx * Ny)
3504 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)->
node_pt(
l2 +
n_p *
l1) =
3505 finite_element_pt(Nx - 1 + (Nz - 2) * Nx * Ny)
3511 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3514 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)->node_pt(
l3 *
n_p *
n_p) =
3515 finite_element_pt(Nx - 2 + (Nz - 1) * Nx * Ny)
3519 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3582 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)
3584 finite_element_pt(Nx - 2 + (Nz - 1) * Nx * Ny)
3588 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3645 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)
3647 finite_element_pt(Nx - 2 + (Nz - 1) * Nx * Ny)
3651 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3715 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)
3717 finite_element_pt(Nx - 2 + (Nz - 1) * Nx * Ny)
3721 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3783 for (
unsigned i = 1;
i < (Ny - 1);
i++)
3796 finite_element_pt(Nx *
i + (Nz - 1) * Nx * Ny)
3798 finite_element_pt(Nx *
i + (Nz - 2) * Nx * Ny)
3805 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3810 finite_element_pt(Nx *
i + (Nz - 1) * Nx * Ny)
3812 finite_element_pt(Nx * (
i - 1) + (Nz - 1) * Nx * Ny)
3886 finite_element_pt(Nx *
i + (Nz - 1) * Nx * Ny)
3888 finite_element_pt(Nx * (
i - 1) + (Nz - 1) * Nx * Ny)
3956 for (
unsigned j = 1;
j < (Nx - 1);
j++)
3967 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
3969 finite_element_pt(Nx *
i +
j + (Nz - 2) * Nx * Ny)
3976 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3982 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
3984 finite_element_pt(Nx * (
i - 1) +
j + (Nz - 1) * Nx * Ny)
3991 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
3993 finite_element_pt(Nx *
i + (
j - 1) + (Nz - 1) * Nx * Ny)
4034 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
4036 finite_element_pt(Nx * (
i - 1) +
j + (Nz - 1) * Nx * Ny)
4043 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
4045 finite_element_pt(Nx *
i + (
j - 1) + (Nz - 1) * Nx * Ny)
4094 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4096 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 2) * Nx * Ny)
4102 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4107 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4109 finite_element_pt(Nx * (
i - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4116 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4118 finite_element_pt(Nx *
i + Nx - 2 + (Nz - 1) * Nx * Ny)
4122 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
4190 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4192 finite_element_pt(Nx * (
i - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4199 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4201 finite_element_pt(Nx *
i + Nx - 2 + (Nz - 1) * Nx * Ny)
4205 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
4282 finite_element_pt(Nx * (Ny - 1) + (Nz - 1) * Nx * Ny)
4284 finite_element_pt(Nx * (Ny - 1) + (Nz - 2) * Nx * Ny)
4290 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4295 finite_element_pt(Nx * (Ny - 1) + (Nz - 1) * Nx * Ny)
4297 finite_element_pt(Nx * (Ny - 2) + (Nz - 1) * Nx * Ny)
4303 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4430 finite_element_pt(Nx * (Ny - 1) + (Nz - 1) * Nx * Ny)
4432 finite_element_pt(Nx * (Ny - 2) + (Nz - 1) * Nx * Ny)
4438 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4559 for (
unsigned j = 1;
j < (Nx - 1);
j++)
4570 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4572 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 2) * Nx * Ny)
4579 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4584 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4586 finite_element_pt(Nx * (Ny - 2) +
j + (Nz - 1) * Nx * Ny)
4591 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4594 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4596 finite_element_pt(Nx * (Ny - 1) + (
j - 1) + (Nz - 1) * Nx * Ny)
4635 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4637 finite_element_pt(Nx * (Ny - 1) + (
j - 1) + (Nz - 1) * Nx * Ny)
4675 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4677 finite_element_pt(Nx * (Ny - 2) +
j + (Nz - 1) * Nx * Ny)
4682 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4685 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4687 finite_element_pt(Nx * (Ny - 1) + (
j - 1) + (Nz - 1) * Nx * Ny)
4724 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4726 finite_element_pt(Nx * (Ny - 1) + (
j - 1) + (Nz - 1) * Nx * Ny)
4764 element_num = Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny;
4772 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4774 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 2) * Nx * Ny)
4781 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4786 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4788 finite_element_pt(Nx * (Ny - 2) + Nx - 1 + (Nz - 1) * Nx * Ny)
4793 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4796 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4798 finite_element_pt(Nx * (Ny - 1) + Nx - 2 + (Nz - 1) * Nx * Ny)
4802 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
4864 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4866 finite_element_pt(Nx * (Ny - 1) + Nx - 2 + (Nz - 1) * Nx * Ny)
4870 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
4935 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4937 finite_element_pt(Nx * (Ny - 2) + Nx - 1 + (Nz - 1) * Nx * Ny)
4942 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4945 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4947 finite_element_pt(Nx * (Ny - 1) + Nx - 2 + (Nz - 1) * Nx * Ny)
4951 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
5009 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
5011 finite_element_pt(Nx * (Ny - 1) + Nx - 2 + (Nz - 1) * Nx * Ny)
5015 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
5075 setup_boundary_element_info();