453 TimeStepper* time_stepper_pt) :
Height(height)
459 unsigned node_count=0;
461 Vector<double> s(2), r(2);
464 Vector<Node *> Tmp_node_pt;
468 unsigned Nmacro_element =
Domain_pt->nmacro_element();
469 for(
unsigned e=0;e<Nmacro_element;e++)
472 Element_pt.push_back(
new ELEMENT);
476 dynamic_cast<ELEMENT*
>(finite_element_pt(e))->nnode_1d();
479 for(
unsigned l1=0;l1<Np;l1++)
482 for(
unsigned l2=0;l2<Np;l2++)
485 Tmp_node_pt.push_back(finite_element_pt(e)->
486 construct_node(l1*Np+l2,time_stepper_pt));
489 s[0] = -1.0 + 2.0*(double)l2/(
double)(Np-1);
490 s[1] = -1.0 + 2.0*(double)l1/(
double)(Np-1);
491 Domain_pt->macro_element_pt(e)->macro_map(s,r);
494 Tmp_node_pt[node_count]->x(0) = r[0];
495 Tmp_node_pt[node_count]->x(1) = r[1];
509 dynamic_cast<ELEMENT*
>(finite_element_pt(0))->nnode_1d();
512 for(
unsigned n=0;n<Np;n++)
515 finite_element_pt(1)->node_pt(Np*n)
516 = finite_element_pt(0)->node_pt(n*Np+Np-1);
519 delete Tmp_node_pt[Np*Np + Np*n];
520 Tmp_node_pt[Np*Np + Np*n] = 0;
524 for(
unsigned n=0;n<Np;n++)
527 finite_element_pt(2)->node_pt(n*Np)
528 = finite_element_pt(1)->node_pt((Np-1)*Np+Np-1-n);
531 delete Tmp_node_pt[2*Np*Np + n*Np];
532 Tmp_node_pt[2*Np*Np + n*Np] = 0;
536 for(
unsigned n=0;n<Np;n++)
539 finite_element_pt(4)->node_pt(n*Np)
540 = finite_element_pt(1)->node_pt(n);
543 delete Tmp_node_pt[4*Np*Np + n*Np];
544 Tmp_node_pt[4*Np*Np + n*Np] = 0;
548 for(
unsigned n=0;n<Np;n++)
551 finite_element_pt(3)->node_pt(Np*(Np-1)+n)
552 = finite_element_pt(2)->node_pt(Np*n+Np-1);
555 delete Tmp_node_pt[3*Np*Np + Np*(Np-1)+n];
556 Tmp_node_pt[3*Np*Np + Np*(Np-1)+n] = 0;
561 for(
unsigned n=0;n<Np;n++)
564 finite_element_pt(3)->node_pt(n)
565 = finite_element_pt(4)->node_pt(Np*(Np-n-1)+Np-1);
568 delete Tmp_node_pt[3*Np*Np + n];
569 Tmp_node_pt[3*Np*Np + n] = 0;
574 for(
unsigned n=0;n<Np;n++)
577 finite_element_pt(5)->node_pt(n*Np)
578 = finite_element_pt(3)->node_pt(Np*n+Np-1);
581 delete Tmp_node_pt[5*Np*Np + n*Np];
582 Tmp_node_pt[5*Np*Np + n*Np] = 0;
586 for(
unsigned n=0;n<node_count;n++)
588 if(Tmp_node_pt[n]!=0) {Node_pt.push_back(Tmp_node_pt[n]);}
596 for(
unsigned n=0;n<Np;n++)
599 Node* temp_node_pt = finite_element_pt(0)->node_pt(n*Np);
600 this->convert_to_boundary_node(temp_node_pt);
601 add_boundary_node(3,temp_node_pt);
605 temp_node_pt = finite_element_pt(5)->node_pt(n*Np+Np-1);
606 this->convert_to_boundary_node(temp_node_pt);
607 add_boundary_node(1,temp_node_pt);
610 temp_node_pt = finite_element_pt(0)->node_pt(n);
611 this->convert_to_boundary_node(temp_node_pt);
612 add_boundary_node(0,temp_node_pt);
615 temp_node_pt = finite_element_pt(0)->node_pt(Np*(Np-1)+n);
616 this->convert_to_boundary_node(temp_node_pt);
617 add_boundary_node(2,temp_node_pt);
620 temp_node_pt = finite_element_pt(4)->node_pt(Np*(Np-1)+n);
621 this->convert_to_boundary_node(temp_node_pt);
622 add_boundary_node(4,temp_node_pt);
625 for(
unsigned n=1;n<Np;n++)
628 Node* temp_node_pt = finite_element_pt(4)->node_pt(n);
629 this->convert_to_boundary_node(temp_node_pt);
630 add_boundary_node(0,temp_node_pt);
633 temp_node_pt = finite_element_pt(2)->node_pt(Np*(Np-1)+n);
634 this->convert_to_boundary_node(temp_node_pt);
635 add_boundary_node(2,temp_node_pt);
638 temp_node_pt = finite_element_pt(3)->node_pt(n*Np);
639 this->convert_to_boundary_node(temp_node_pt);
640 add_boundary_node(4,temp_node_pt);
643 for(
unsigned n=1;n<Np;n++)
646 Node* temp_node_pt = finite_element_pt(5)->node_pt(n);
647 this->convert_to_boundary_node(temp_node_pt);
648 add_boundary_node(0,temp_node_pt);
651 temp_node_pt = finite_element_pt(5)->node_pt(Np*(Np-1)+n);
652 this->convert_to_boundary_node(temp_node_pt);
653 add_boundary_node(2,temp_node_pt);
656 temp_node_pt = finite_element_pt(2)->node_pt(Np-n-1);
657 this->convert_to_boundary_node(temp_node_pt);
658 add_boundary_node(4,temp_node_pt);
661 for(
unsigned n=1;n<Np-1;n++)
664 Node* temp_node_pt = finite_element_pt(1)->node_pt(Np*(Np-n-1)+Np-1);
665 this->convert_to_boundary_node(temp_node_pt);
666 add_boundary_node(4,temp_node_pt);
670 unsigned Nnode = nnode();
671 for(
unsigned n=0;n<Nnode;n++)
674 SolidNode* temp_pt =
static_cast<SolidNode*
>(Node_pt[n]);
675 for(
unsigned i=0;i<2;i++)
676 {temp_pt->xi(i) = temp_pt->x(i);}