43 MeshChecker::assert_geometric_element<QElementGeometricBase, ELEMENT>(3);
45 if ((Nx == 1) || (Ny == 1) || (Nz == 1))
47 std::ostringstream error_message;
48 error_message <<
"SimpleCubicMesh needs at least two elements in each,\n"
49 <<
"coordinate direction. You have specified \n"
50 <<
"Nx=" << Nx <<
"; Ny=" << Ny <<
"; Nz=" << Nz
60 Element_pt.resize(Nx * Ny * Nz);
66 unsigned n_p =
dynamic_cast<ELEMENT*
>(finite_element_pt(0))->
nnode_1d();
70 (1 + (
n_p - 1) * Nz));
78 double el_length[3] = {(Xmax - Xmin) /
double(Nx),
79 (Ymax - Ymin) /
double(Ny),
80 (Zmax - Zmin) /
double(Nz)};
338 for (
unsigned j = 1;
j < (Nx - 1);
j++)
424 finite_element_pt(
j - 1)->node_pt(
l3 *
n_p *
n_p + (
n_p - 1));
460 finite_element_pt(
j - 1)->node_pt(
l1 *
n_p + (
n_p - 1) +
512 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
578 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
643 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
708 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
769 for (
unsigned i = 1;
i < (Ny - 1);
i++)
919 for (
unsigned j = 1;
j < (Nx - 1);
j++)
1046 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1127 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1211 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1343 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1463 for (
unsigned j = 1;
j < (Nx - 1);
j++)
1476 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1561 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1654 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1661 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1726 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1797 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
1805 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1870 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
1935 for (
unsigned k = 1;
k < (Nz - 1);
k++)
2087 for (
unsigned j = 1;
j < (Nx - 1);
j++)
2099 finite_element_pt(
j + (
k - 1) * Nx * Ny)
2108 finite_element_pt(
j +
k * Nx * Ny)->node_pt(
l3 *
n_p *
n_p) =
2109 finite_element_pt(
j - 1 +
k * Nx * Ny)
2147 finite_element_pt(
j +
k * Nx * Ny)
2149 finite_element_pt(
j - 1 +
k * Nx * Ny)
2200 finite_element_pt(Nx - 1 + (
k - 1) * Nx * Ny)
2210 finite_element_pt(Nx - 1 +
k * Nx * Ny)->node_pt(
l3 *
n_p *
n_p) =
2211 finite_element_pt(Nx - 2 +
k * Nx * Ny)
2215 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
2276 finite_element_pt(Nx - 1 +
k * Nx * Ny)
2278 finite_element_pt(Nx - 2 +
k * Nx * Ny)
2282 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
2346 for (
unsigned i = 1;
i < (Ny - 1);
i++)
2360 finite_element_pt(Nx *
i + (
k - 1) * Nx * Ny)
2372 finite_element_pt(Nx *
i +
k * Nx * Ny)
2374 finite_element_pt(Nx * (
i - 1) +
k * Nx * Ny)
2446 for (
unsigned j = 1;
j < (Nx - 1);
j++)
2457 finite_element_pt(Nx *
i +
j +
k * Nx * Ny)
2459 finite_element_pt(Nx *
i +
j + (
k - 1) * Nx * Ny)
2472 finite_element_pt(Nx *
i +
j +
k * Nx * Ny)
2474 finite_element_pt(Nx * (
i - 1) +
j +
k * Nx * Ny)
2481 finite_element_pt(Nx *
i +
j +
k * Nx * Ny)
2483 finite_element_pt(Nx *
i + (
j - 1) +
k * Nx * Ny)
2534 finite_element_pt(Nx *
i + Nx - 1 +
k * Nx * Ny)
2536 finite_element_pt(Nx *
i + Nx - 1 + (
k - 1) * Nx * Ny)
2548 finite_element_pt(Nx *
i + Nx - 1 +
k * Nx * Ny)
2550 finite_element_pt(Nx * (
i - 1) + Nx - 1 +
k * Nx * Ny)
2557 finite_element_pt(Nx *
i + Nx - 1 +
k * Nx * Ny)
2559 finite_element_pt(Nx *
i + Nx - 2 +
k * Nx * Ny)
2563 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
2648 finite_element_pt(Nx * (Ny - 1) +
k * Nx * Ny)
2650 finite_element_pt(Nx * (Ny - 1) + (
k - 1) * Nx * Ny)
2661 finite_element_pt(Nx * (Ny - 1) +
k * Nx * Ny)
2663 finite_element_pt(Nx * (Ny - 2) +
k * Nx * Ny)
2669 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
2791 for (
unsigned j = 1;
j < (Nx - 1);
j++)
2802 finite_element_pt(Nx * (Ny - 1) +
j +
k * Nx * Ny)
2804 finite_element_pt(Nx * (Ny - 1) +
j + (
k - 1) * Nx * Ny)
2816 finite_element_pt(Nx * (Ny - 1) +
j +
k * Nx * Ny)
2818 finite_element_pt(Nx * (Ny - 2) +
j +
k * Nx * Ny)
2823 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
2826 finite_element_pt(Nx * (Ny - 1) +
j +
k * Nx * Ny)
2828 finite_element_pt(Nx * (Ny - 1) + (
j - 1) +
k * Nx * Ny)
2867 finite_element_pt(Nx * (Ny - 1) +
j +
k * Nx * Ny)
2869 finite_element_pt(Nx * (Ny - 1) + (
j - 1) +
k * Nx * Ny)
2918 finite_element_pt(Nx * (Ny - 1) + Nx - 1 +
k * Nx * Ny)
2920 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (
k - 1) * Nx * Ny)
2933 finite_element_pt(Nx * (Ny - 1) + Nx - 1 +
k * Nx * Ny)
2935 finite_element_pt(Nx * (Ny - 2) + Nx - 1 +
k * Nx * Ny)
2940 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
2943 finite_element_pt(Nx * (Ny - 1) + Nx - 1 +
k * Nx * Ny)
2945 finite_element_pt(Nx * (Ny - 1) + Nx - 2 +
k * Nx * Ny)
2949 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3010 finite_element_pt(Nx * (Ny - 1) + Nx - 1 +
k * Nx * Ny)
3012 finite_element_pt(Nx * (Ny - 1) + Nx - 2 +
k * Nx * Ny)
3016 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3096 finite_element_pt((Nz - 2) * Nx * Ny)
3104 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3355 for (
unsigned j = 1;
j < (Nx - 1);
j++)
3367 finite_element_pt(
j + (Nz - 2) * Nx * Ny)
3373 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3376 finite_element_pt(
j + (Nz - 1) * Nx * Ny)->node_pt(
l3 *
n_p *
n_p) =
3377 finite_element_pt(
j - 1 + (Nz - 1) * Nx * Ny)
3414 finite_element_pt(
j + (Nz - 1) * Nx * Ny)
3416 finite_element_pt(
j - 1 + (Nz - 1) * Nx * Ny)
3456 finite_element_pt(
j + (Nz - 1) * Nx * Ny)
3458 finite_element_pt(
j - 1 + (Nz - 1) * Nx * Ny)
3495 finite_element_pt(
j + (Nz - 1) * Nx * Ny)
3497 finite_element_pt(
j - 1 + (Nz - 1) * Nx * Ny)
3546 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)->
node_pt(
l2 +
n_p *
l1) =
3547 finite_element_pt(Nx - 1 + (Nz - 2) * Nx * Ny)
3554 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3557 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)->node_pt(
l3 *
n_p *
n_p) =
3558 finite_element_pt(Nx - 2 + (Nz - 1) * Nx * Ny)
3562 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3625 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)
3627 finite_element_pt(Nx - 2 + (Nz - 1) * Nx * Ny)
3631 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3688 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)
3690 finite_element_pt(Nx - 2 + (Nz - 1) * Nx * Ny)
3694 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3758 finite_element_pt(Nx - 1 + (Nz - 1) * Nx * Ny)
3760 finite_element_pt(Nx - 2 + (Nz - 1) * Nx * Ny)
3764 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
3828 for (
unsigned i = 1;
i < (Ny - 1);
i++)
3841 finite_element_pt(Nx *
i + (Nz - 1) * Nx * Ny)
3843 finite_element_pt(Nx *
i + (Nz - 2) * Nx * Ny)
3850 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
3855 finite_element_pt(Nx *
i + (Nz - 1) * Nx * Ny)
3857 finite_element_pt(Nx * (
i - 1) + (Nz - 1) * Nx * Ny)
3931 finite_element_pt(Nx *
i + (Nz - 1) * Nx * Ny)
3933 finite_element_pt(Nx * (
i - 1) + (Nz - 1) * Nx * Ny)
4002 for (
unsigned j = 1;
j < (Nx - 1);
j++)
4013 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
4015 finite_element_pt(Nx *
i +
j + (Nz - 2) * Nx * Ny)
4022 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4028 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
4030 finite_element_pt(Nx * (
i - 1) +
j + (Nz - 1) * Nx * Ny)
4037 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
4039 finite_element_pt(Nx *
i + (
j - 1) + (Nz - 1) * Nx * Ny)
4081 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
4083 finite_element_pt(Nx * (
i - 1) +
j + (Nz - 1) * Nx * Ny)
4090 finite_element_pt(Nx *
i +
j + (Nz - 1) * Nx * Ny)
4092 finite_element_pt(Nx *
i + (
j - 1) + (Nz - 1) * Nx * Ny)
4143 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4145 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 2) * Nx * Ny)
4152 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4157 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4159 finite_element_pt(Nx * (
i - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4166 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4168 finite_element_pt(Nx *
i + Nx - 2 + (Nz - 1) * Nx * Ny)
4172 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
4241 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4243 finite_element_pt(Nx * (
i - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4250 finite_element_pt(Nx *
i + Nx - 1 + (Nz - 1) * Nx * Ny)
4252 finite_element_pt(Nx *
i + Nx - 2 + (Nz - 1) * Nx * Ny)
4256 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
4336 finite_element_pt(Nx * (Ny - 1) + (Nz - 1) * Nx * Ny)
4338 finite_element_pt(Nx * (Ny - 1) + (Nz - 2) * Nx * Ny)
4344 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4349 finite_element_pt(Nx * (Ny - 1) + (Nz - 1) * Nx * Ny)
4351 finite_element_pt(Nx * (Ny - 2) + (Nz - 1) * Nx * Ny)
4357 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4484 finite_element_pt(Nx * (Ny - 1) + (Nz - 1) * Nx * Ny)
4486 finite_element_pt(Nx * (Ny - 2) + (Nz - 1) * Nx * Ny)
4492 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4614 for (
unsigned j = 1;
j < (Nx - 1);
j++)
4625 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4627 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 2) * Nx * Ny)
4634 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4639 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4641 finite_element_pt(Nx * (Ny - 2) +
j + (Nz - 1) * Nx * Ny)
4646 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4649 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4651 finite_element_pt(Nx * (Ny - 1) + (
j - 1) + (Nz - 1) * Nx * Ny)
4690 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4692 finite_element_pt(Nx * (Ny - 1) + (
j - 1) + (Nz - 1) * Nx * Ny)
4730 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4732 finite_element_pt(Nx * (Ny - 2) +
j + (Nz - 1) * Nx * Ny)
4737 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4740 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4742 finite_element_pt(Nx * (Ny - 1) + (
j - 1) + (Nz - 1) * Nx * Ny)
4779 finite_element_pt(Nx * (Ny - 1) +
j + (Nz - 1) * Nx * Ny)
4781 finite_element_pt(Nx * (Ny - 1) + (
j - 1) + (Nz - 1) * Nx * Ny)
4821 element_num = Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny;
4829 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4831 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 2) * Nx * Ny)
4838 for (
unsigned l3 = 1;
l3 < (
n_p - 1);
l3++)
4843 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4845 finite_element_pt(Nx * (Ny - 2) + Nx - 1 + (Nz - 1) * Nx * Ny)
4850 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
4853 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4855 finite_element_pt(Nx * (Ny - 1) + Nx - 2 + (Nz - 1) * Nx * Ny)
4859 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
4922 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4924 finite_element_pt(Nx * (Ny - 1) + Nx - 2 + (Nz - 1) * Nx * Ny)
4928 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
4995 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
4997 finite_element_pt(Nx * (Ny - 2) + Nx - 1 + (Nz - 1) * Nx * Ny)
5002 for (
unsigned l1 = 1;
l1 < (
n_p - 1);
l1++)
5005 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
5007 finite_element_pt(Nx * (Ny - 1) + Nx - 2 + (Nz - 1) * Nx * Ny)
5011 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
5069 finite_element_pt(Nx * (Ny - 1) + Nx - 1 + (Nz - 1) * Nx * Ny)
5071 finite_element_pt(Nx * (Ny - 1) + Nx - 2 + (Nz - 1) * Nx * Ny)
5075 for (
unsigned l2 = 1;
l2 < (
n_p - 1);
l2++)
5137 setup_boundary_element_info();