30 #ifndef OOMPH_SIMPLE_CUBIC_MESH_TEMPLATE_CC 31 #define OOMPH_SIMPLE_CUBIC_MESH_TEMPLATE_CC 44 template <
class ELEMENT>
49 MeshChecker::assert_geometric_element<QElementGeometricBase,ELEMENT>(3);
51 if ((Nx==1)||(Ny==1)||(Nz==1))
53 std::ostringstream error_message;
55 <<
"SimpleCubicMesh needs at least two elements in each,\n" 56 <<
"coordinate direction. You have specified \n" 57 <<
"Nx=" << Nx <<
"; Ny=" << Ny <<
"; Nz=" << Nz << std::endl;
58 throw OomphLibError(error_message.str(),
59 OOMPH_CURRENT_FUNCTION,
60 OOMPH_EXCEPTION_LOCATION);
67 Element_pt.resize(Nx*Ny*Nz);
69 unsigned element_num = 0;
70 Element_pt[element_num] =
new ELEMENT;
73 unsigned n_p =
dynamic_cast<ELEMENT*
>(finite_element_pt(0))->nnode_1d();
76 Node_pt.resize((1 + (n_p-1)*Nx)*(1 + (n_p-1)*Ny)*(1 + (n_p-1)*Nz));
81 unsigned long node_count=0;
84 double el_length[3] = {(Xmax - Xmin)/
double(Nx),
85 (Ymax - Ymin)/
double(Ny),
86 (Zmax - Zmin)/
double(Nz)};
89 Vector<double> s_fraction;
105 unsigned local_node_num=0;
107 Node_pt[node_count] =
108 finite_element_pt(element_num)->
109 construct_boundary_node(local_node_num,time_stepper_pt);
111 finite_element_pt(element_num)->node_pt(local_node_num)
112 = Node_pt[node_count];
115 Node_pt[node_count]->x(0) = Xmin;
116 Node_pt[node_count]->x(1) = Ymin;
117 Node_pt[node_count]->x(2) = Zmin;
120 add_boundary_node(0,Node_pt[node_count]);
121 add_boundary_node(1,Node_pt[node_count]);
122 add_boundary_node(4,Node_pt[node_count]);
128 for(
unsigned l2=1;l2<n_p;l2++)
134 Node_pt[node_count] =
135 finite_element_pt(element_num)->
136 construct_boundary_node(local_node_num,time_stepper_pt);
138 finite_element_pt(element_num)->node_pt(local_node_num)
139 = Node_pt[node_count];
142 finite_element_pt(element_num)->
143 local_fraction_of_node(local_node_num,s_fraction);
146 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
147 Node_pt[node_count]->x(1) = Ymin;
148 Node_pt[node_count]->x(2) = Zmin;
151 add_boundary_node(0,Node_pt[node_count]);
152 add_boundary_node(1,Node_pt[node_count]);
158 for(
unsigned l1=1;l1<n_p;l1++)
161 local_node_num = l1*n_p;
164 Node_pt[node_count] =
165 finite_element_pt(element_num)->
166 construct_boundary_node(local_node_num,time_stepper_pt);
168 finite_element_pt(element_num)->node_pt(local_node_num)
169 = Node_pt[node_count];
172 finite_element_pt(element_num)->
173 local_fraction_of_node(local_node_num,s_fraction);
177 Node_pt[node_count]->x(0) = Xmin;
178 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
179 Node_pt[node_count]->x(2) = Zmin;
182 add_boundary_node(4,Node_pt[node_count]);
183 add_boundary_node(0,Node_pt[node_count]);
188 for(
unsigned l2=1;l2<n_p;l2++)
191 local_node_num = l1*n_p + l2;
194 Node_pt[node_count] =
195 finite_element_pt(element_num)->
196 construct_boundary_node(local_node_num,time_stepper_pt);
198 finite_element_pt(element_num)->node_pt(local_node_num)
199 = Node_pt[node_count];
202 finite_element_pt(element_num)->
203 local_fraction_of_node(local_node_num,s_fraction);
206 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
207 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
208 Node_pt[node_count]->x(2) = Zmin;
211 add_boundary_node(0,Node_pt[node_count]);
221 for(
unsigned l3=1;l3<n_p;l3++)
224 local_node_num = n_p*n_p*l3;
227 Node_pt[node_count] =
228 finite_element_pt(element_num)->
229 construct_boundary_node(local_node_num,time_stepper_pt);
231 finite_element_pt(element_num)->node_pt(local_node_num)
232 = Node_pt[node_count];
235 finite_element_pt(element_num)->
236 local_fraction_of_node(local_node_num,s_fraction);
239 Node_pt[node_count]->x(0) = Xmin;
240 Node_pt[node_count]->x(1) = Ymin;
241 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
244 add_boundary_node(1,Node_pt[node_count]);
245 add_boundary_node(4,Node_pt[node_count]);
250 for(
unsigned l2=1;l2<n_p;l2++)
253 local_node_num = l2 + n_p*n_p*l3;
256 Node_pt[node_count] =
257 finite_element_pt(element_num)->
258 construct_boundary_node(local_node_num,time_stepper_pt);
260 finite_element_pt(element_num)->node_pt(local_node_num)
261 = Node_pt[node_count];
264 finite_element_pt(element_num)->
265 local_fraction_of_node(local_node_num,s_fraction);
268 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
269 Node_pt[node_count]->x(1) = Ymin;
270 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
273 add_boundary_node(1,Node_pt[node_count]);
279 for(
unsigned l1=1;l1<n_p;l1++)
282 local_node_num = l1*n_p + n_p*n_p*l3;
285 Node_pt[node_count] =
286 finite_element_pt(element_num)->
287 construct_boundary_node(local_node_num,time_stepper_pt);
289 finite_element_pt(element_num)->node_pt(local_node_num)
290 = Node_pt[node_count];
293 finite_element_pt(element_num)->
294 local_fraction_of_node(local_node_num,s_fraction);
297 Node_pt[node_count]->x(0) = Xmin;
298 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
299 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
302 add_boundary_node(4,Node_pt[node_count]);
307 for(
unsigned l2=1;l2<n_p;l2++)
310 local_node_num = l2 + l1*n_p + n_p*n_p*l3;
313 Node_pt[node_count] =
314 finite_element_pt(element_num)->
315 construct_node(local_node_num,time_stepper_pt);
317 finite_element_pt(element_num)->node_pt(local_node_num)
318 = Node_pt[node_count];
321 finite_element_pt(element_num)->
322 local_fraction_of_node(local_node_num,s_fraction);
325 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
326 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
327 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
344 for(
unsigned j=1;j<(Nx-1);j++)
348 Element_pt[element_num] =
new ELEMENT;
355 finite_element_pt(element_num)->node_pt(0) =
356 finite_element_pt(element_num-1)->node_pt((n_p-1));
359 for(
unsigned l2=1;l2<n_p;l2++)
365 Node_pt[node_count] =
366 finite_element_pt(element_num)->
367 construct_boundary_node(local_node_num,time_stepper_pt);
369 finite_element_pt(element_num)->node_pt(local_node_num)
370 = Node_pt[node_count];
373 finite_element_pt(element_num)->
374 local_fraction_of_node(local_node_num,s_fraction);
377 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
378 Node_pt[node_count]->x(1) = Ymin;
379 Node_pt[node_count]->x(2) = Zmin;
382 add_boundary_node(0,Node_pt[node_count]);
383 add_boundary_node(1,Node_pt[node_count]);
389 for(
unsigned l1=1;l1<n_p;l1++)
392 finite_element_pt(element_num)->node_pt(l1*n_p) =
393 finite_element_pt(element_num-1)->node_pt(l1*n_p+(n_p-1));
396 for(
unsigned l2=1;l2<n_p;l2++)
399 local_node_num = l2 + l1*n_p;
402 Node_pt[node_count] =
403 finite_element_pt(element_num)->
404 construct_boundary_node(local_node_num,time_stepper_pt);
406 finite_element_pt(element_num)->node_pt(local_node_num)
407 = Node_pt[node_count];
410 finite_element_pt(element_num)->
411 local_fraction_of_node(local_node_num,s_fraction);
414 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
415 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
416 Node_pt[node_count]->x(2) = Zmin;
419 add_boundary_node(0,Node_pt[node_count]);
426 for(
unsigned l3 =1; l3<n_p;l3++)
429 finite_element_pt(j)->node_pt(l3*n_p*n_p) =
430 finite_element_pt(j-1)->node_pt(l3*n_p*n_p+(n_p-1));
433 for(
unsigned l2=1;l2<n_p;l2++)
436 local_node_num = l2 + l3*n_p*n_p;
439 Node_pt[node_count] =
440 finite_element_pt(element_num)->
441 construct_boundary_node(local_node_num,time_stepper_pt);
443 finite_element_pt(element_num)->node_pt(local_node_num)
444 = Node_pt[node_count];
447 finite_element_pt(element_num)->
448 local_fraction_of_node(local_node_num,s_fraction);
451 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
452 Node_pt[node_count]->x(1) = Ymin;
453 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
456 add_boundary_node(1,Node_pt[node_count]);
462 for(
unsigned l1=1;l1<n_p;l1++)
465 finite_element_pt(j)->node_pt(l1*n_p+l3*n_p*n_p) =
466 finite_element_pt(j-1)->node_pt(l1*n_p+(n_p-1)+l3*n_p*n_p);
469 for(
unsigned l2=1;l2<n_p;l2++)
472 local_node_num = l2 + l1*n_p + l3*n_p*n_p;
475 Node_pt[node_count] =
476 finite_element_pt(element_num)->
477 construct_node(local_node_num,time_stepper_pt);
479 finite_element_pt(element_num)->node_pt(local_node_num) =
483 finite_element_pt(element_num)->
484 local_fraction_of_node(local_node_num,s_fraction);
487 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
488 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
489 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
505 Element_pt[element_num] =
new ELEMENT;
512 finite_element_pt(element_num)->node_pt(0) =
513 finite_element_pt(element_num-1)->node_pt((n_p-1));
516 for(
unsigned l2=1;l2<(n_p-1);l2++)
522 Node_pt[node_count] =
523 finite_element_pt(element_num)->
524 construct_boundary_node(local_node_num,time_stepper_pt);
526 finite_element_pt(element_num)->node_pt(local_node_num)
527 = Node_pt[node_count];
530 finite_element_pt(element_num)->
531 local_fraction_of_node(local_node_num,s_fraction);
534 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
535 Node_pt[node_count]->x(1) = Ymin;
536 Node_pt[node_count]->x(2) = Zmin;
539 add_boundary_node(0,Node_pt[node_count]);
540 add_boundary_node(1,Node_pt[node_count]);
547 local_node_num = n_p-1;
550 Node_pt[node_count] =
551 finite_element_pt(element_num)->
552 construct_boundary_node(local_node_num,time_stepper_pt);
554 finite_element_pt(element_num)->node_pt(local_node_num)
555 = Node_pt[node_count];
558 finite_element_pt(element_num)->
559 local_fraction_of_node(local_node_num,s_fraction);
562 Node_pt[node_count]->x(0) = Xmax;
563 Node_pt[node_count]->x(1) = Ymin;
564 Node_pt[node_count]->x(2) = Zmin;
567 add_boundary_node(0,Node_pt[node_count]);
568 add_boundary_node(1,Node_pt[node_count]);
569 add_boundary_node(2,Node_pt[node_count]);
574 for(
unsigned l1=1;l1<n_p;l1++)
577 finite_element_pt(element_num)->node_pt(l1*n_p) =
578 finite_element_pt(element_num-1)->node_pt(l1*n_p+(n_p-1));
581 for(
unsigned l2=1;l2<(n_p-1);l2++)
584 local_node_num = l2 + l1*n_p;
587 Node_pt[node_count] =
588 finite_element_pt(element_num)->
589 construct_boundary_node(local_node_num,time_stepper_pt);
591 finite_element_pt(element_num)->node_pt(local_node_num)
592 = Node_pt[node_count];
595 finite_element_pt(element_num)->
596 local_fraction_of_node(local_node_num,s_fraction);
599 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
600 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
601 Node_pt[node_count]->x(2) = Zmin;
604 add_boundary_node(0,Node_pt[node_count]);
611 local_node_num = l1*n_p + (n_p-1);
614 Node_pt[node_count] =
615 finite_element_pt(element_num)->
616 construct_boundary_node(local_node_num,time_stepper_pt);
618 finite_element_pt(element_num)->
619 node_pt(local_node_num) = Node_pt[node_count];
622 finite_element_pt(element_num)->
623 local_fraction_of_node(local_node_num,s_fraction);
626 Node_pt[node_count]->x(0) = Xmax;
627 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
628 Node_pt[node_count]->x(2) = Zmin;
631 add_boundary_node(2,Node_pt[node_count]);
632 add_boundary_node(0,Node_pt[node_count]);
638 for(
unsigned l3 =1; l3<n_p;l3++)
641 finite_element_pt(element_num)->node_pt(l3*n_p*n_p) =
642 finite_element_pt(element_num-1)->node_pt(l3*n_p*n_p+(n_p-1));
645 for(
unsigned l2=1;l2<(n_p-1);l2++)
648 local_node_num = l2 + l3*n_p*n_p;
651 Node_pt[node_count] =
652 finite_element_pt(element_num)->
653 construct_boundary_node(local_node_num,time_stepper_pt);
655 finite_element_pt(element_num)->node_pt(local_node_num) =
659 finite_element_pt(element_num)->
660 local_fraction_of_node(local_node_num,s_fraction);
663 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
664 Node_pt[node_count]->x(1) = Ymin;
665 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
668 add_boundary_node(1,Node_pt[node_count]);
675 local_node_num = n_p-1 + l3*n_p*n_p;
678 Node_pt[node_count] =
679 finite_element_pt(element_num)->
680 construct_boundary_node(local_node_num,time_stepper_pt);
682 finite_element_pt(element_num)->node_pt(local_node_num)
683 = Node_pt[node_count];
686 finite_element_pt(element_num)->
687 local_fraction_of_node(local_node_num,s_fraction);
690 Node_pt[node_count]->x(0) = Xmax;
691 Node_pt[node_count]->x(1) = Ymin;
692 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
695 add_boundary_node(1,Node_pt[node_count]);
696 add_boundary_node(2,Node_pt[node_count]);
701 for(
unsigned l1=1;l1<n_p;l1++)
704 finite_element_pt(element_num)->node_pt(l1*n_p+l3*n_p*n_p) =
705 finite_element_pt(element_num-1)->node_pt(l1*n_p+(n_p-1)+l3*n_p*n_p);
708 for(
unsigned l2=1;l2<(n_p-1);l2++)
711 local_node_num = l2 + l1*n_p + l3*n_p*n_p;
714 Node_pt[node_count] =
715 finite_element_pt(element_num)->
716 construct_node(local_node_num,time_stepper_pt);
718 finite_element_pt(element_num)->node_pt(local_node_num) =
722 finite_element_pt(element_num)->
723 local_fraction_of_node(local_node_num,s_fraction);
726 Node_pt[node_count]->x(0) = Xmin +
727 el_length[0]*(Nx-1 + s_fraction[0]);
728 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
729 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
739 local_node_num = l1*n_p+(n_p-1) + l3*n_p*n_p;
741 Node_pt[node_count] =
742 finite_element_pt(element_num)->
743 construct_boundary_node(local_node_num,time_stepper_pt);
745 finite_element_pt(element_num)->node_pt(local_node_num) =
749 finite_element_pt(element_num)->
750 local_fraction_of_node(local_node_num,s_fraction);
753 Node_pt[node_count]->x(0) = Xmax;
754 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
755 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
758 add_boundary_node(2,Node_pt[node_count]);
769 for(
unsigned i=1;i<(Ny-1);i++)
775 Element_pt[element_num] =
new ELEMENT;
778 for(
unsigned l2=0;l2<n_p;l2++)
780 finite_element_pt(element_num)->node_pt(l2) =
781 finite_element_pt(element_num-Nx)->node_pt((n_p-1)*n_p + l2);
785 for(
unsigned l1=1;l1<n_p;l1++)
789 local_node_num = l1*n_p;
792 Node_pt[node_count] =
793 finite_element_pt(element_num)->
794 construct_boundary_node(local_node_num,time_stepper_pt);
796 finite_element_pt(element_num)->node_pt(local_node_num)
797 = Node_pt[node_count];
800 finite_element_pt(element_num)->
801 local_fraction_of_node(local_node_num,s_fraction);
804 Node_pt[node_count]->x(0) = Xmin;
805 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
806 Node_pt[node_count]->x(2) = Zmin;
809 add_boundary_node(0,Node_pt[node_count]);
810 add_boundary_node(4,Node_pt[node_count]);
815 for(
unsigned l2=1;l2<n_p;l2++)
818 local_node_num = l2 + l1*n_p;
821 Node_pt[node_count] =
822 finite_element_pt(element_num)->
823 construct_boundary_node(local_node_num,time_stepper_pt);
825 finite_element_pt(element_num)->node_pt(local_node_num) =
829 finite_element_pt(element_num)->
830 local_fraction_of_node(local_node_num,s_fraction);
834 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
835 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
836 Node_pt[node_count]->x(2) = Zmin;
839 add_boundary_node(0,Node_pt[node_count]);
846 for(
unsigned l3=1;l3<n_p;l3++)
849 for(
unsigned l2=0;l2<n_p;l2++)
851 finite_element_pt(element_num)->node_pt(l2+l3*n_p*n_p) =
852 finite_element_pt(element_num-Nx)->
853 node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
857 for(
unsigned l1=1;l1<n_p;l1++)
861 local_node_num = l1*n_p + l3*n_p*n_p;
864 Node_pt[node_count] =
865 finite_element_pt(element_num)->
866 construct_boundary_node(local_node_num,time_stepper_pt);
868 finite_element_pt(element_num)->node_pt(local_node_num)
869 = Node_pt[node_count];
872 finite_element_pt(element_num)->
873 local_fraction_of_node(local_node_num,s_fraction);
876 Node_pt[node_count]->x(0) = Xmin;
877 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
878 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
881 add_boundary_node(4,Node_pt[node_count]);
887 for(
unsigned l2=1;l2<n_p;l2++)
890 local_node_num = l2 + l1*n_p + n_p*n_p*l3;
893 Node_pt[node_count] =
894 finite_element_pt(element_num)->
895 construct_node(local_node_num,time_stepper_pt);
897 finite_element_pt(element_num)->node_pt(local_node_num) =
901 finite_element_pt(element_num)->
902 local_fraction_of_node(local_node_num,s_fraction);
905 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
906 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
907 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
918 for(
unsigned j=1;j<(Nx-1);j++)
921 element_num = Nx*i+j;
922 Element_pt[element_num] =
new ELEMENT;
925 for(
unsigned l2=0;l2<n_p;l2++)
927 finite_element_pt(element_num)->node_pt(l2) =
928 finite_element_pt(element_num-Nx)->node_pt((n_p-1)*n_p + l2);
931 for(
unsigned l1=1;l1<n_p;l1++)
934 finite_element_pt(element_num)->node_pt(l1*n_p) =
935 finite_element_pt(element_num-1)->node_pt(l1*n_p+(n_p-1));
938 for(
unsigned l2=1;l2<n_p;l2++)
941 local_node_num = l1*n_p+l2;
944 Node_pt[node_count] =
945 finite_element_pt(element_num)->
946 construct_boundary_node(local_node_num,time_stepper_pt);
948 finite_element_pt(element_num)->node_pt(local_node_num)
949 = Node_pt[node_count];
952 finite_element_pt(element_num)->
953 local_fraction_of_node(local_node_num,s_fraction);
956 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
957 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
958 Node_pt[node_count]->x(2) = Zmin;
961 add_boundary_node(0,Node_pt[node_count]);
968 for(
unsigned l3 = 1;l3<n_p;l3++)
972 for(
unsigned l2=0;l2<n_p;l2++)
974 finite_element_pt(element_num)->node_pt(l2+l3*n_p*n_p) =
975 finite_element_pt(element_num-Nx)->
976 node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
979 for(
unsigned l1=1;l1<n_p;l1++)
982 finite_element_pt(element_num)->node_pt(l1*n_p+l3*n_p*n_p) =
983 finite_element_pt(element_num-1)->node_pt(l1*n_p+l3*n_p*n_p+(n_p-1));
986 for(
unsigned l2=1;l2<n_p;l2++)
989 local_node_num = l1*n_p + l2 + l3*n_p*n_p;
992 Node_pt[node_count] =
993 finite_element_pt(element_num)->
994 construct_node(local_node_num,time_stepper_pt);
996 finite_element_pt(element_num)->node_pt(local_node_num)
997 = Node_pt[node_count];
1000 finite_element_pt(element_num)->
1001 local_fraction_of_node(local_node_num,s_fraction);
1004 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
1005 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
1006 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1023 element_num = Nx*i+Nx-1;
1024 Element_pt[element_num] =
new ELEMENT;
1028 for(
unsigned l2=0;l2<n_p;l2++)
1030 finite_element_pt(element_num)->node_pt(l2) =
1031 finite_element_pt(element_num-Nx)->node_pt((n_p-1)*n_p + l2);
1034 for(
unsigned l1=1;l1<n_p;l1++)
1037 finite_element_pt(element_num)->node_pt(l1*n_p) =
1038 finite_element_pt(element_num-1)->node_pt(l1*n_p+(n_p-1));
1041 for(
unsigned l2=1;l2<(n_p-1);l2++)
1044 local_node_num = l1*n_p + l2;
1047 Node_pt[node_count] =
1048 finite_element_pt(element_num)->
1049 construct_boundary_node(local_node_num,time_stepper_pt);
1051 finite_element_pt(element_num)->node_pt(local_node_num) =
1052 Node_pt[node_count];
1055 finite_element_pt(element_num)->
1056 local_fraction_of_node(local_node_num,s_fraction);
1059 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
1060 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
1061 Node_pt[node_count]->x(2) = Zmin;
1064 add_boundary_node(0,Node_pt[node_count]);
1073 local_node_num = l1*n_p + (n_p-1);
1076 Node_pt[node_count] =
1077 finite_element_pt(element_num)->
1078 construct_boundary_node(local_node_num,time_stepper_pt);
1080 finite_element_pt(element_num)->node_pt(local_node_num)
1081 = Node_pt[node_count];
1084 finite_element_pt(element_num)->
1085 local_fraction_of_node(local_node_num,s_fraction);
1089 Node_pt[node_count]->x(0) = Xmax;
1090 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
1091 Node_pt[node_count]->x(2) = Zmin;
1094 add_boundary_node(0,Node_pt[node_count]);
1095 add_boundary_node(2,Node_pt[node_count]);
1103 for(
unsigned l3=1;l3<n_p;l3++)
1107 for(
unsigned l2=0;l2<n_p;l2++)
1109 finite_element_pt(element_num)->node_pt(l2+l3*n_p*n_p) =
1110 finite_element_pt(element_num-Nx)->node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
1113 for(
unsigned l1=1;l1<n_p;l1++)
1116 finite_element_pt(element_num)->node_pt(l1*n_p + l3*n_p*n_p) =
1117 finite_element_pt(element_num-1)->node_pt(l1*n_p+(n_p-1) + l3*n_p*n_p);
1120 for(
unsigned l2=1;l2<(n_p-1);l2++)
1123 local_node_num = l1*n_p + l2 + l3*n_p*n_p;
1126 Node_pt[node_count] =
1127 finite_element_pt(element_num)->
1128 construct_node(local_node_num,time_stepper_pt);
1130 finite_element_pt(element_num)->node_pt(local_node_num)
1131 = Node_pt[node_count];
1134 finite_element_pt(element_num)->
1135 local_fraction_of_node(local_node_num,s_fraction);
1138 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
1139 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
1140 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1150 local_node_num = l1*n_p + (n_p-1) + l3*n_p*n_p;
1153 Node_pt[node_count] =
1154 finite_element_pt(element_num)->
1155 construct_boundary_node(local_node_num,time_stepper_pt);
1157 finite_element_pt(element_num)->node_pt(local_node_num)
1158 = Node_pt[node_count];
1161 finite_element_pt(element_num)->
1162 local_fraction_of_node(local_node_num,s_fraction);
1165 Node_pt[node_count]->x(0) = Xmax;
1166 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
1167 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1170 add_boundary_node(2,Node_pt[node_count]);
1192 element_num = Nx*(Ny-1);
1193 Element_pt[element_num] =
new ELEMENT;
1196 for(
unsigned l2=0;l2<n_p;l2++)
1198 finite_element_pt(element_num)->node_pt(l2)
1199 = finite_element_pt(element_num-Nx)->node_pt((n_p-1)*n_p + l2);
1204 for(
unsigned l1=1;l1<(n_p-1);l1++)
1207 local_node_num = n_p*l1;
1210 Node_pt[node_count] =
1211 finite_element_pt(element_num)->
1212 construct_boundary_node(local_node_num,time_stepper_pt);
1214 finite_element_pt(element_num)->node_pt(local_node_num)
1215 = Node_pt[node_count];
1218 finite_element_pt(element_num)->
1219 local_fraction_of_node(local_node_num,s_fraction);
1222 Node_pt[node_count]->x(0) = Xmin;
1223 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1224 Node_pt[node_count]->x(2) = Zmin;
1227 add_boundary_node(0,Node_pt[node_count]);
1228 add_boundary_node(4,Node_pt[node_count]);
1233 for(
unsigned l2=1;l2<n_p;l2++)
1236 local_node_num = n_p*l1 + l2;
1239 Node_pt[node_count] =
1240 finite_element_pt(element_num)->
1241 construct_boundary_node(local_node_num,time_stepper_pt);
1243 finite_element_pt(element_num)->node_pt(local_node_num)
1244 = Node_pt[node_count];
1247 finite_element_pt(element_num)->
1248 local_fraction_of_node(local_node_num,s_fraction);
1251 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
1252 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1253 Node_pt[node_count]->x(2) = Zmin;
1256 add_boundary_node(0,Node_pt[node_count]);
1266 local_node_num = n_p*(n_p-1);
1268 Node_pt[node_count] =
1269 finite_element_pt(element_num)->
1270 construct_boundary_node(local_node_num,time_stepper_pt);
1272 finite_element_pt(element_num)->node_pt(local_node_num)
1273 = Node_pt[node_count];
1276 finite_element_pt(element_num)->
1277 local_fraction_of_node(local_node_num,s_fraction);
1280 Node_pt[node_count]->x(0) = Xmin;
1281 Node_pt[node_count]->x(1) = Ymax;
1282 Node_pt[node_count]->x(2) = Zmin;
1285 add_boundary_node(0,Node_pt[node_count]);
1286 add_boundary_node(3,Node_pt[node_count]);
1287 add_boundary_node(4,Node_pt[node_count]);
1293 for(
unsigned l2=1;l2<n_p;l2++)
1296 local_node_num = n_p*(n_p-1) + l2;
1298 Node_pt[node_count] =
1299 finite_element_pt(element_num)->
1300 construct_boundary_node(local_node_num,time_stepper_pt);
1302 finite_element_pt(element_num)->node_pt(local_node_num)
1303 = Node_pt[node_count];
1306 finite_element_pt(element_num)->
1307 local_fraction_of_node(local_node_num,s_fraction);
1310 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
1311 Node_pt[node_count]->x(1) = Ymax;
1312 Node_pt[node_count]->x(2) = Zmin;
1315 add_boundary_node(0,Node_pt[node_count]);
1316 add_boundary_node(3,Node_pt[node_count]);
1322 for(
unsigned l3=1;l3<n_p;l3++)
1325 for(
unsigned l2=0;l2<n_p;l2++)
1327 finite_element_pt(element_num)->node_pt(l2 + l3*n_p*n_p)
1328 = finite_element_pt(element_num-Nx)->
1329 node_pt((n_p-1)*n_p + l2 + l3*n_p*n_p);
1334 for(
unsigned l1=1;l1<(n_p-1);l1++)
1337 local_node_num = n_p*l1 + l3*n_p*n_p;
1340 Node_pt[node_count] =
1341 finite_element_pt(element_num)->
1342 construct_boundary_node(local_node_num,time_stepper_pt);
1344 finite_element_pt(element_num)->node_pt(local_node_num)
1345 = Node_pt[node_count];
1348 finite_element_pt(element_num)->
1349 local_fraction_of_node(local_node_num,s_fraction);
1352 Node_pt[node_count]->x(0) = Xmin;
1353 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1354 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1357 add_boundary_node(4,Node_pt[node_count]);
1362 for(
unsigned l2=1;l2<n_p;l2++)
1365 local_node_num = n_p*l1 + l2 + l3*n_p*n_p;
1368 Node_pt[node_count] =
1369 finite_element_pt(element_num)
1370 ->construct_node(local_node_num,time_stepper_pt);
1372 finite_element_pt(element_num)->node_pt(local_node_num)
1373 = Node_pt[node_count];
1376 finite_element_pt(element_num)->
1377 local_fraction_of_node(local_node_num,s_fraction);
1380 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
1381 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1382 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1394 local_node_num = n_p*(n_p-1) + l3*n_p*n_p;
1396 Node_pt[node_count] = finite_element_pt(element_num)
1397 ->construct_boundary_node(local_node_num,time_stepper_pt);
1399 finite_element_pt(element_num)->node_pt(local_node_num)
1400 = Node_pt[node_count];
1403 finite_element_pt(element_num)->
1404 local_fraction_of_node(local_node_num,s_fraction);
1407 Node_pt[node_count]->x(0) = Xmin;
1408 Node_pt[node_count]->x(1) = Ymax;
1409 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1412 add_boundary_node(3,Node_pt[node_count]);
1413 add_boundary_node(4,Node_pt[node_count]);
1419 for(
unsigned l2=1;l2<n_p;l2++)
1421 local_node_num = n_p*(n_p-1)+l2 + l3*n_p*n_p;
1423 Node_pt[node_count] =
1424 finite_element_pt(element_num)->
1425 construct_boundary_node(local_node_num,time_stepper_pt);
1427 finite_element_pt(element_num)->node_pt(local_node_num)
1428 = Node_pt[node_count];
1431 finite_element_pt(element_num)->
1432 local_fraction_of_node(local_node_num,s_fraction);
1435 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
1436 Node_pt[node_count]->x(1) = Ymax;
1437 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1440 add_boundary_node(3,Node_pt[node_count]);
1451 for(
unsigned j=1;j<(Nx-1);j++)
1454 element_num = Nx*(Ny-1)+j;
1455 Element_pt[element_num] =
new ELEMENT;
1457 for(
unsigned l2=0;l2<n_p;l2++)
1459 finite_element_pt(element_num)->node_pt(l2) =
1460 finite_element_pt(element_num-Nx)->node_pt((n_p-1)*n_p + l2);
1464 for(
unsigned l1=1;l1<(n_p-1);l1++)
1467 finite_element_pt(element_num)->node_pt(n_p*l1)
1468 = finite_element_pt(element_num-1)->node_pt(n_p*l1+(n_p-1));
1471 for(
unsigned l2=1;l2<n_p;l2++)
1473 local_node_num = n_p*l1+l2;
1475 Node_pt[node_count] =
1476 finite_element_pt(element_num)->
1477 construct_boundary_node(local_node_num,time_stepper_pt);
1480 finite_element_pt(element_num)->node_pt(local_node_num)
1481 = Node_pt[node_count];
1484 finite_element_pt(element_num)->
1485 local_fraction_of_node(local_node_num,s_fraction);
1488 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
1489 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1490 Node_pt[node_count]->x(2) = Zmin;
1493 add_boundary_node(0,Node_pt[node_count]);
1502 finite_element_pt(element_num)->node_pt(n_p*(n_p-1))
1503 = finite_element_pt(element_num-1)->node_pt(n_p*(n_p-1)+(n_p-1));
1505 for(
unsigned l2=1;l2<n_p;l2++)
1507 local_node_num = n_p*(n_p-1)+l2;
1509 Node_pt[node_count] =
1510 finite_element_pt(element_num)->
1511 construct_boundary_node(local_node_num,time_stepper_pt);
1513 finite_element_pt(element_num)->node_pt(local_node_num) =
1514 Node_pt[node_count];
1517 finite_element_pt(element_num)->
1518 local_fraction_of_node(local_node_num,s_fraction);
1521 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
1522 Node_pt[node_count]->x(1) = Ymax;
1523 Node_pt[node_count]->x(2) = Zmin;
1526 add_boundary_node(3,Node_pt[node_count]);
1527 add_boundary_node(0,Node_pt[node_count]);
1537 for(
unsigned l3=1;l3<n_p;l3++)
1540 for(
unsigned l2=0;l2<n_p;l2++)
1542 finite_element_pt(element_num)->node_pt(l2 + l3*n_p*n_p) =
1543 finite_element_pt(element_num-Nx)->
1544 node_pt((n_p-1)*n_p + l2 + l3*n_p*n_p);
1548 for(
unsigned l1=1;l1<(n_p-1);l1++)
1551 finite_element_pt(element_num)->node_pt(n_p*l1+l3*n_p*n_p)
1552 = finite_element_pt(element_num-1)
1553 ->node_pt(n_p*l1+(n_p-1)+l3*n_p*n_p);
1556 for(
unsigned l2=1;l2<n_p;l2++)
1558 local_node_num = n_p*l1+l2+l3*n_p*n_p;
1560 Node_pt[node_count] =
1561 finite_element_pt(element_num)
1562 ->construct_node(local_node_num,time_stepper_pt);
1565 finite_element_pt(element_num)->node_pt(local_node_num)
1566 = Node_pt[node_count];
1569 finite_element_pt(element_num)->
1570 local_fraction_of_node(local_node_num,s_fraction);
1573 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
1574 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1575 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1586 finite_element_pt(element_num)->node_pt(n_p*(n_p-1) + l3*n_p*n_p)
1587 = finite_element_pt(element_num-1)->
1588 node_pt(n_p*(n_p-1)+(n_p-1)+l3*n_p*n_p);
1590 for(
unsigned l2=1;l2<n_p;l2++)
1592 local_node_num = n_p*(n_p-1)+l2 + l3*n_p*n_p;
1594 Node_pt[node_count] =
1595 finite_element_pt(element_num)->
1596 construct_boundary_node(local_node_num,time_stepper_pt);
1598 finite_element_pt(element_num)->node_pt(local_node_num)
1599 = Node_pt[node_count];
1602 finite_element_pt(element_num)->
1603 local_fraction_of_node(local_node_num,s_fraction);
1606 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
1607 Node_pt[node_count]->x(1) = Ymax;
1608 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1611 add_boundary_node(3,Node_pt[node_count]);
1627 element_num = Nx*(Ny-1)+Nx-1;
1628 Element_pt[element_num] =
new ELEMENT;
1632 for(
unsigned l2=0;l2<n_p;l2++)
1634 finite_element_pt(element_num)->node_pt(l2) =
1635 finite_element_pt(element_num-Nx)->node_pt((n_p-1)*n_p + l2);
1639 for(
unsigned l1=1;l1<(n_p-1);l1++)
1642 finite_element_pt(element_num)->node_pt(n_p*l1)
1643 = finite_element_pt(element_num-1)->node_pt(n_p*l1+(n_p-1));
1646 for(
unsigned l2=1;l2<(n_p-1);l2++)
1648 local_node_num = n_p*l1+l2;
1650 Node_pt[node_count] =
1651 finite_element_pt(element_num)->
1652 construct_boundary_node(local_node_num,time_stepper_pt);
1654 finite_element_pt(element_num)->node_pt(local_node_num) =
1655 Node_pt[node_count];
1658 finite_element_pt(element_num)->
1659 local_fraction_of_node(local_node_num,s_fraction);
1662 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
1663 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1664 Node_pt[node_count]->x(2) = Zmin;
1667 add_boundary_node(0,Node_pt[node_count]);
1674 local_node_num = n_p*l1+(n_p-1);
1676 Node_pt[node_count] =
1677 finite_element_pt(element_num)->
1678 construct_boundary_node(local_node_num,time_stepper_pt);
1680 finite_element_pt(element_num)->node_pt(local_node_num) =
1681 Node_pt[node_count];
1684 finite_element_pt(element_num)->
1685 local_fraction_of_node(local_node_num,s_fraction);
1688 Node_pt[node_count]->x(0) = Xmax;
1689 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1690 Node_pt[node_count]->x(2) = Zmin;
1693 add_boundary_node(0,Node_pt[node_count]);
1694 add_boundary_node(2,Node_pt[node_count]);
1704 finite_element_pt(element_num)->node_pt(n_p*(n_p-1))
1705 = finite_element_pt(element_num-1)->node_pt(n_p*(n_p-1)+(n_p-1));
1708 for(
unsigned l2=1;l2<(n_p-1);l2++)
1710 local_node_num = n_p*(n_p-1)+l2;
1712 Node_pt[node_count] =
1713 finite_element_pt(element_num)->
1714 construct_boundary_node(local_node_num,time_stepper_pt);
1716 finite_element_pt(element_num)->node_pt(local_node_num) =
1717 Node_pt[node_count];
1720 finite_element_pt(element_num)->
1721 local_fraction_of_node(local_node_num,s_fraction);
1724 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
1725 Node_pt[node_count]->x(1) = Ymax;
1726 Node_pt[node_count]->x(2) = Zmin;
1729 add_boundary_node(0,Node_pt[node_count]);
1730 add_boundary_node(3,Node_pt[node_count]);
1739 local_node_num = n_p*(n_p-1)+(n_p-1);
1741 Node_pt[node_count] =
1742 finite_element_pt(element_num)->
1743 construct_boundary_node(local_node_num,time_stepper_pt);
1745 finite_element_pt(element_num)->node_pt(local_node_num) =
1746 Node_pt[node_count];
1749 finite_element_pt(element_num)->
1750 local_fraction_of_node(local_node_num,s_fraction);
1753 Node_pt[node_count]->x(0) = Xmax;
1754 Node_pt[node_count]->x(1) = Ymax;
1755 Node_pt[node_count]->x(2) = Zmin;
1758 add_boundary_node(0,Node_pt[node_count]);
1759 add_boundary_node(2,Node_pt[node_count]);
1760 add_boundary_node(3,Node_pt[node_count]);
1767 for(
unsigned l3=1;l3<n_p;l3++)
1771 for(
unsigned l2=0;l2<n_p;l2++)
1773 finite_element_pt(element_num)->node_pt(l2+l3*n_p*n_p) =
1774 finite_element_pt(element_num-Nx)->node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
1778 for(
unsigned l1=1;l1<(n_p-1);l1++)
1781 finite_element_pt(element_num)->node_pt(n_p*l1 + l3*n_p*n_p)
1782 = finite_element_pt(element_num-1)->node_pt(n_p*l1+(n_p-1)+l3*n_p*n_p);
1785 for(
unsigned l2=1;l2<(n_p-1);l2++)
1788 local_node_num = n_p*l1+l2 + l3*n_p*n_p;
1790 Node_pt[node_count] =
1791 finite_element_pt(element_num)->
1792 construct_node(local_node_num,time_stepper_pt);
1794 finite_element_pt(element_num)->node_pt(local_node_num)
1795 = Node_pt[node_count];
1798 finite_element_pt(element_num)->
1799 local_fraction_of_node(local_node_num,s_fraction);
1802 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
1803 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1804 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1814 local_node_num = n_p*l1+(n_p-1) + l3*n_p*n_p;
1816 Node_pt[node_count] =
1817 finite_element_pt(element_num)->
1818 construct_boundary_node(local_node_num,time_stepper_pt);
1820 finite_element_pt(element_num)->node_pt(local_node_num)
1821 = Node_pt[node_count];
1824 finite_element_pt(element_num)->
1825 local_fraction_of_node(local_node_num,s_fraction);
1828 Node_pt[node_count]->x(0) = Xmax;
1829 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
1830 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1833 add_boundary_node(2,Node_pt[node_count]);
1841 finite_element_pt(element_num)->node_pt(n_p*(n_p-1)+l3*n_p*n_p)
1842 = finite_element_pt(element_num-1)->node_pt(n_p*(n_p-1)+(n_p-1)+l3*n_p*n_p);
1845 for(
unsigned l2=1;l2<(n_p-1);l2++)
1848 local_node_num = n_p*(n_p-1)+l2+l3*n_p*n_p;
1850 Node_pt[node_count] =
1851 finite_element_pt(element_num)->
1852 construct_boundary_node(local_node_num,time_stepper_pt);
1854 finite_element_pt(element_num)->node_pt(local_node_num)
1855 = Node_pt[node_count];
1858 finite_element_pt(element_num)->
1859 local_fraction_of_node(local_node_num,s_fraction);
1862 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
1863 Node_pt[node_count]->x(1) = Ymax;
1864 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1867 add_boundary_node(3,Node_pt[node_count]);
1874 local_node_num = n_p*(n_p-1)+(n_p-1)+ l3*n_p*n_p;
1876 Node_pt[node_count] =
1877 finite_element_pt(element_num)->
1878 construct_boundary_node(local_node_num,time_stepper_pt);
1880 finite_element_pt(element_num)->node_pt(local_node_num)
1881 = Node_pt[node_count];
1884 finite_element_pt(element_num)->
1885 local_fraction_of_node(local_node_num,s_fraction);
1888 Node_pt[node_count]->x(0) = Xmax;
1889 Node_pt[node_count]->x(1) = Ymax;
1890 Node_pt[node_count]->x(2) = Zmin + el_length[2]*s_fraction[2];
1893 add_boundary_node(2,Node_pt[node_count]);
1894 add_boundary_node(3,Node_pt[node_count]);
1911 for(
unsigned k=1;k<(Nz-1);k++)
1919 element_num = k*Nx*Ny;
1920 Element_pt[element_num] =
new ELEMENT;
1923 for(
unsigned l1 = 0;l1<n_p; l1++)
1925 for(
unsigned l2= 0;l2< n_p; l2++)
1927 finite_element_pt(element_num)->node_pt(l2+n_p*l1)
1928 = finite_element_pt(element_num - Nx*Ny)->
1929 node_pt(l2+n_p*l1+n_p*n_p*(n_p-1));
1936 for(
unsigned l3=1;l3<n_p;l3++)
1940 local_node_num = n_p*n_p*l3;
1943 Node_pt[node_count] =
1944 finite_element_pt(element_num)->
1945 construct_boundary_node(local_node_num,time_stepper_pt);
1948 finite_element_pt(element_num)->node_pt(local_node_num)
1949 = Node_pt[node_count];
1952 finite_element_pt(element_num)->
1953 local_fraction_of_node(local_node_num,s_fraction);
1956 Node_pt[node_count]->x(0) = Xmin;
1957 Node_pt[node_count]->x(1) = Ymin;
1958 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
1961 add_boundary_node(1,Node_pt[node_count]);
1962 add_boundary_node(4,Node_pt[node_count]);
1968 for(
unsigned l2=1;l2<n_p;l2++)
1971 local_node_num = l2+n_p*n_p*l3;
1974 Node_pt[node_count] =
1975 finite_element_pt(element_num)->
1976 construct_boundary_node(local_node_num,time_stepper_pt);
1978 finite_element_pt(element_num)->node_pt(local_node_num)
1979 = Node_pt[node_count];
1982 finite_element_pt(element_num)->
1983 local_fraction_of_node(local_node_num,s_fraction);
1986 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
1987 Node_pt[node_count]->x(1) = Ymin;
1988 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
1991 add_boundary_node(1,Node_pt[node_count]);
1997 for(
unsigned l1=1;l1<n_p;l1++)
2000 local_node_num = l1*n_p+n_p*n_p*l3;
2003 Node_pt[node_count] =
2004 finite_element_pt(element_num)->
2005 construct_boundary_node(local_node_num,time_stepper_pt);
2007 finite_element_pt(element_num)->node_pt(local_node_num)
2008 = Node_pt[node_count];
2011 finite_element_pt(element_num)->
2012 local_fraction_of_node(local_node_num,s_fraction);
2015 Node_pt[node_count]->x(0) = Xmin;
2016 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
2017 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2020 add_boundary_node(4,Node_pt[node_count]);
2025 for(
unsigned l2=1;l2<n_p;l2++)
2028 local_node_num = l1*n_p+l2+n_p*n_p*l3;
2031 Node_pt[node_count] =
2032 finite_element_pt(element_num)->
2033 construct_node(local_node_num,time_stepper_pt);
2035 finite_element_pt(element_num)->node_pt(local_node_num)
2036 = Node_pt[node_count];
2039 finite_element_pt(element_num)->
2040 local_fraction_of_node(local_node_num,s_fraction);
2043 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
2044 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
2045 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2063 for(
unsigned j=1;j<(Nx-1);j++)
2066 element_num = j+k*Nx*Ny;
2067 Element_pt[element_num] =
new ELEMENT;
2070 for(
unsigned l1 = 0; l1<n_p; l1++)
2072 for(
unsigned l2= 0; l2< n_p; l2++)
2074 finite_element_pt(j + k*Nx*Ny)->node_pt(l2 + n_p*l1) =
2075 finite_element_pt(j + (k-1)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
2080 for(
unsigned l3 =1; l3<n_p;l3++)
2083 finite_element_pt(j+k*Nx*Ny)->node_pt(l3*n_p*n_p) =
2084 finite_element_pt(j-1+k*Nx*Ny)->node_pt(l3*n_p*n_p+(n_p-1));
2087 for(
unsigned l2=1;l2<n_p;l2++)
2090 local_node_num = l2+l3*n_p*n_p;
2093 Node_pt[node_count] =
2094 finite_element_pt(element_num)->
2095 construct_boundary_node(local_node_num,time_stepper_pt);
2097 finite_element_pt(element_num)->node_pt(local_node_num)
2098 = Node_pt[node_count];
2101 finite_element_pt(element_num)->
2102 local_fraction_of_node(local_node_num,s_fraction);
2105 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
2106 Node_pt[node_count]->x(1) = Ymin;
2107 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2110 add_boundary_node(1,Node_pt[node_count]);
2116 for(
unsigned l1=1;l1<n_p;l1++)
2119 finite_element_pt(j+k*Nx*Ny)->node_pt(l1*n_p+l3*n_p*n_p) = finite_element_pt(j-1+k*Nx*Ny)->node_pt(l1*n_p+(n_p-1)+l3*n_p*n_p);
2122 for(
unsigned l2=1;l2<n_p;l2++)
2125 local_node_num = l1*n_p+l2+l3*n_p*n_p;
2128 Node_pt[node_count] =
2129 finite_element_pt(element_num)->
2130 construct_node(local_node_num,time_stepper_pt);
2132 finite_element_pt(element_num)->node_pt(local_node_num)
2133 = Node_pt[node_count];
2136 finite_element_pt(element_num)->
2137 local_fraction_of_node(local_node_num,s_fraction);
2140 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
2141 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
2142 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2158 element_num = Nx-1+k*Nx*Ny;
2159 Element_pt[element_num] =
new ELEMENT;
2162 for(
unsigned l1 = 0; l1<n_p; l1++)
2164 for(
unsigned l2= 0; l2< n_p; l2++)
2166 finite_element_pt(Nx-1+k*Nx*Ny)->node_pt(l2 + n_p*l1)
2167 = finite_element_pt(Nx-1+(k-1)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
2173 for(
unsigned l3 =1; l3<n_p;l3++)
2176 finite_element_pt(Nx-1+k*Nx*Ny)->node_pt(l3*n_p*n_p) = finite_element_pt(Nx-2+k*Nx*Ny)->node_pt(l3*n_p*n_p+(n_p-1));
2179 for(
unsigned l2=1;l2<(n_p-1);l2++)
2182 local_node_num = l2+l3*n_p*n_p;
2185 Node_pt[node_count] =
2186 finite_element_pt(element_num)->
2187 construct_boundary_node(local_node_num,time_stepper_pt);
2189 finite_element_pt(element_num)->node_pt(local_node_num)
2190 = Node_pt[node_count];
2193 finite_element_pt(element_num)->
2194 local_fraction_of_node(local_node_num,s_fraction);
2197 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
2198 Node_pt[node_count]->x(1) = Ymin;
2199 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2202 add_boundary_node(1,Node_pt[node_count]);
2210 local_node_num = (n_p-1)+l3*n_p*n_p;
2213 Node_pt[node_count] =
2214 finite_element_pt(element_num)->
2215 construct_boundary_node(local_node_num,time_stepper_pt);
2217 finite_element_pt(element_num)->node_pt(local_node_num)
2218 = Node_pt[node_count];
2221 finite_element_pt(element_num)->
2222 local_fraction_of_node(local_node_num,s_fraction);
2225 Node_pt[node_count]->x(0) = Xmax;
2226 Node_pt[node_count]->x(1) = Ymin;
2227 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2230 add_boundary_node(1,Node_pt[node_count]);
2231 add_boundary_node(2,Node_pt[node_count]);
2236 for(
unsigned l1=1;l1<n_p;l1++)
2239 finite_element_pt(Nx-1+k*Nx*Ny)->node_pt(l1*n_p+l3*n_p*n_p) = finite_element_pt(Nx-2+k*Nx*Ny)->node_pt(l1*n_p+(n_p-1)+l3*n_p*n_p);
2242 for(
unsigned l2=1;l2<(n_p-1);l2++)
2245 local_node_num = l1*n_p+l2+l3*n_p*n_p;
2248 Node_pt[node_count] =
2249 finite_element_pt(element_num)->
2250 construct_node(local_node_num,time_stepper_pt);
2252 finite_element_pt(element_num)->node_pt(local_node_num)
2253 = Node_pt[node_count];
2256 finite_element_pt(element_num)->
2257 local_fraction_of_node(local_node_num,s_fraction);
2260 Node_pt[node_count]->x(0) = Xmin +
2261 el_length[0]*(Nx-1 + s_fraction[0]);
2262 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
2263 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2273 local_node_num = l1*n_p+(n_p-1)+l3*n_p*n_p;
2275 Node_pt[node_count] =
2276 finite_element_pt(element_num)->
2277 construct_boundary_node(local_node_num,time_stepper_pt);
2279 finite_element_pt(element_num)->node_pt(local_node_num)
2280 = Node_pt[node_count];
2283 finite_element_pt(element_num)->
2284 local_fraction_of_node(local_node_num,s_fraction);
2288 Node_pt[node_count]->x(0) = Xmax;
2289 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
2290 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2293 add_boundary_node(2,Node_pt[node_count]);
2306 for(
unsigned i=1;i<(Ny-1);i++)
2311 element_num = Nx*i+Nx*Ny*k;
2312 Element_pt[element_num] =
new ELEMENT;
2315 for(
unsigned l1 = 0; l1<n_p; l1++)
2317 for(
unsigned l2= 0; l2< n_p; l2++)
2319 finite_element_pt(Nx*i+k*Nx*Ny)->node_pt(l2 + n_p*l1) = finite_element_pt(Nx*i+(k-1)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
2325 for(
unsigned l3=1;l3<n_p;l3++)
2328 for(
unsigned l2=0;l2<n_p;l2++)
2330 finite_element_pt(Nx*i+k*Nx*Ny)->node_pt(l2+l3*n_p*n_p) = finite_element_pt(Nx*(i-1)+k*Nx*Ny)->node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
2334 for(
unsigned l1=1;l1<n_p;l1++)
2339 local_node_num = l1*n_p+l3*n_p*n_p;
2342 Node_pt[node_count] =
2343 finite_element_pt(element_num)->
2344 construct_boundary_node(local_node_num,time_stepper_pt);
2346 finite_element_pt(element_num)->node_pt(local_node_num)
2347 = Node_pt[node_count];
2350 finite_element_pt(element_num)->
2351 local_fraction_of_node(local_node_num,s_fraction);
2354 Node_pt[node_count]->x(0) = Xmin;
2355 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
2356 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2359 add_boundary_node(4,Node_pt[node_count]);
2365 for(
unsigned l2=1;l2<n_p;l2++)
2368 local_node_num = l1*n_p+l2+n_p*n_p*l3;
2371 Node_pt[node_count] =
2372 finite_element_pt(element_num)->
2373 construct_node(local_node_num,time_stepper_pt);
2375 finite_element_pt(element_num)->node_pt(local_node_num)
2376 = Node_pt[node_count];
2379 finite_element_pt(element_num)->
2380 local_fraction_of_node(local_node_num,s_fraction);
2383 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
2384 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
2385 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2398 for(
unsigned j=1;j<(Nx-1);j++)
2401 element_num = Nx*i+j+k*Nx*Ny;
2402 Element_pt[element_num] =
new ELEMENT;
2405 for(
unsigned l1 = 0; l1<n_p; l1++)
2407 for(
unsigned l2= 0; l2< n_p; l2++)
2409 finite_element_pt(Nx*i+j+k*Nx*Ny)->node_pt(l2 + n_p*l1) = finite_element_pt(Nx*i+j+(k-1)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
2415 for(
unsigned l3 = 1;l3<n_p;l3++)
2419 for(
unsigned l2=0;l2<n_p;l2++)
2421 finite_element_pt(Nx*i+j+k*Nx*Ny)->node_pt(l2+l3*n_p*n_p) = finite_element_pt(Nx*(i-1)+j+k*Nx*Ny)->node_pt((n_p-1)*n_p+l2+l3*n_p*n_p);
2424 for(
unsigned l1=1;l1<n_p;l1++)
2427 finite_element_pt(Nx*i+j+k*Nx*Ny)->node_pt(l1*n_p+l3*n_p*n_p)=finite_element_pt(Nx*i+(j-1)+k*Nx*Ny)->node_pt(l1*n_p+l3*n_p*n_p+(n_p-1));
2430 for(
unsigned l2=1;l2<n_p;l2++)
2433 local_node_num = l1*n_p+l2+l3*n_p*n_p;
2436 Node_pt[node_count] =
2437 finite_element_pt(element_num)->
2438 construct_node(local_node_num,time_stepper_pt);
2440 finite_element_pt(element_num)->node_pt(local_node_num)
2441 = Node_pt[node_count];
2443 finite_element_pt(element_num)->
2444 local_fraction_of_node(local_node_num,s_fraction);
2448 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
2449 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
2450 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2467 element_num = Nx*i+Nx-1+k*Nx*Ny;
2468 Element_pt[element_num] =
new ELEMENT;
2471 for(
unsigned l1 = 0; l1<n_p; l1++)
2473 for(
unsigned l2= 0; l2< n_p; l2++)
2475 finite_element_pt(Nx*i+Nx-1+k*Nx*Ny)->node_pt(l2 + n_p*l1)=finite_element_pt(Nx*i+Nx-1+(k-1)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
2481 for(
unsigned l3=1;l3<n_p;l3++)
2485 for(
unsigned l2=0;l2<n_p;l2++)
2487 finite_element_pt(Nx*i+Nx-1+k*Nx*Ny)->node_pt(l2+l3*n_p*n_p) =
2488 finite_element_pt(Nx*(i-1)+Nx-1+k*Nx*Ny)->node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
2491 for(
unsigned l1=1;l1<n_p;l1++)
2494 finite_element_pt(Nx*i+Nx-1+k*Nx*Ny)->node_pt(l1*n_p + l3*n_p*n_p) =
2495 finite_element_pt(Nx*i+Nx-2+k*Nx*Ny)->node_pt(l1*n_p+(n_p-1) + l3*n_p*n_p);
2498 for(
unsigned l2=1;l2<(n_p-1);l2++)
2501 local_node_num = l1*n_p+l2 + l3*n_p*n_p;
2504 Node_pt[node_count] =
2505 finite_element_pt(element_num)->
2506 construct_node(local_node_num,time_stepper_pt);
2508 finite_element_pt(element_num)->node_pt(local_node_num)
2509 = Node_pt[node_count];
2512 finite_element_pt(element_num)->
2513 local_fraction_of_node(local_node_num,s_fraction);
2516 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
2517 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
2518 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2529 local_node_num = l1*n_p+(n_p-1) + l3*n_p*n_p;
2532 Node_pt[node_count] =
2533 finite_element_pt(element_num)->
2534 construct_boundary_node(local_node_num,time_stepper_pt);
2536 finite_element_pt(element_num)->node_pt(local_node_num)
2537 = Node_pt[node_count];
2540 finite_element_pt(element_num)->
2541 local_fraction_of_node(local_node_num,s_fraction);
2544 Node_pt[node_count]->x(0) = Xmax;
2545 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
2546 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2549 add_boundary_node(2,Node_pt[node_count]);
2572 element_num = Nx*(Ny-1)+k*Nx*Ny;
2573 Element_pt[element_num] =
new ELEMENT;
2576 for(
unsigned l1 = 0; l1<n_p; l1++)
2578 for(
unsigned l2= 0; l2< n_p; l2++)
2580 finite_element_pt(Nx*(Ny-1)+k*Nx*Ny)->node_pt(l2 + n_p*l1)=finite_element_pt(Nx*(Ny-1)+(k-1)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
2585 for(
unsigned l3=1;l3<n_p;l3++)
2588 for(
unsigned l2=0;l2<n_p;l2++)
2590 finite_element_pt(Nx*(Ny-1)+k*Nx*Ny)->node_pt(l2 + l3*n_p*n_p)
2591 = finite_element_pt(Nx*(Ny-2)+k*Nx*Ny)->node_pt((n_p-1)*n_p + l2 + l3*n_p*n_p);
2596 for(
unsigned l1=1;l1<(n_p-1);l1++)
2599 local_node_num = n_p*l1 + l3*n_p*n_p;
2602 Node_pt[node_count] =
2603 finite_element_pt(element_num)->
2604 construct_boundary_node(local_node_num,time_stepper_pt);
2606 finite_element_pt(element_num)->node_pt(local_node_num)
2607 = Node_pt[node_count];
2610 finite_element_pt(element_num)->
2611 local_fraction_of_node(local_node_num,s_fraction);
2614 Node_pt[node_count]->x(0) = Xmin;
2615 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
2616 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2619 add_boundary_node(4,Node_pt[node_count]);
2625 for(
unsigned l2=1;l2<n_p;l2++)
2628 local_node_num = n_p*l1+l2 + l3*n_p*n_p;
2631 Node_pt[node_count] =
2632 finite_element_pt(element_num)->
2633 construct_node(local_node_num,time_stepper_pt);
2635 finite_element_pt(element_num)->node_pt(local_node_num)
2636 = Node_pt[node_count];
2639 finite_element_pt(element_num)->
2640 local_fraction_of_node(local_node_num,s_fraction);
2643 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
2644 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
2645 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2658 local_node_num = n_p*(n_p-1) + l3 * n_p * n_p;
2660 Node_pt[node_count] =
2661 finite_element_pt(element_num)->
2662 construct_boundary_node(local_node_num,time_stepper_pt);
2664 finite_element_pt(element_num)->node_pt(local_node_num)
2665 = Node_pt[node_count];
2668 finite_element_pt(element_num)->
2669 local_fraction_of_node(local_node_num,s_fraction);
2672 Node_pt[node_count]->x(0) = Xmin;
2673 Node_pt[node_count]->x(1) = Ymax;
2674 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2677 add_boundary_node(3,Node_pt[node_count]);
2678 add_boundary_node(4,Node_pt[node_count]);
2684 for(
unsigned l2=1;l2<n_p;l2++)
2687 local_node_num = n_p*(n_p-1)+l2 + l3*n_p*n_p;
2689 Node_pt[node_count] =
2690 finite_element_pt(element_num)->
2691 construct_boundary_node(local_node_num,time_stepper_pt);
2693 finite_element_pt(element_num)->node_pt(local_node_num)
2694 = Node_pt[node_count];
2697 finite_element_pt(element_num)->
2698 local_fraction_of_node(local_node_num,s_fraction);
2701 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
2702 Node_pt[node_count]->x(1) = Ymax;
2703 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2706 add_boundary_node(3,Node_pt[node_count]);
2716 for(
unsigned j=1;j<(Nx-1);j++)
2719 element_num = Nx*(Ny-1)+j+k*Nx*Ny;
2720 Element_pt[element_num] =
new ELEMENT;
2723 for(
unsigned l1 = 0; l1<n_p; l1++)
2725 for(
unsigned l2= 0; l2< n_p; l2++)
2727 finite_element_pt(Nx*(Ny-1)+j+k*Nx*Ny)->node_pt(l2 + n_p*l1) =
2728 finite_element_pt(Nx*(Ny-1)+j+(k-1)*Nx*Ny)->
2729 node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
2735 for(
unsigned l3=1;l3<n_p;l3++)
2738 for(
unsigned l2=0;l2<n_p;l2++)
2740 finite_element_pt(Nx*(Ny-1)+j+k*Nx*Ny)->node_pt(l2 + l3*n_p*n_p) =
2741 finite_element_pt(Nx*(Ny-2)+j+k*Nx*Ny)->
2742 node_pt((n_p-1)*n_p + l2 + l3*n_p*n_p);
2746 for(
unsigned l1=1;l1<(n_p-1);l1++)
2749 finite_element_pt(Nx*(Ny-1)+j+k*Nx*Ny)->node_pt(n_p*l1+l3*n_p*n_p)
2750 = finite_element_pt(Nx*(Ny-1)+(j-1)+k*Nx*Ny)->node_pt(n_p*l1+(n_p-1)+l3*n_p*n_p);
2753 for(
unsigned l2=1;l2<n_p;l2++)
2756 local_node_num = n_p*l1+l2+l3*n_p*n_p;
2758 Node_pt[node_count] =
2759 finite_element_pt(element_num)->
2760 construct_node(local_node_num,time_stepper_pt);
2763 finite_element_pt(element_num)->node_pt(local_node_num)
2764 = Node_pt[node_count];
2767 finite_element_pt(element_num)->
2768 local_fraction_of_node(local_node_num,s_fraction);
2771 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
2772 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
2773 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2784 finite_element_pt(Nx*(Ny-1)+j+k*Nx*Ny)->node_pt(n_p*(n_p-1) + l3*n_p*n_p)
2785 = finite_element_pt(Nx*(Ny-1)+(j-1)+k*Nx*Ny)->node_pt(n_p*(n_p-1)+(n_p-1)+l3*n_p*n_p);
2787 for(
unsigned l2=1;l2<n_p;l2++)
2790 local_node_num = n_p*(n_p-1)+l2 + l3*n_p*n_p;
2792 Node_pt[node_count] =
2793 finite_element_pt(element_num)->
2794 construct_boundary_node(local_node_num,time_stepper_pt);
2796 finite_element_pt(element_num)->node_pt(local_node_num)
2797 = Node_pt[node_count];
2800 finite_element_pt(element_num)->
2801 local_fraction_of_node(local_node_num,s_fraction);
2804 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
2805 Node_pt[node_count]->x(1) = Ymax;
2806 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2809 add_boundary_node(3,Node_pt[node_count]);
2824 element_num = Nx*(Ny-1)+Nx-1+k*Nx*Ny;
2825 Element_pt[element_num] =
new ELEMENT;
2828 for(
unsigned l1 = 0; l1<n_p;l1++)
2830 for(
unsigned l2= 0;l2<n_p;l2++)
2832 finite_element_pt(Nx*(Ny-1)+Nx-1+k*Nx*Ny)->node_pt(l2 + n_p*l1)=
2833 finite_element_pt(Nx*(Ny-1)+Nx-1+(k-1)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
2841 for(
unsigned l3=1;l3<n_p;l3++)
2845 for(
unsigned l2=0;l2<n_p;l2++)
2847 finite_element_pt(Nx*(Ny-1)+Nx-1+k*Nx*Ny)->node_pt(l2+l3*n_p*n_p) =
2848 finite_element_pt(Nx*(Ny-2)+Nx-1+k*Nx*Ny)->
2849 node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
2853 for(
unsigned l1=1;l1<(n_p-1);l1++)
2856 finite_element_pt(Nx*(Ny-1)+Nx-1+k*Nx*Ny)->node_pt(n_p*l1 + l3*n_p*n_p)
2857 = finite_element_pt(Nx*(Ny-1)+Nx-2+k*Nx*Ny)->
2858 node_pt(n_p*l1+(n_p-1)+l3*n_p*n_p);
2861 for(
unsigned l2=1;l2<(n_p-1);l2++)
2864 local_node_num = n_p*l1+l2 + l3*n_p*n_p;
2866 Node_pt[node_count] =
2867 finite_element_pt(element_num)->
2868 construct_node(local_node_num,time_stepper_pt);
2870 finite_element_pt(element_num)->node_pt(local_node_num)
2871 = Node_pt[node_count];
2873 finite_element_pt(element_num)->
2874 local_fraction_of_node(local_node_num,s_fraction);
2878 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
2879 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
2880 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2890 local_node_num = n_p*l1+(n_p-1) + l3*n_p*n_p;
2892 Node_pt[node_count] =
2893 finite_element_pt(element_num)->
2894 construct_boundary_node(local_node_num,time_stepper_pt);
2896 finite_element_pt(element_num)->node_pt(local_node_num)
2897 = Node_pt[node_count];
2900 finite_element_pt(element_num)->
2901 local_fraction_of_node(local_node_num,s_fraction);
2904 Node_pt[node_count]->x(0) = Xmax;
2905 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
2906 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2909 add_boundary_node(2,Node_pt[node_count]);
2918 finite_element_pt(Nx*(Ny-1)+Nx-1+k*Nx*Ny)->node_pt(n_p*(n_p-1)+l3*n_p*n_p)
2919 = finite_element_pt(Nx*(Ny-1)+Nx-2+k*Nx*Ny)->
2920 node_pt(n_p*(n_p-1)+(n_p-1)+l3*n_p*n_p);
2923 for(
unsigned l2=1;l2<(n_p-1);l2++)
2926 local_node_num = n_p*(n_p-1)+l2+l3*n_p*n_p;
2928 Node_pt[node_count] =
2929 finite_element_pt(element_num)->
2930 construct_boundary_node(local_node_num,time_stepper_pt);
2932 finite_element_pt(element_num)->node_pt(local_node_num)
2933 = Node_pt[node_count];
2936 finite_element_pt(element_num)->
2937 local_fraction_of_node(local_node_num,s_fraction);
2940 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
2941 Node_pt[node_count]->x(1) = Ymax;
2942 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2945 add_boundary_node(3,Node_pt[node_count]);
2953 local_node_num = n_p*(n_p-1)+(n_p-1)+ l3*n_p*n_p;
2955 Node_pt[node_count] =
2956 finite_element_pt(element_num)->
2957 construct_boundary_node(local_node_num,time_stepper_pt);
2959 finite_element_pt(element_num)->node_pt(local_node_num)
2960 = Node_pt[node_count];
2963 finite_element_pt(element_num)->
2964 local_fraction_of_node(local_node_num,s_fraction);
2967 Node_pt[node_count]->x(0) = Xmax;
2968 Node_pt[node_count]->x(1) = Ymax;
2969 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(k + s_fraction[2]);
2972 add_boundary_node(2,Node_pt[node_count]);
2973 add_boundary_node(3,Node_pt[node_count]);
2992 element_num = (Nz-1)*Nx*Ny;
2993 Element_pt[element_num] =
new ELEMENT;
2996 for(
unsigned l1 = 0;l1<n_p; l1++)
2998 for(
unsigned l2= 0;l2< n_p; l2++)
3000 finite_element_pt((Nz-1)*Nx*Ny)->node_pt(l2+n_p*l1) = finite_element_pt((Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+n_p*n_p*(n_p-1));
3007 for(
unsigned l3=1;l3<(n_p-1);l3++)
3011 local_node_num = n_p*n_p*l3;
3014 Node_pt[node_count] =
3015 finite_element_pt(element_num)->
3016 construct_boundary_node(local_node_num,time_stepper_pt);
3019 finite_element_pt(element_num)->node_pt(local_node_num)
3020 = Node_pt[node_count];
3022 finite_element_pt(element_num)->
3023 local_fraction_of_node(local_node_num,s_fraction);
3027 Node_pt[node_count]->x(0) = Xmin;
3028 Node_pt[node_count]->x(1) = Ymin;
3029 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3032 add_boundary_node(1,Node_pt[node_count]);
3033 add_boundary_node(4,Node_pt[node_count]);
3039 for(
unsigned l2=1;l2<n_p;l2++)
3042 local_node_num = l2+n_p*n_p*l3;
3045 Node_pt[node_count] =
3046 finite_element_pt(element_num)->
3047 construct_boundary_node(local_node_num,time_stepper_pt);
3049 finite_element_pt(element_num)->node_pt(local_node_num)
3050 = Node_pt[node_count];
3052 finite_element_pt(element_num)->
3053 local_fraction_of_node(local_node_num,s_fraction);
3057 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
3058 Node_pt[node_count]->x(1) = Ymin;
3059 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3062 add_boundary_node(1,Node_pt[node_count]);
3068 for(
unsigned l1=1;l1<n_p;l1++)
3071 local_node_num = l1*n_p+n_p*n_p*l3;
3074 Node_pt[node_count] =
3075 finite_element_pt(element_num)->
3076 construct_boundary_node(local_node_num,time_stepper_pt);
3078 finite_element_pt(element_num)->node_pt(local_node_num)
3079 = Node_pt[node_count];
3082 finite_element_pt(element_num)->
3083 local_fraction_of_node(local_node_num,s_fraction);
3086 Node_pt[node_count]->x(0) = Xmin;
3087 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3088 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3091 add_boundary_node(4,Node_pt[node_count]);
3096 for(
unsigned l2=1;l2<n_p;l2++)
3099 local_node_num = l1*n_p+l2+n_p*n_p*l3;
3102 Node_pt[node_count] =
3103 finite_element_pt(element_num)->
3104 construct_node(local_node_num,time_stepper_pt);
3106 finite_element_pt(element_num)->node_pt(local_node_num)
3107 = Node_pt[node_count];
3110 finite_element_pt(element_num)->
3111 local_fraction_of_node(local_node_num,s_fraction);
3114 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
3115 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3116 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3130 local_node_num = n_p*n_p*(n_p-1);
3133 Node_pt[node_count] =
3134 finite_element_pt(element_num)->
3135 construct_boundary_node(local_node_num,time_stepper_pt);
3138 finite_element_pt(element_num)->node_pt(local_node_num)
3139 = Node_pt[node_count];
3142 finite_element_pt(element_num)->
3143 local_fraction_of_node(local_node_num,s_fraction);
3146 Node_pt[node_count]->x(0) = Xmin;
3147 Node_pt[node_count]->x(1) = Ymin;
3148 Node_pt[node_count]->x(2) = Zmax;
3151 add_boundary_node(1,Node_pt[node_count]);
3152 add_boundary_node(4,Node_pt[node_count]);
3153 add_boundary_node(5,Node_pt[node_count]);
3159 for(
unsigned l2=1;l2<n_p;l2++)
3162 local_node_num = l2+n_p*n_p*(n_p-1);
3165 Node_pt[node_count] =
3166 finite_element_pt(element_num)->
3167 construct_boundary_node(local_node_num,time_stepper_pt);
3169 finite_element_pt(element_num)->node_pt(local_node_num)
3170 = Node_pt[node_count];
3173 finite_element_pt(element_num)->
3174 local_fraction_of_node(local_node_num,s_fraction);
3177 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
3178 Node_pt[node_count]->x(1) = Ymin;
3179 Node_pt[node_count]->x(2) = Zmax;
3182 add_boundary_node(1,Node_pt[node_count]);
3183 add_boundary_node(5,Node_pt[node_count]);
3189 for(
unsigned l1=1;l1<n_p;l1++)
3192 local_node_num = l1*n_p+n_p*n_p*(n_p-1);
3195 Node_pt[node_count] =
3196 finite_element_pt(element_num)->
3197 construct_boundary_node(local_node_num,time_stepper_pt);
3199 finite_element_pt(element_num)->node_pt(local_node_num)
3200 = Node_pt[node_count];
3203 finite_element_pt(element_num)->
3204 local_fraction_of_node(local_node_num,s_fraction);
3207 Node_pt[node_count]->x(0) = Xmin;
3208 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3209 Node_pt[node_count]->x(2) = Zmax;
3212 add_boundary_node(4,Node_pt[node_count]);
3213 add_boundary_node(5,Node_pt[node_count]);
3218 for(
unsigned l2=1;l2<n_p;l2++)
3221 local_node_num = l1*n_p+l2+n_p*n_p*(n_p-1);
3224 Node_pt[node_count] =
3225 finite_element_pt(element_num)->
3226 construct_boundary_node(local_node_num,time_stepper_pt);
3228 finite_element_pt(element_num)->node_pt(local_node_num)
3229 = Node_pt[node_count];
3232 finite_element_pt(element_num)->
3233 local_fraction_of_node(local_node_num,s_fraction);
3236 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
3237 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3238 Node_pt[node_count]->x(2) = Zmax;
3241 add_boundary_node(5,Node_pt[node_count]);
3254 for(
unsigned j=1;j<(Nx-1);j++)
3257 element_num = j+(Nz-1)*Nx*Ny;
3258 Element_pt[element_num] =
new ELEMENT;
3261 for(
unsigned l1 = 0; l1<n_p; l1++)
3263 for(
unsigned l2= 0; l2< n_p; l2++)
3265 finite_element_pt(j + (Nz-1)*Nx*Ny)->node_pt(l2 + n_p*l1) =
3266 finite_element_pt(j + (Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
3271 for(
unsigned l3 =1; l3<(n_p-1);l3++)
3274 finite_element_pt(j+(Nz-1)*Nx*Ny)->node_pt(l3*n_p*n_p) = finite_element_pt(j-1+(Nz-1)*Nx*Ny)->node_pt(l3*n_p*n_p+(n_p-1));
3277 for(
unsigned l2=1;l2<n_p;l2++)
3280 local_node_num = l2+l3*n_p*n_p;
3283 Node_pt[node_count] =
3284 finite_element_pt(element_num)->
3285 construct_boundary_node(local_node_num,time_stepper_pt);
3287 finite_element_pt(element_num)->node_pt(local_node_num)
3288 = Node_pt[node_count];
3291 finite_element_pt(element_num)->
3292 local_fraction_of_node(local_node_num,s_fraction);
3295 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
3296 Node_pt[node_count]->x(1) = Ymin;
3297 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3300 add_boundary_node(1,Node_pt[node_count]);
3306 for(
unsigned l1=1;l1<n_p;l1++)
3309 finite_element_pt(j+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+l3*n_p*n_p) =
3310 finite_element_pt(j-1+(Nz-1)*Nx*Ny)->
3311 node_pt(l1*n_p+(n_p-1)+l3*n_p*n_p);
3314 for(
unsigned l2=1;l2<n_p;l2++)
3317 local_node_num = l1*n_p+l2+l3*n_p*n_p;
3320 Node_pt[node_count] =
3321 finite_element_pt(element_num)->
3322 construct_node(local_node_num,time_stepper_pt);
3324 finite_element_pt(element_num)->node_pt(local_node_num)
3325 = Node_pt[node_count];
3328 finite_element_pt(element_num)->
3329 local_fraction_of_node(local_node_num,s_fraction);
3332 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
3333 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3334 Node_pt[node_count]->x(2) =
3335 Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3349 finite_element_pt(j+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p*n_p) = finite_element_pt(j-1+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p*n_p+(n_p-1));
3352 for(
unsigned l2=1;l2<n_p;l2++)
3355 local_node_num = l2+(n_p-1)*n_p*n_p;
3358 Node_pt[node_count] =
3359 finite_element_pt(element_num)->
3360 construct_boundary_node(local_node_num,time_stepper_pt);
3362 finite_element_pt(element_num)->node_pt(local_node_num)
3363 = Node_pt[node_count];
3366 finite_element_pt(element_num)->
3367 local_fraction_of_node(local_node_num,s_fraction);
3370 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
3371 Node_pt[node_count]->x(1) = Ymin;
3372 Node_pt[node_count]->x(2) = Zmax;
3375 add_boundary_node(1,Node_pt[node_count]);
3376 add_boundary_node(5,Node_pt[node_count]);
3382 for(
unsigned l1=1;l1<n_p;l1++)
3385 finite_element_pt(j+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1)*n_p*n_p) =
3386 finite_element_pt(j-1+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1)+(n_p-1)*n_p*n_p);
3389 for(
unsigned l2=1;l2<n_p;l2++)
3392 local_node_num = l1*n_p+l2+(n_p-1)*n_p*n_p;
3395 Node_pt[node_count] =
3396 finite_element_pt(element_num)->
3397 construct_boundary_node(local_node_num,time_stepper_pt);
3399 finite_element_pt(element_num)->node_pt(local_node_num)
3400 = Node_pt[node_count];
3403 finite_element_pt(element_num)->
3404 local_fraction_of_node(local_node_num,s_fraction);
3407 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
3408 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3409 Node_pt[node_count]->x(2) = Zmax;
3412 add_boundary_node(5,Node_pt[node_count]);
3426 element_num = Nx-1+(Nz-1)*Nx*Ny;
3427 Element_pt[element_num] =
new ELEMENT;
3430 for(
unsigned l1 = 0; l1<n_p; l1++)
3432 for(
unsigned l2= 0; l2< n_p; l2++)
3434 finite_element_pt(Nx-1+(Nz-1)*Nx*Ny)->node_pt(l2 + n_p*l1) = finite_element_pt(Nx-1+(Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
3440 for(
unsigned l3 =1; l3<(n_p-1);l3++)
3443 finite_element_pt(Nx-1+(Nz-1)*Nx*Ny)->node_pt(l3*n_p*n_p) = finite_element_pt(Nx-2+(Nz-1)*Nx*Ny)->node_pt(l3*n_p*n_p+(n_p-1));
3446 for(
unsigned l2=1;l2<(n_p-1);l2++)
3449 local_node_num = l2+l3*n_p*n_p;
3452 Node_pt[node_count] =
3453 finite_element_pt(element_num)->
3454 construct_boundary_node(local_node_num,time_stepper_pt);
3456 finite_element_pt(element_num)->node_pt(local_node_num)
3457 = Node_pt[node_count];
3460 finite_element_pt(element_num)->
3461 local_fraction_of_node(local_node_num,s_fraction);
3464 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
3465 Node_pt[node_count]->x(1) = Ymin;
3466 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3469 add_boundary_node(1,Node_pt[node_count]);
3477 local_node_num = (n_p-1)+l3*n_p*n_p;
3480 Node_pt[node_count] =
3481 finite_element_pt(element_num)->
3482 construct_boundary_node(local_node_num,time_stepper_pt);
3484 finite_element_pt(element_num)->node_pt(local_node_num)
3485 = Node_pt[node_count];
3488 finite_element_pt(element_num)->
3489 local_fraction_of_node(local_node_num,s_fraction);
3492 Node_pt[node_count]->x(0) = Xmax;
3493 Node_pt[node_count]->x(1) = Ymin;
3494 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3497 add_boundary_node(1,Node_pt[node_count]);
3498 add_boundary_node(2,Node_pt[node_count]);
3503 for(
unsigned l1=1;l1<n_p;l1++)
3506 finite_element_pt(Nx-1+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+l3*n_p*n_p) =
3507 finite_element_pt(Nx-2+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1)+l3*n_p*n_p);
3510 for(
unsigned l2=1;l2<(n_p-1);l2++)
3513 local_node_num = l1*n_p+l2+l3*n_p*n_p;
3516 Node_pt[node_count] =
3517 finite_element_pt(element_num)->
3518 construct_node(local_node_num,time_stepper_pt);
3520 finite_element_pt(element_num)->node_pt(local_node_num)
3521 = Node_pt[node_count];
3524 finite_element_pt(element_num)->
3525 local_fraction_of_node(local_node_num,s_fraction);
3528 Node_pt[node_count]->x(0) =
3529 Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
3530 Node_pt[node_count]->x(1) =
3531 Ymin + el_length[1]*s_fraction[1];
3532 Node_pt[node_count]->x(2) =
3533 Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3543 local_node_num = l1*n_p+(n_p-1)+l3*n_p*n_p;
3545 Node_pt[node_count] =
3546 finite_element_pt(element_num)->
3547 construct_boundary_node(local_node_num,time_stepper_pt);
3549 finite_element_pt(element_num)->node_pt(local_node_num)
3550 = Node_pt[node_count];
3553 Node_pt[node_count]->x(0) = Xmax;
3554 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3555 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3558 add_boundary_node(2,Node_pt[node_count]);
3567 finite_element_pt(Nx-1+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p*n_p) = finite_element_pt(Nx-2+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p*n_p+(n_p-1));
3570 for(
unsigned l2=1;l2<(n_p-1);l2++)
3573 local_node_num = l2+(n_p-1)*n_p*n_p;
3576 Node_pt[node_count] =
3577 finite_element_pt(element_num)->
3578 construct_boundary_node(local_node_num,time_stepper_pt);
3580 finite_element_pt(element_num)->node_pt(local_node_num)
3581 = Node_pt[node_count];
3584 finite_element_pt(element_num)->
3585 local_fraction_of_node(local_node_num,s_fraction);
3588 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
3589 Node_pt[node_count]->x(1) = Ymin;
3590 Node_pt[node_count]->x(2) = Zmax;
3593 add_boundary_node(1,Node_pt[node_count]);
3594 add_boundary_node(5,Node_pt[node_count]);
3603 local_node_num = (n_p-1)+(n_p-1)*n_p*n_p;
3606 Node_pt[node_count] =
3607 finite_element_pt(element_num)->
3608 construct_boundary_node(local_node_num,time_stepper_pt);
3610 finite_element_pt(element_num)->node_pt(local_node_num)
3611 = Node_pt[node_count];
3614 finite_element_pt(element_num)->
3615 local_fraction_of_node(local_node_num,s_fraction);
3618 Node_pt[node_count]->x(0) = Xmax;
3619 Node_pt[node_count]->x(1) = Ymin;
3620 Node_pt[node_count]->x(2) = Zmax;
3623 add_boundary_node(1,Node_pt[node_count]);
3624 add_boundary_node(2,Node_pt[node_count]);
3625 add_boundary_node(5,Node_pt[node_count]);
3630 for(
unsigned l1=1;l1<n_p;l1++)
3633 finite_element_pt(Nx-1+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1)*n_p*n_p) =
3634 finite_element_pt(Nx-2+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1)+(n_p-1)*n_p*n_p);
3637 for(
unsigned l2=1;l2<(n_p-1);l2++)
3640 local_node_num = l1*n_p+l2+(n_p-1)*n_p*n_p;
3643 Node_pt[node_count] =
3644 finite_element_pt(element_num)->
3645 construct_boundary_node(local_node_num,time_stepper_pt);
3647 finite_element_pt(element_num)->node_pt(local_node_num)
3648 = Node_pt[node_count];
3651 finite_element_pt(element_num)->
3652 local_fraction_of_node(local_node_num,s_fraction);
3655 Node_pt[node_count]->x(0) =
3656 Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
3657 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3658 Node_pt[node_count]->x(2) = Zmax;
3661 add_boundary_node(5,Node_pt[node_count]);
3669 local_node_num = l1*n_p+(n_p-1)+(n_p-1)*n_p*n_p;
3671 Node_pt[node_count] =
3672 finite_element_pt(element_num)->
3673 construct_boundary_node(local_node_num,time_stepper_pt);
3675 finite_element_pt(element_num)->node_pt(local_node_num)
3676 = Node_pt[node_count];
3679 finite_element_pt(element_num)->
3680 local_fraction_of_node(local_node_num,s_fraction);
3683 Node_pt[node_count]->x(0) = Xmax;
3684 Node_pt[node_count]->x(1) = Ymin + el_length[1]*s_fraction[1];
3685 Node_pt[node_count]->x(2) = Zmax;
3688 add_boundary_node(2,Node_pt[node_count]);
3689 add_boundary_node(5,Node_pt[node_count]);
3703 for(
unsigned i=1;i<(Ny-1);i++)
3709 element_num = Nx*i+Nx*Ny*(Nz-1);
3710 Element_pt[element_num] =
new ELEMENT;
3713 for(
unsigned l1 = 0; l1<n_p; l1++)
3715 for(
unsigned l2= 0; l2< n_p; l2++)
3717 finite_element_pt(Nx*i+(Nz-1)*Nx*Ny)->node_pt(l2 + n_p*l1) = finite_element_pt(Nx*i+(Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
3723 for(
unsigned l3=1;l3<(n_p-1);l3++)
3726 for(
unsigned l2=0;l2<n_p;l2++)
3728 finite_element_pt(Nx*i+(Nz-1)*Nx*Ny)->node_pt(l2+l3*n_p*n_p) =
3729 finite_element_pt(Nx*(i-1)+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
3733 for(
unsigned l1=1;l1<n_p;l1++)
3738 local_node_num = l1*n_p+l3*n_p*n_p;
3741 Node_pt[node_count] =
3742 finite_element_pt(element_num)->
3743 construct_boundary_node(local_node_num,time_stepper_pt);
3745 finite_element_pt(element_num)->node_pt(local_node_num)
3746 = Node_pt[node_count];
3749 finite_element_pt(element_num)->
3750 local_fraction_of_node(local_node_num,s_fraction);
3753 Node_pt[node_count]->x(0) = Xmin;
3754 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
3755 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3758 add_boundary_node(4,Node_pt[node_count]);
3764 for(
unsigned l2=1;l2<n_p;l2++)
3767 local_node_num = l1*n_p+l2+n_p*n_p*l3;
3770 Node_pt[node_count] =
3771 finite_element_pt(element_num)->
3772 construct_node(local_node_num,time_stepper_pt);
3774 finite_element_pt(element_num)->node_pt(local_node_num)
3775 = Node_pt[node_count];
3778 finite_element_pt(element_num)->
3779 local_fraction_of_node(local_node_num,s_fraction);
3782 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
3783 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
3784 Node_pt[node_count]->x(2) =
3785 Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3799 for(
unsigned l2=0;l2<n_p;l2++)
3801 finite_element_pt(Nx*i+(Nz-1)*Nx*Ny)->node_pt(l2+(n_p-1)*n_p*n_p) =
3802 finite_element_pt(Nx*(i-1)+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p + l2+(n_p-1)*n_p*n_p);
3806 for(
unsigned l1=1;l1<n_p;l1++)
3811 local_node_num = l1*n_p+(n_p-1)*n_p*n_p;
3814 Node_pt[node_count] =
3815 finite_element_pt(element_num)->
3816 construct_boundary_node(local_node_num,time_stepper_pt);
3818 finite_element_pt(element_num)->node_pt(local_node_num)
3819 = Node_pt[node_count];
3822 finite_element_pt(element_num)->
3823 local_fraction_of_node(local_node_num,s_fraction);
3826 Node_pt[node_count]->x(0) = Xmin;
3827 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
3828 Node_pt[node_count]->x(2) = Zmax;
3831 add_boundary_node(4,Node_pt[node_count]);
3832 add_boundary_node(5,Node_pt[node_count]);
3838 for(
unsigned l2=1;l2<n_p;l2++)
3841 local_node_num = l1*n_p+l2+n_p*n_p*(n_p-1);
3844 Node_pt[node_count] =
3845 finite_element_pt(element_num)->
3846 construct_boundary_node(local_node_num,time_stepper_pt);
3848 finite_element_pt(element_num)->node_pt(local_node_num)
3849 = Node_pt[node_count];
3852 finite_element_pt(element_num)->
3853 local_fraction_of_node(local_node_num,s_fraction);
3856 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
3857 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
3858 Node_pt[node_count]->x(2) = Zmax;
3861 add_boundary_node(5,Node_pt[node_count]);
3872 for(
unsigned j=1;j<(Nx-1);j++)
3875 element_num = Nx*i+j+(Nz-1)*Nx*Ny;
3876 Element_pt[element_num] =
new ELEMENT;
3879 for(
unsigned l1 = 0; l1<n_p; l1++)
3881 for(
unsigned l2= 0; l2< n_p; l2++)
3883 finite_element_pt(Nx*i+j+(Nz-1)*Nx*Ny)->node_pt(l2 + n_p*l1) =
3884 finite_element_pt(Nx*i+j+(Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
3890 for(
unsigned l3 = 1;l3<(n_p-1);l3++)
3894 for(
unsigned l2=0;l2<n_p;l2++)
3896 finite_element_pt(Nx*i+j+(Nz-1)*Nx*Ny)->node_pt(l2+l3*n_p*n_p) =
3897 finite_element_pt(Nx*(i-1)+j+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p+l2+l3*n_p*n_p);
3900 for(
unsigned l1=1;l1<n_p;l1++)
3903 finite_element_pt(Nx*i+j+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+l3*n_p*n_p)=
3904 finite_element_pt(Nx*i+(j-1)+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+l3*n_p*n_p+(n_p-1));
3907 for(
unsigned l2=1;l2<n_p;l2++)
3910 local_node_num = l1*n_p+l2+l3*n_p*n_p;
3913 Node_pt[node_count] =
3914 finite_element_pt(element_num)->
3915 construct_node(local_node_num,time_stepper_pt);
3917 finite_element_pt(element_num)->node_pt(local_node_num)
3918 = Node_pt[node_count];
3920 finite_element_pt(element_num)->
3921 local_fraction_of_node(local_node_num,s_fraction);
3925 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
3926 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
3927 Node_pt[node_count]->x(2) =
3928 Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
3941 for(
unsigned l2=0;l2<n_p;l2++)
3943 finite_element_pt(Nx*i+j+(Nz-1)*Nx*Ny)->node_pt(l2+(n_p-1)*n_p*n_p) =
3944 finite_element_pt(Nx*(i-1)+j+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p+l2+(n_p-1)*n_p*n_p);
3947 for(
unsigned l1=1;l1<n_p;l1++)
3950 finite_element_pt(Nx*i+j+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1)*n_p*n_p)=
3951 finite_element_pt(Nx*i+(j-1)+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1)*n_p*n_p+(n_p-1));
3954 for(
unsigned l2=1;l2<n_p;l2++)
3957 local_node_num = l1*n_p+l2+(n_p-1)*n_p*n_p;
3960 Node_pt[node_count] =
3961 finite_element_pt(element_num)->
3962 construct_boundary_node(local_node_num,time_stepper_pt);
3964 finite_element_pt(element_num)->node_pt(local_node_num)
3965 = Node_pt[node_count];
3968 finite_element_pt(element_num)->
3969 local_fraction_of_node(local_node_num,s_fraction);
3972 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
3973 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
3974 Node_pt[node_count]->x(2) = Zmax;
3977 add_boundary_node(5,Node_pt[node_count]);
3992 element_num = Nx*i+Nx-1+(Nz-1)*Nx*Ny;
3993 Element_pt[element_num] =
new ELEMENT;
3996 for(
unsigned l1 = 0; l1<n_p; l1++)
3998 for(
unsigned l2= 0; l2< n_p; l2++)
4000 finite_element_pt(Nx*i+Nx-1+(Nz-1)*Nx*Ny)->node_pt(l2 + n_p*l1)=
4001 finite_element_pt(Nx*i+Nx-1+(Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
4007 for(
unsigned l3=1;l3<(n_p-1);l3++)
4011 for(
unsigned l2=0;l2<n_p;l2++)
4013 finite_element_pt(Nx*i+Nx-1+(Nz-1)*Nx*Ny)->node_pt(l2+l3*n_p*n_p) =
4014 finite_element_pt(Nx*(i-1)+Nx-1+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
4017 for(
unsigned l1=1;l1<n_p;l1++)
4020 finite_element_pt(Nx*i+Nx-1+(Nz-1)*Nx*Ny)->node_pt(l1*n_p + l3*n_p*n_p) =
4021 finite_element_pt(Nx*i+Nx-2+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1) + l3*n_p*n_p);
4024 for(
unsigned l2=1;l2<(n_p-1);l2++)
4027 local_node_num = l1*n_p+l2 + l3*n_p*n_p;
4030 Node_pt[node_count] =
4031 finite_element_pt(element_num)->
4032 construct_node(local_node_num,time_stepper_pt);
4034 finite_element_pt(element_num)->node_pt(local_node_num)
4035 = Node_pt[node_count];
4038 finite_element_pt(element_num)->
4039 local_fraction_of_node(local_node_num,s_fraction);
4042 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
4043 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
4044 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4055 local_node_num = l1*n_p+(n_p-1) + l3*n_p*n_p;
4058 Node_pt[node_count] =
4059 finite_element_pt(element_num)->
4060 construct_boundary_node(local_node_num,time_stepper_pt);
4062 finite_element_pt(element_num)->node_pt(local_node_num)
4063 = Node_pt[node_count];
4066 finite_element_pt(element_num)->
4067 local_fraction_of_node(local_node_num,s_fraction);
4070 Node_pt[node_count]->x(0) = Xmax;
4071 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
4072 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4075 add_boundary_node(2,Node_pt[node_count]);
4087 for(
unsigned l2=0;l2<n_p;l2++)
4089 finite_element_pt(Nx*i+Nx-1+(Nz-1)*Nx*Ny)->node_pt(l2+(n_p-1)*n_p*n_p) =
4090 finite_element_pt(Nx*(i-1)+Nx-1+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p +l2+(n_p-1)*n_p*n_p);
4093 for(
unsigned l1=1;l1<n_p;l1++)
4096 finite_element_pt(Nx*i+Nx-1+(Nz-1)*Nx*Ny)->node_pt(l1*n_p +(n_p-1)*n_p*n_p) =
4097 finite_element_pt(Nx*i+Nx-2+(Nz-1)*Nx*Ny)->node_pt(l1*n_p+(n_p-1) +(n_p-1)*n_p*n_p);
4100 for(
unsigned l2=1;l2<(n_p-1);l2++)
4103 local_node_num = l1*n_p+l2 +(n_p-1)*n_p*n_p;
4106 Node_pt[node_count] =
4107 finite_element_pt(element_num)->
4108 construct_boundary_node(local_node_num,time_stepper_pt);
4110 finite_element_pt(element_num)->node_pt(local_node_num)
4111 = Node_pt[node_count];
4114 finite_element_pt(element_num)->
4115 local_fraction_of_node(local_node_num,s_fraction);
4118 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
4119 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
4120 Node_pt[node_count]->x(2) = Zmax;
4123 add_boundary_node(5,Node_pt[node_count]);
4132 local_node_num = l1*n_p+(n_p-1) + (n_p-1)*n_p*n_p;
4135 Node_pt[node_count] =
4136 finite_element_pt(element_num)->
4137 construct_boundary_node(local_node_num,time_stepper_pt);
4139 finite_element_pt(element_num)->node_pt(local_node_num)
4140 = Node_pt[node_count];
4143 finite_element_pt(element_num)->
4144 local_fraction_of_node(local_node_num,s_fraction);
4147 Node_pt[node_count]->x(0) = Xmax;
4148 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(i + s_fraction[1]);
4149 Node_pt[node_count]->x(2) = Zmax;
4152 add_boundary_node(2,Node_pt[node_count]);
4153 add_boundary_node(5,Node_pt[node_count]);
4174 element_num = Nx*(Ny-1)+(Nz-1)*Nx*Ny;
4175 Element_pt[element_num] =
new ELEMENT;
4178 for(
unsigned l1 = 0; l1<n_p; l1++)
4180 for(
unsigned l2= 0; l2< n_p; l2++)
4182 finite_element_pt(Nx*(Ny-1)+(Nz-1)*Nx*Ny)->node_pt(l2 + n_p*l1)=
4183 finite_element_pt(Nx*(Ny-1)+(Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
4188 for(
unsigned l3=1;l3<(n_p-1);l3++)
4191 for(
unsigned l2=0;l2<n_p;l2++)
4193 finite_element_pt(Nx*(Ny-1)+(Nz-1)*Nx*Ny)->node_pt(l2 + l3*n_p*n_p)
4194 = finite_element_pt(Nx*(Ny-2)+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p + l2 + l3*n_p*n_p);
4199 for(
unsigned l1=1;l1<(n_p-1);l1++)
4202 local_node_num = n_p*l1 + l3*n_p*n_p;
4205 Node_pt[node_count] =
4206 finite_element_pt(element_num)->
4207 construct_boundary_node(local_node_num,time_stepper_pt);
4209 finite_element_pt(element_num)->node_pt(local_node_num)
4210 = Node_pt[node_count];
4213 finite_element_pt(element_num)->
4214 local_fraction_of_node(local_node_num,s_fraction);
4217 Node_pt[node_count]->x(0) = Xmin;
4218 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4219 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4222 add_boundary_node(4,Node_pt[node_count]);
4228 for(
unsigned l2=1;l2<n_p;l2++)
4231 local_node_num = n_p*l1+l2 + l3*n_p*n_p;
4234 Node_pt[node_count] =
4235 finite_element_pt(element_num)->
4236 construct_node(local_node_num,time_stepper_pt);
4238 finite_element_pt(element_num)->node_pt(local_node_num)
4239 = Node_pt[node_count];
4242 finite_element_pt(element_num)->
4243 local_fraction_of_node(local_node_num,s_fraction);
4246 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
4247 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4248 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4261 local_node_num = n_p*(n_p-1) + l3 * n_p * n_p;
4263 Node_pt[node_count] =
4264 finite_element_pt(element_num)->
4265 construct_boundary_node(local_node_num,time_stepper_pt);
4267 finite_element_pt(element_num)->node_pt(local_node_num)
4268 = Node_pt[node_count];
4271 finite_element_pt(element_num)->
4272 local_fraction_of_node(local_node_num,s_fraction);
4275 Node_pt[node_count]->x(0) = Xmin;
4276 Node_pt[node_count]->x(1) = Ymax;
4277 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4280 add_boundary_node(3,Node_pt[node_count]);
4281 add_boundary_node(4,Node_pt[node_count]);
4287 for(
unsigned l2=1;l2<n_p;l2++)
4290 local_node_num = n_p*(n_p-1)+l2 + l3*n_p*n_p;
4292 Node_pt[node_count] =
4293 finite_element_pt(element_num)->
4294 construct_boundary_node(local_node_num,time_stepper_pt);
4296 finite_element_pt(element_num)->node_pt(local_node_num)
4297 = Node_pt[node_count];
4300 finite_element_pt(element_num)->
4301 local_fraction_of_node(local_node_num,s_fraction);
4304 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
4305 Node_pt[node_count]->x(1) = Ymax;
4306 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4309 add_boundary_node(3,Node_pt[node_count]);
4318 for(
unsigned l2=0;l2<n_p;l2++)
4320 finite_element_pt(Nx*(Ny-1)+(Nz-1)*Nx*Ny)->node_pt(l2 + (n_p-1)*n_p*n_p)
4321 = finite_element_pt(Nx*(Ny-2)+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p + l2 + (n_p-1)*n_p*n_p);
4326 for(
unsigned l1=1;l1<(n_p-1);l1++)
4329 local_node_num = n_p*l1 + (n_p-1)*n_p*n_p;
4332 Node_pt[node_count] =
4333 finite_element_pt(element_num)->
4334 construct_boundary_node(local_node_num,time_stepper_pt);
4336 finite_element_pt(element_num)->node_pt(local_node_num)
4337 = Node_pt[node_count];
4340 finite_element_pt(element_num)->
4341 local_fraction_of_node(local_node_num,s_fraction);
4344 Node_pt[node_count]->x(0) = Xmin;
4345 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4346 Node_pt[node_count]->x(2) = Zmax;
4349 add_boundary_node(4,Node_pt[node_count]);
4350 add_boundary_node(5,Node_pt[node_count]);
4356 for(
unsigned l2=1;l2<n_p;l2++)
4359 local_node_num = n_p*l1+l2 + (n_p-1)*n_p*n_p;
4362 Node_pt[node_count] =
4363 finite_element_pt(element_num)->
4364 construct_boundary_node(local_node_num,time_stepper_pt);
4366 finite_element_pt(element_num)->node_pt(local_node_num)
4367 = Node_pt[node_count];
4369 finite_element_pt(element_num)->
4370 local_fraction_of_node(local_node_num,s_fraction);
4373 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
4374 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4375 Node_pt[node_count]->x(2) = Zmax;
4378 add_boundary_node(5,Node_pt[node_count]);
4389 local_node_num = n_p*(n_p-1)+(n_p-1) * n_p * n_p;
4391 Node_pt[node_count] =
4392 finite_element_pt(element_num)->
4393 construct_boundary_node(local_node_num,time_stepper_pt);
4395 finite_element_pt(element_num)->node_pt(local_node_num)
4396 = Node_pt[node_count];
4398 finite_element_pt(element_num)->
4399 local_fraction_of_node(local_node_num,s_fraction);
4402 Node_pt[node_count]->x(0) = Xmin;
4403 Node_pt[node_count]->x(1) = Ymax;
4404 Node_pt[node_count]->x(2) = Zmax;
4407 add_boundary_node(3,Node_pt[node_count]);
4408 add_boundary_node(4,Node_pt[node_count]);
4409 add_boundary_node(5,Node_pt[node_count]);
4415 for(
unsigned l2=1;l2<n_p;l2++)
4418 local_node_num = n_p*(n_p-1)+l2 + (n_p-1)*n_p*n_p;
4420 Node_pt[node_count] =
4421 finite_element_pt(element_num)->
4422 construct_boundary_node(local_node_num,time_stepper_pt);
4424 finite_element_pt(element_num)->node_pt(local_node_num)
4425 = Node_pt[node_count];
4428 finite_element_pt(element_num)->
4429 local_fraction_of_node(local_node_num,s_fraction);
4432 Node_pt[node_count]->x(0) = Xmin + el_length[0]*s_fraction[0];
4433 Node_pt[node_count]->x(1) = Ymax;
4434 Node_pt[node_count]->x(2) = Zmax;
4437 add_boundary_node(3,Node_pt[node_count]);
4438 add_boundary_node(5,Node_pt[node_count]);
4449 for(
unsigned j=1;j<(Nx-1);j++)
4452 element_num = Nx*(Ny-1)+j+(Nz-1)*Nx*Ny;
4453 Element_pt[element_num] =
new ELEMENT;
4456 for(
unsigned l1 = 0; l1<n_p; l1++)
4458 for(
unsigned l2= 0; l2< n_p; l2++)
4460 finite_element_pt(Nx*(Ny-1)+j+(Nz-1)*Nx*Ny)->node_pt(l2 + n_p*l1) =
4461 finite_element_pt(Nx*(Ny-1)+j+(Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
4467 for(
unsigned l3=1;l3<(n_p-1);l3++)
4470 for(
unsigned l2=0;l2<n_p;l2++)
4472 finite_element_pt(Nx*(Ny-1)+j+(Nz-1)*Nx*Ny)->node_pt(l2 + l3*n_p*n_p) =
4473 finite_element_pt(Nx*(Ny-2)+j+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p + l2 + l3*n_p*n_p);
4477 for(
unsigned l1=1;l1<(n_p-1);l1++)
4480 finite_element_pt(Nx*(Ny-1)+j+(Nz-1)*Nx*Ny)->node_pt(n_p*l1+l3*n_p*n_p)
4481 = finite_element_pt(Nx*(Ny-1)+(j-1)+(Nz-1)*Nx*Ny)->node_pt(n_p*l1+(n_p-1)+l3*n_p*n_p);
4484 for(
unsigned l2=1;l2<n_p;l2++)
4487 local_node_num = n_p*l1+l2+l3*n_p*n_p;
4489 Node_pt[node_count] =
4490 finite_element_pt(element_num)->
4491 construct_node(local_node_num,time_stepper_pt);
4494 finite_element_pt(element_num)->node_pt(local_node_num)
4495 = Node_pt[node_count];
4498 finite_element_pt(element_num)->
4499 local_fraction_of_node(local_node_num,s_fraction);
4502 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
4503 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4504 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4515 finite_element_pt(Nx*(Ny-1)+j+(Nz-1)*Nx*Ny)->node_pt(n_p*(n_p-1) + l3*n_p*n_p)
4516 = finite_element_pt(Nx*(Ny-1)+(j-1)+(Nz-1)*Nx*Ny)->node_pt(n_p*(n_p-1)+(n_p-1)+l3*n_p*n_p);
4518 for(
unsigned l2=1;l2<n_p;l2++)
4521 local_node_num = n_p*(n_p-1)+l2 + l3*n_p*n_p;
4523 Node_pt[node_count] =
4524 finite_element_pt(element_num)->
4525 construct_boundary_node(local_node_num,time_stepper_pt);
4527 finite_element_pt(element_num)->node_pt(local_node_num)
4528 = Node_pt[node_count];
4531 finite_element_pt(element_num)->
4532 local_fraction_of_node(local_node_num,s_fraction);
4535 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
4536 Node_pt[node_count]->x(1) = Ymax;
4537 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4540 add_boundary_node(3,Node_pt[node_count]);
4551 for(
unsigned l2=0;l2<n_p;l2++)
4553 finite_element_pt(Nx*(Ny-1)+j+(Nz-1)*Nx*Ny)->node_pt(l2 + (n_p-1)*n_p*n_p) =
4554 finite_element_pt(Nx*(Ny-2)+j+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p + l2 + (n_p-1)*n_p*n_p);
4558 for(
unsigned l1=1;l1<(n_p-1);l1++)
4561 finite_element_pt(Nx*(Ny-1)+j+(Nz-1)*Nx*Ny)->node_pt(n_p*l1+(n_p-1)*n_p*n_p)
4562 = finite_element_pt(Nx*(Ny-1)+(j-1)+(Nz-1)*Nx*Ny)->node_pt(n_p*l1+(n_p-1)+(n_p-1)*n_p*n_p);
4565 for(
unsigned l2=1;l2<n_p;l2++)
4568 local_node_num = n_p*l1+l2+(n_p-1)*n_p*n_p;
4570 Node_pt[node_count] =
4571 finite_element_pt(element_num)->
4572 construct_boundary_node(local_node_num,time_stepper_pt);
4575 finite_element_pt(element_num)->node_pt(local_node_num)
4576 = Node_pt[node_count];
4579 finite_element_pt(element_num)->
4580 local_fraction_of_node(local_node_num,s_fraction);
4583 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
4584 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4585 Node_pt[node_count]->x(2) = Zmax;
4588 add_boundary_node(5,Node_pt[node_count]);
4597 finite_element_pt(Nx*(Ny-1)+j+(Nz-1)*Nx*Ny)->node_pt(n_p*(n_p-1) + (n_p-1)*n_p*n_p)
4598 = finite_element_pt(Nx*(Ny-1)+(j-1)+(Nz-1)*Nx*Ny)->node_pt(n_p*(n_p-1)+(n_p-1)+(n_p-1)*n_p*n_p);
4600 for(
unsigned l2=1;l2<n_p;l2++)
4603 local_node_num = n_p*(n_p-1)+l2 + (n_p-1)*n_p*n_p;
4605 Node_pt[node_count] =
4606 finite_element_pt(element_num)->
4607 construct_boundary_node(local_node_num,time_stepper_pt);
4609 finite_element_pt(element_num)->node_pt(local_node_num)
4610 = Node_pt[node_count];
4613 finite_element_pt(element_num)->
4614 local_fraction_of_node(local_node_num,s_fraction);
4617 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(j + s_fraction[0]);
4618 Node_pt[node_count]->x(1) = Ymax;
4619 Node_pt[node_count]->x(2) = Zmax;
4622 add_boundary_node(3,Node_pt[node_count]);
4623 add_boundary_node(5,Node_pt[node_count]);
4637 element_num = Nx*(Ny-1)+Nx-1+(Nz-1)*Nx*Ny;
4638 Element_pt[element_num] =
new ELEMENT;
4641 for(
unsigned l1 = 0; l1<n_p;l1++)
4643 for(
unsigned l2= 0;l2<n_p;l2++)
4645 finite_element_pt(Nx*(Ny-1)+Nx-1+(Nz-1)*Nx*Ny)->node_pt(l2 + n_p*l1)=
4646 finite_element_pt(Nx*(Ny-1)+Nx-1+(Nz-2)*Nx*Ny)->node_pt(l2+n_p*l1+(n_p-1)*n_p*n_p);
4652 for(
unsigned l3=1;l3<(n_p-1);l3++)
4656 for(
unsigned l2=0;l2<n_p;l2++)
4658 finite_element_pt(Nx*(Ny-1)+Nx-1+(Nz-1)*Nx*Ny)->node_pt(l2+l3*n_p*n_p) =
4659 finite_element_pt(Nx*(Ny-2)+Nx-1+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p + l2+l3*n_p*n_p);
4663 for(
unsigned l1=1;l1<(n_p-1);l1++)
4666 finite_element_pt(Nx*(Ny-1)+Nx-1+(Nz-1)*Nx*Ny)->node_pt(n_p*l1 + l3*n_p*n_p)
4667 = finite_element_pt(Nx*(Ny-1)+Nx-2+(Nz-1)*Nx*Ny)->node_pt(n_p*l1+(n_p-1)+l3*n_p*n_p);
4670 for(
unsigned l2=1;l2<(n_p-1);l2++)
4673 local_node_num = n_p*l1+l2 + l3*n_p*n_p;
4675 Node_pt[node_count] =
4676 finite_element_pt(element_num)->
4677 construct_node(local_node_num,time_stepper_pt);
4679 finite_element_pt(element_num)->node_pt(local_node_num)
4680 = Node_pt[node_count];
4683 finite_element_pt(element_num)->
4684 local_fraction_of_node(local_node_num,s_fraction);
4687 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
4688 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4689 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4699 local_node_num = n_p*l1+(n_p-1) + l3*n_p*n_p;
4701 Node_pt[node_count] =
4702 finite_element_pt(element_num)->
4703 construct_boundary_node(local_node_num,time_stepper_pt);
4705 finite_element_pt(element_num)->node_pt(local_node_num)
4706 = Node_pt[node_count];
4709 finite_element_pt(element_num)->
4710 local_fraction_of_node(local_node_num,s_fraction);
4713 Node_pt[node_count]->x(0) = Xmax;
4714 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4715 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4718 add_boundary_node(2,Node_pt[node_count]);
4728 finite_element_pt(Nx*(Ny-1)+Nx-1+(Nz-1)*Nx*Ny)->node_pt(n_p*(n_p-1)+l3*n_p*n_p)
4729 = finite_element_pt(Nx*(Ny-1)+Nx-2+(Nz-1)*Nx*Ny)->node_pt(n_p*(n_p-1)+(n_p-1)+l3*n_p*n_p);
4732 for(
unsigned l2=1;l2<(n_p-1);l2++)
4735 local_node_num = n_p*(n_p-1)+l2+l3*n_p*n_p;
4737 Node_pt[node_count] =
4738 finite_element_pt(element_num)->
4739 construct_boundary_node(local_node_num,time_stepper_pt);
4741 finite_element_pt(element_num)->node_pt(local_node_num)
4742 = Node_pt[node_count];
4745 finite_element_pt(element_num)->
4746 local_fraction_of_node(local_node_num,s_fraction);
4749 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
4750 Node_pt[node_count]->x(1) = Ymax;
4751 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4754 add_boundary_node(3,Node_pt[node_count]);
4762 local_node_num = n_p*(n_p-1)+(n_p-1)+ l3*n_p*n_p;
4764 Node_pt[node_count] =
4765 finite_element_pt(element_num)->
4766 construct_boundary_node(local_node_num,time_stepper_pt);
4768 finite_element_pt(element_num)->node_pt(local_node_num)
4769 = Node_pt[node_count];
4772 finite_element_pt(element_num)->
4773 local_fraction_of_node(local_node_num,s_fraction);
4776 Node_pt[node_count]->x(0) = Xmax;
4778 Node_pt[node_count]->x(1) = Ymax;
4779 Node_pt[node_count]->x(2) = Zmin + el_length[2]*(Nz-1 + s_fraction[2]);
4782 add_boundary_node(2,Node_pt[node_count]);
4783 add_boundary_node(3,Node_pt[node_count]);
4795 for(
unsigned l2=0;l2<n_p;l2++)
4797 finite_element_pt(Nx*(Ny-1)+Nx-1+(Nz-1)*Nx*Ny)->node_pt(l2+(n_p-1)*n_p*n_p) =
4798 finite_element_pt(Nx*(Ny-2)+Nx-1+(Nz-1)*Nx*Ny)->node_pt((n_p-1)*n_p+l2+(n_p-1)*n_p*n_p);
4802 for(
unsigned l1=1;l1<(n_p-1);l1++)
4805 finite_element_pt(Nx*(Ny-1)+Nx-1+(Nz-1)*Nx*Ny)->node_pt(n_p*l1 +(n_p-1)*n_p*n_p)
4806 = finite_element_pt(Nx*(Ny-1)+Nx-2+(Nz-1)*Nx*Ny)->node_pt(n_p*l1+(n_p-1)+(n_p-1)*n_p*n_p);
4809 for(
unsigned l2=1;l2<(n_p-1);l2++)
4812 local_node_num = n_p*l1+l2 +(n_p-1)*n_p*n_p;
4814 Node_pt[node_count] =
4815 finite_element_pt(element_num)->
4816 construct_boundary_node(local_node_num,time_stepper_pt);
4818 finite_element_pt(element_num)->node_pt(local_node_num)
4819 = Node_pt[node_count];
4822 finite_element_pt(element_num)->
4823 local_fraction_of_node(local_node_num,s_fraction);
4826 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
4827 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4828 Node_pt[node_count]->x(2) = Zmax;
4831 add_boundary_node(5,Node_pt[node_count]);
4839 local_node_num = n_p*l1+(n_p-1)+(n_p-1)*n_p*n_p;
4841 Node_pt[node_count] =
4842 finite_element_pt(element_num)->
4843 construct_boundary_node(local_node_num,time_stepper_pt);
4845 finite_element_pt(element_num)->node_pt(local_node_num)
4846 = Node_pt[node_count];
4849 Node_pt[node_count]->x(0) = Xmax;
4850 Node_pt[node_count]->x(1) = Ymin + el_length[1]*(Ny-1 + s_fraction[1]);
4851 Node_pt[node_count]->x(2) = Zmax;
4854 add_boundary_node(2,Node_pt[node_count]);
4855 add_boundary_node(5,Node_pt[node_count]);
4864 finite_element_pt(Nx*(Ny-1)+Nx-1+(Nz-1)*Nx*Ny)->
4865 node_pt(n_p*(n_p-1)+(n_p-1)*n_p*n_p)
4866 = finite_element_pt(Nx*(Ny-1)+Nx-2+(Nz-1)*Nx*Ny)->
4867 node_pt(n_p*(n_p-1)+(n_p-1)+(n_p-1)*n_p*n_p);
4870 for(
unsigned l2=1;l2<(n_p-1);l2++)
4873 local_node_num = n_p*(n_p-1)+l2+(n_p-1)*n_p*n_p;
4875 Node_pt[node_count] =
4876 finite_element_pt(element_num)->
4877 construct_boundary_node(local_node_num,time_stepper_pt);
4879 finite_element_pt(element_num)->node_pt(local_node_num)
4880 = Node_pt[node_count];
4883 finite_element_pt(element_num)->
4884 local_fraction_of_node(local_node_num,s_fraction);
4887 Node_pt[node_count]->x(0) = Xmin + el_length[0]*(Nx-1 + s_fraction[0]);
4888 Node_pt[node_count]->x(1) = Ymax;
4889 Node_pt[node_count]->x(2) = Zmax;
4892 add_boundary_node(3,Node_pt[node_count]);
4893 add_boundary_node(5,Node_pt[node_count]);
4902 local_node_num = n_p*(n_p-1)+(n_p-1)+ (n_p-1)*n_p*n_p;
4904 Node_pt[node_count] =
4905 finite_element_pt(element_num)->
4906 construct_boundary_node(local_node_num,time_stepper_pt);
4908 finite_element_pt(element_num)->node_pt(local_node_num)
4909 = Node_pt[node_count];
4912 finite_element_pt(element_num)->
4913 local_fraction_of_node(local_node_num,s_fraction);
4916 Node_pt[node_count]->x(0) = Xmax;
4917 Node_pt[node_count]->x(1) = Ymax;
4918 Node_pt[node_count]->x(2) = Zmax;
4921 add_boundary_node(2,Node_pt[node_count]);
4922 add_boundary_node(3,Node_pt[node_count]);
4923 add_boundary_node(5,Node_pt[node_count]);
4932 setup_boundary_element_info();
void build_mesh(TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Generic mesh construction function: contains all the hard work.