| 763 | } |
| 764 | |
| 765 | void FacetFESpace :: Update() |
| 766 | { |
| 767 | FESpace::Update(); |
| 768 | |
| 769 | if(print) |
| 770 | *testout << " FacetFEspace with order " << order << " rel_order " << rel_order << " var_order " << var_order << endl; |
| 771 | |
| 772 | bool first_update = GetTimeStamp() < ma->GetTimeStamp(); |
| 773 | if (first_update) timestamp = NGS_Object::GetNextTimeStamp(); |
| 774 | |
| 775 | if (low_order_space) |
| 776 | low_order_space -> Update(); |
| 777 | |
| 778 | nel = ma->GetNE(); |
| 779 | nfa = ma->GetNFacets(); |
| 780 | |
| 781 | if (first_update) |
| 782 | { |
| 783 | int p = 0; |
| 784 | if(!var_order) p = order; |
| 785 | |
| 786 | order_facet.SetSize(nfa); |
| 787 | order_facet = p; |
| 788 | |
| 789 | fine_facet.SetSize(nfa); |
| 790 | fine_facet = false; |
| 791 | |
| 792 | Array<int> fanums; |
| 793 | |
| 794 | for (Ngs_Element el : ma->Elements<BND>()) |
| 795 | if (DefinedOn(el)) |
| 796 | fine_facet[el.Facets()] = true; |
| 797 | |
| 798 | for (int i = 0; i < nel; i++) |
| 799 | { |
| 800 | ElementId ei(VOL, i); |
| 801 | if (!DefinedOn(ei)) continue; |
| 802 | ELEMENT_TYPE eltype=ma->GetElType(ei); |
| 803 | const POINT3D * points = ElementTopology :: GetVertices (eltype); |
| 804 | |
| 805 | |
| 806 | if (ma->GetDimension() == 1) |
| 807 | { |
| 808 | auto fanums = ma->GetElVertices(ei); |
| 809 | for (auto f : fanums) |
| 810 | fine_facet[f] = true; |
| 811 | } |
| 812 | |
| 813 | else if (ma->GetDimension() == 2) |
| 814 | { |
| 815 | auto fanums = ma->GetElEdges(ei); |
| 816 | for (auto f : fanums) |
| 817 | fine_facet[f] = true; |
| 818 | |
| 819 | if(var_order) |
| 820 | { |
| 821 | IVec<3> el_orders = ma->GetElOrders(i); |
| 822 |
nothing calls this directly
no test coverage detected