SheafSystem  0.0.0.0
visualization_iterator_4_2.cc
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
18 // Implementation for class visualization_iterator_4_2
19 
20 
21 #include "SheafSystem/visualization_iterator_4_2.h"
22 
23 #include "SheafSystem/assert_contract.h"
24 #include "SheafSystem/base_space_member.h"
25 #include "SheafSystem/binary_section_space_schema_member.h"
26 #include "SheafSystem/eval_family.h"
27 #include "SheafSystem/sec_rep_descriptor.h"
28 #include "SheafSystem/section_evaluator.h"
29 #include "SheafSystem/section_space_schema_member.h"
30 #include "SheafSystem/sec_vd.h"
31 #include "SheafSystem/std_limits.h"
32 #include "SheafSystem/structured_block_1d.h"
33 #include "SheafSystem/structured_block_2d.h"
34 #include "SheafSystem/structured_block_3d.h"
35 #include "SheafSystem/subposet_member_iterator.h"
36 #include "SheafSystem/uniform_eval_family.h"
37 #include "vtkDoubleArray.h"
38 #include "vtkIdTypeArray.h"
39 
40 //#define DIAGNOSTIC_OUTPUT 1
41 
42 // Workaround for MS Visual C++
43 using namespace tool;
44 using namespace std;
45 using namespace unordered;
46 
47 // ===========================================================
48 // ANY FACET
49 // ===========================================================
50 
51 
53 bool
55 is_ancestor_of(const any* xother) const
56 {
57  // Preconditions:
58 
59  // Body:
60 
61  bool result = dynamic_cast<const visualization_iterator_4_2*>(xother) != 0;
62 
63  // Postconditions:
64 
65  // Exit
66 
67  return result;
68 }
69 
70 
71 
75 clone() const
76 {
77  // Preconditions:
78 
79  // Body:
80 
81  visualization_iterator_4_2* cthis = const_cast<visualization_iterator_4_2*>(this);
84 
85  // Postconditions:
86 
87  // ensure(invariant());
88  ensure(result != 0);
89 
90  // Exit
91 
92  return result;
93 }
94 
96 bool
98 invariant() const
99 {
100  bool result = true;
101 
102  // Preconditions:
103 
104  // Body:
105 
106 
107  if(invariant_check())
108  {
109  invariance(visualization_iterator::invariant());
110 
111  disable_invariant_check();
112 
113  invariance(order() == BIORDER);
114  invariance(is_initialized() ?
115  coordinates_schema().rep().evaluator_family_name() == "uniform" :
116  true);
117  invariance((is_initialized() && has_property()) ?
118  property_schema().discretization().name() == "__vertices" :
119  true);
120 
121  // Finished, turn invariant checking back on.
122 
123  enable_invariant_check();
124  }
125 
126  // Postconditions:
127 
128  // Exit
129 
130  return result;
131 }
132 
133 
134 // ===========================================================
135 // DEPTH_FIRST_ITERATOR FACET
136 // ===========================================================
137 
139 void
141 next(bool xtruncate)
142 {
143  // Preconditions:
144 
145  require(!is_done());
146 
147  // Body:
148 
149  bool ltruncate = xtruncate;
150 
151  // Traverse the graph gathering coord and prop disc members until
152  // we have enough context to evaluate the coordinates at the
153  // the property disc points or until the trversal is done.
154 
155  visualization_iterator::next(ltruncate);
156 
157  while(!is_done())
158  {
159  if(action() == PREVISIT_ACTION)
160  {
161  if(_above.vis_eval)
162  {
168 
169  _coord_state.down_set.push_back(_index);
170  }
171  else
172  {
173  // Store all members below the elements for
174  // unmarking in postvisit action.
175 
176  _vis_state.down_set.push_back(_index);
177  }
178 
179  _at.vis_eval = _vis_state.eval_sp.contains_member(_index);
180  _at.vis_disc = _vis_state.disc_sp.contains_member(_index);
181  _at.coord_eval = _coord_state.eval_sp.contains_member(_index);
182 
183  if(_at.vis_eval)
184  {
185  // $$SCRIBBLE eval-sp: same issue as in rep _1_1.
186  // Want to execute only for maximal eval mbr we find.
187 
188  _above.vis_eval = false;
189 
190  _vis_state.set_evaluation_member(_index);
191  _vis_state.initialize_order_correction();
192  _vis_state.discretization_members.set_ct(0);
193  _vis_state.down_set.set_ct(0);
194  }
195 
196  if(_at.vis_disc)
197  {
198  _vis_state.gather_discretization_member(_index, greater_index());
199  _vis_state.local_id++;
200 
201  ltruncate = true;
202  }
203 
204  if(_at.coord_eval)
205  {
206  // $$SCRIBBLE eval-sp: same issue as in rep _1_1.
207  // Want to execute only for maximal eval mbr we find,
208  // but for uniform coordinates we currentlt have no
209  // notion of restriction. Have to think about this one.
210 
211  _coord_state.set_and_attach_evaluation_member(_index);
212  _coord_state.discretization_members.set_ct(0);
213  _coord_state.gather_discretization_member(_index);
214  _coord_state.local_id++;
215  _coord_state.dofs.set_ct(0);
216  }
217 
218  }
219  else if(action() == POSTVISIT_ACTION)
220  {
221  _at.vis_eval = _vis_state.eval_sp.contains_member(_index);
222 
223  if(_at.vis_eval)
224  {
225  // $$SCRIBBLE eval-sp: same issue as in rep _1_1.
226  // but see above comment.
227 
228  clear_down_set();
229  _above.vis_eval = true;
230  break;
231  }
232 
233  // If we invoke visualization_iterator::next() from the postvisit action,
234  // the truncation flag will be ignored, since you can only truncate
235  // in the previsit action. But just to be specific, we'll set it false no
236  // matter what we've done here.
237 
238  ltruncate = false;
239  }
240  else
241  {
242  post_fatal_error_message("unrecognized action");
243  }
244 
245  visualization_iterator::next(ltruncate);
246  } // end while(!is_done())
247 
248  // Postconditions:
249 
250  ensure(invariant());
251  ensure(!is_done() ? action() == POSTVISIT_ACTION : true);
252 
253  // Exit
254 
255  return;
256 }
257 
258 // ===========================================================
259 // VISUALIZATION_ITERATOR FACET
260 // ===========================================================
261 
263 void
265 set_vtk_data(const sec_vd& xcoords,
266  const sec_vd& xprop,
267  vtkDoubleArray* xvtk_pt_coords,
268  vtkDoubleArray* xvtk_prop,
269  int xprop_tensor_rank,
270  block<int>& xvtk_cell_types,
271  block<vtkIdType>& xvtk_cell_connectivity,
272  block<int>& xvtk_cell_type_map,
273  vtkIdTypeArray* xvtk_pt_label_ids,
274  vtkIdTypeArray* xvtk_cell_label_ids)
275 {
276  // Preconditions:
277 
278  require(xcoords.state_is_read_accessible());
279  require(xcoords.schema().is_same_state(&coordinates_schema()));
280 
281  require(has_property());
282  require(xprop.state_is_read_accessible());
283  require(xprop.schema().is_same_state(&property_schema()));
284 
286 
287  require(xcoords.schema().df() <= 3);
288 
289 
290  // Body:
291 
292 #ifdef DIAGNOSTIC_OUTPUT
293 
294  cout << "id: " << index()
295  << " eval_id: " << _vis_state.eval_id
296  << endl;
297 #endif
298 
299  if(_coord_state.dofs.ct() == 0)
300  {
301  // The dofs have not been gathered for this coord eval member.
302 
303  _coord_state.gather_dofs(xcoords);
304  }
305 
306  typedef unordered_map<pod_index_type, pod_index_type> map_type;
307  typedef map_type::const_iterator iterator_type;
308 
309  int lprop_df = xprop.schema().df();
310  block<discretization_context>& ldisc_mbrs = _vis_state.discretization_members;
311  size_type ldisc_ct = ldisc_mbrs.ct();
312  map_type* lmap = _vis_state.disc_to_seq_map;
313 
314  const index_space_handle& ldisc_id_space =
315  xcoords.schema().discretization_id_space();
316 
317  // Transfer the cell label ids.
318 
319  pod_index_type lvtk_cell_id =
320  _use_cell_top_ids ?
321  _vis_state.eval_id.hub_pod() :
322  xcoords.schema().evaluation().id_space().pod(_vis_state.eval_id);
323 
324  xvtk_cell_label_ids->InsertNextValue(lvtk_cell_id);
325 
326  // Transfer the cell type.
327 
328  xvtk_cell_types.push_back(xvtk_cell_type_map[_vis_state.eval_type_id]);
329 
330  // Transfer the connectivity count.
331 
332  xvtk_cell_connectivity.push_back(ldisc_ct);
333 
334  for(size_type i=0; i<ldisc_ct; ++i)
335  {
336  discretization_context& ldisc_mbr = ldisc_mbrs[i];
337  scoped_index ldisc_id = ldisc_mbr.disc_id;
338  pod_index_type ldisc_pod = ldisc_id.hub_pod();
339  iterator_type lmap_itr = lmap->find(ldisc_pod);
340 
341 #ifdef DIAGNOSTIC_OUTPUT
342 
343  cout << "\tdisc_id: " << setw(6) << ldisc_id;
344 #endif
345 
346  pod_index_type lseq_id;
347 
348  if(lmap_itr == lmap->end())
349  {
350  // Haven't visited this vertex before.
351  // Create a seq id for it.
352 
353  lseq_id = _vis_state.next_seq_id++;
354  (*lmap)[ldisc_pod] = lseq_id;
355 
356 #ifdef DIAGNOSTIC_OUTPUT
357 
358  cout << " seq_id:" << setw(6) << lseq_id;
359 #endif
360 
361  // Transfer the coordinate data;
362  // must evaluate coordintes section at vertices.
363 
364  // Get the local coordinates of the vertex in the element.
365 
366  chart_point_3d ldisc_pt;
367  ldisc_pt.put_chart_id(ldisc_mbr.eval_id);
368 
369  _vis_state.eval->local_coordinates(ldisc_mbr.local_id,
370  ldisc_pt.local_coords(),
371  3);
372 
373  // Unrefine from the element to the coord eval.
374 
377 
378  _coord_state.eval_mbr->unrefine_point_pa(ldisc_pt, ldisc_pt);
379 
380  // Evaluate the global coordinate section.
381 
382  _coord_state.eval->value_at_coord(_coord_state.dofs.base(),
383  _coord_state.dofs.ct(),
384  ldisc_pt.local_coords(),
385  3,
386  _coord_dofs,
387  _coord_state.df);
388 
389  xvtk_pt_coords->SetTuple(lseq_id, _coord_dofs);
390 
391  // Transfer the point label ids.
392 
393  pod_index_type lvtk_pt_id =
394  _use_point_top_ids ?
395  ldisc_id.hub_pod() : ldisc_id_space.pod(ldisc_id);
396 
397  xvtk_pt_label_ids->SetValue(lseq_id, lvtk_pt_id);
398 
399 #ifdef DIAGNOSTIC_OUTPUT
400 
401  cout << " coords: "
402  << setw(6) << _coord_dofs[0]
403  << setw(6) << _coord_dofs[1]
404  << setw(6) << _coord_dofs[2];
405 #endif
406 
407  // Transfer the property data; no need to evaluate.
408 
409  xprop.get_fiber(ldisc_id, _prop_dofs,
410  static_cast<size_type>(PROP_DOFS_UB)*sizeof(sec_vd_dof_type), false);
411 
412  put_prop_dofs(_prop_dofs, lprop_df, xprop_tensor_rank, xvtk_prop, lseq_id);
413 
414 #ifdef DIAGNOSTIC_OUTPUT
415 
416  cout << " prop: " << setw(10) << _prop_dofs[0];
417 #endif
418  }
419  else
420  {
421  lseq_id = lmap_itr->second;
422 
423 #ifdef DIAGNOSTIC_OUTPUT
424 
425  cout << " seq_id:" << setw(6) << lseq_id;
426 #endif
427 
428  }
429 
430  // Transfer the connectivity.
431 
432  xvtk_cell_connectivity.push_back(lseq_id);
433 
434 #ifdef DIAGNOSTIC_OUTPUT
435 
436  cout << endl;
437 #endif
438 
439  }
440 
441  // Postconditions:
442 
443 
444  // Exit:
445 
446  return;
447 }
448 
450 void
452 set_vtk_data(const sec_vd& xcoords,
453  vtkDoubleArray* xvtk_pt_coords,
454  block<int>& xvtk_cell_types,
455  block<vtkIdType>& xvtk_cell_connectivity,
456  block<int>& xvtk_cell_type_map,
457  vtkIdTypeArray* xvtk_pt_label_ids,
458  vtkIdTypeArray* xvtk_cell_label_ids)
459 {
460  // Preconditions:
461 
462  require(xcoords.state_is_read_accessible());
463  require(xcoords.schema().is_same_state(&coordinates_schema()));
464 
466 
467  require(xcoords.schema().df() <= 3);
468 
469 
470  // Body:
471 
472 #ifdef DIAGNOSTIC_OUTPUT
473 
474  cout << "id: " << index()
475  << " eval_id: " << _vis_state.eval_id
476  << endl;
477 #endif
478 
479  if(_coord_state.dofs.ct() == 0)
480  {
481  // The dofs have not been gathered for this coord eval member.
482 
483  _coord_state.gather_dofs(xcoords);
484  }
485 
486  typedef unordered_map<pod_index_type, pod_index_type> map_type;
487  typedef map_type::const_iterator iterator_type;
488 
489  block<discretization_context>& ldisc_mbrs = _vis_state.discretization_members;
490  size_type ldisc_ct = ldisc_mbrs.ct();
491  map_type* lmap = _vis_state.disc_to_seq_map;
492 
493  const index_space_handle& ldisc_id_space =
494  xcoords.schema().discretization_id_space();
495 
496  // Transfer the cell label ids.
497 
498  pod_index_type lvtk_cell_id =
499  _use_cell_top_ids ?
500  _vis_state.eval_id.hub_pod() :
501  xcoords.schema().evaluation().id_space().pod(_vis_state.eval_id);
502 
503  xvtk_cell_label_ids->InsertNextValue(lvtk_cell_id);
504 
505  // Transfer the cell type.
506 
507  xvtk_cell_types.push_back(xvtk_cell_type_map[_vis_state.eval_type_id]);
508 
509  // Transfer the connectivity count.
510 
511  xvtk_cell_connectivity.push_back(ldisc_ct);
512 
513  for(size_type i=0; i<ldisc_ct; ++i)
514  {
515  discretization_context& ldisc_mbr = ldisc_mbrs[i];
516  scoped_index ldisc_id = ldisc_mbr.disc_id;
517  pod_index_type ldisc_pod = ldisc_id.hub_pod();
518  iterator_type lmap_itr = lmap->find(ldisc_pod);
519 
520 #ifdef DIAGNOSTIC_OUTPUT
521 
522  cout << "\tdisc_id: " << setw(6) << ldisc_id;
523 #endif
524 
525  pod_index_type lseq_id;
526 
527  if(lmap_itr == lmap->end())
528  {
529  // Haven't visited this vertex before.
530  // Create a seq id for it.
531 
532  lseq_id = _vis_state.next_seq_id++;
533  (*lmap)[ldisc_pod] = lseq_id;
534 
535 #ifdef DIAGNOSTIC_OUTPUT
536 
537  cout << " seq_id:" << setw(6) << lseq_id;
538 #endif
539 
540  // Transfer the coordinate data;
541  // must evaluate coordintes section at vertices.
542 
543  // Get the local coordinates of the vertex in the element.
544 
545  chart_point_3d ldisc_pt;
546  ldisc_pt.put_chart_id(ldisc_mbr.eval_id);
547 
548  _vis_state.eval->local_coordinates(ldisc_mbr.local_id,
549  ldisc_pt.local_coords(),
550  3);
551 
552  // Unrefine from the element to the coord eval.
553 
556 
557  _coord_state.eval_mbr->unrefine_point_pa(ldisc_pt, ldisc_pt);
558 
559  // Evaluate the global coordinate section.
560 
561  _coord_state.eval->value_at_coord(_coord_state.dofs.base(),
562  _coord_state.dofs.ct(),
563  ldisc_pt.local_coords(),
564  3,
565  _coord_dofs,
566  _coord_state.df);
567 
568  xvtk_pt_coords->SetTuple(lseq_id, _coord_dofs);
569 
570  // Transfer the point label ids.
571 
572  pod_index_type lvtk_pt_id =
573  _use_point_top_ids ?
574  ldisc_id.hub_pod() : ldisc_id_space.pod(ldisc_id);
575 
576  xvtk_pt_label_ids->SetValue(lseq_id, lvtk_pt_id);
577 
578 #ifdef DIAGNOSTIC_OUTPUT
579 
580  cout << " coords: "
581  << setw(6) << _coord_dofs[0]
582  << setw(6) << _coord_dofs[1]
583  << setw(6) << _coord_dofs[2];
584 #endif
585  }
586  else
587  {
588  lseq_id = lmap_itr->second;
589 
590 #ifdef DIAGNOSTIC_OUTPUT
591 
592  cout << " seq_id:" << setw(6) << lseq_id;
593 #endif
594 
595  }
596 
597  // Transfer the connectivity.
598 
599  xvtk_cell_connectivity.push_back(lseq_id);
600 
601 #ifdef DIAGNOSTIC_OUTPUT
602 
603  cout << endl;
604 #endif
605 
606  }
607 
608  // Postconditions:
609 
610 
611  // Exit:
612 
613  return;
614 }
615 
617 void
619 set_vtk_data(const sec_vd& xprop, vtkDoubleArray* xvtk_prop, int xprop_tensor_rank)
620 {
621  // Preconditions:
622 
623  require(has_property());
624  require(xprop.state_is_read_accessible());
625  require(xprop.schema().is_same_state(&property_schema()));
626 
627  // Body:
628 
629 #ifdef DIAGNOSTIC_OUTPUT
630 
631  cout << "id: " << index() << " eval_id: " << _vis_state.eval_id << endl;
632 #endif
633 
634  int lprop_df = xprop.schema().df();
635  block<discretization_context>& ldisc_mbrs = _vis_state.discretization_members;
636  size_type ldisc_ct = ldisc_mbrs.ct();
637 
638  for(size_type i=0; i<ldisc_ct; ++i)
639  {
640  discretization_context& ldisc_mbr = ldisc_mbrs[i];
641  scoped_index ldisc_id = ldisc_mbr.disc_id;
642  pod_index_type ldisc_pod = ldisc_id.hub_pod();
643 
644 #ifdef DIAGNOSTIC_OUTPUT
645 
646  cout << "\tdisc_id: " << setw(6) << ldisc_id;
647 #endif
648 
649  if(!_vis_state.visited[ldisc_pod])
650  {
651  // Haven't visited this vertex before.
652  // Transfer the property data and increment the pt seq id;
653  // no need to evaluate.
654 
655  xprop.get_fiber(ldisc_id, _prop_dofs,
656  static_cast<size_type>(PROP_DOFS_UB)*sizeof(sec_vd_dof_type), false);
657 
658 #ifdef DIAGNOSTIC_OUTPUT
659 
660  cout << " seq_id:" << setw(6) << _pt_seq_id;
661  cout << " prop: " << setw(10) << _prop_dofs[0];
662 #endif
663 
664  put_prop_dofs(_prop_dofs, lprop_df, xprop_tensor_rank, xvtk_prop, _pt_seq_id++);
665 
666  _vis_state.visited.put(ldisc_pod, true);
667  }
668 
669 #ifdef DIAGNOSTIC_OUTPUT
670  cout << endl;
671 #endif
672 
673  }
674 
675  // Postconditions:
676 
677 
678  // Exit:
679 
680  return;
681 }
682 
683 // ===========================================================
684 // VISUALIZATION_ITERATOR_4_2 FACET
685 // ===========================================================
686 
687 
692 {
693  // Preconditions:
694 
695 
696  // Body:
697 
698  // Postconditions:
699 
700  ensure(!is_initialized());
701 
702  // Exit:
703 
704  return;
705 }
706 
710  const section_space_schema_member& xproperty_schema)
712 {
713 
714  // Preconditions:
715 
716  require(xcoordinates_schema.state_is_read_accessible());
717  require(xcoordinates_schema.base_space().schema().conforms_to(base_space_member::standard_schema_path()));
718  require(xproperty_schema.state_is_read_accessible());
719  require(xproperty_schema.base_space().le(&xcoordinates_schema.base_space()));
720  require(xcoordinates_schema.rep().evaluator_family_name() == "uniform");
721  require(xproperty_schema.discretization().name() == "__vertices");
722  require(!(xcoordinates_schema.rep().path() == "sec_rep_descriptors/vertex_cells_dlinear"));
723  require(!(xproperty_schema.rep().path() == "sec_rep_descriptors/vertex_cells_dlinear"));
724 
725  // Body:
726 
727  put_anchor(xcoordinates_schema, xproperty_schema);
728  reset();
729 
730  // Postconditions:
731 
732  ensure(invariant());
733  ensure(is_initialized());
734  ensure(coordinates_schema().is_same_state(&xcoordinates_schema));
735  ensure(coordinates_schema().is_same_type(&xcoordinates_schema));
736  ensure(coordinates_schema().version() == xcoordinates_schema.version());
737  ensure(has_property());
738  ensure(property_schema().is_same_state(&xproperty_schema));
739  ensure(property_schema().is_same_type(&xproperty_schema));
740  ensure(property_schema().version() == xproperty_schema.version());
741  ensure(descending());
742  ensure(!strict());
743  ensure(unexecutable(!is_done() implies this is first member));
744 
745  return;
746 }
747 
748 
753 {
754 
755  // Preconditions:
756 
757  require(xcoordinates_schema.state_is_read_accessible());
758  require(xcoordinates_schema.base_space().schema().conforms_to(base_space_member::standard_schema_path()));
759  require(xcoordinates_schema.rep().evaluator_family_name() == "uniform");
760  require(!(xcoordinates_schema.rep().path() == "sec_rep_descriptors/vertex_cells_dlinear"));
761 
762  // Body:
763 
764  put_anchor(xcoordinates_schema);
765  reset();
766 
767  // Postconditions:
768 
769  ensure(invariant());
770  ensure(is_initialized());
771  ensure(coordinates_schema().is_same_state(&xcoordinates_schema));
772  ensure(coordinates_schema().is_same_type(&xcoordinates_schema));
773  ensure(coordinates_schema().version() == xcoordinates_schema.version());
774  ensure(!has_property());
775  ensure(descending());
776  ensure(!strict());
777  ensure(unexecutable(!is_done() implies this is first member));
778 
779  return;
780 }
781 
782 
786 {
787  // Preconditions:
788 
789  // Body:
790 
791  // Postconditions:
792 
793 }
794 
795 // ===========================================================
796 // PROTECTED MEMBER FUNCTIONS
797 // ===========================================================
798 
799 // =============================================================================
800 // PRIVATE MEMBER FUNCTIONS
801 // =============================================================================
802 
scoped_index eval_id
The eval member the disc member is contained in.
std::string name() const
Definition: subposet.h:796
A context for discretization members. Intended for implementing various iterators, especially concurrent iterations over multiple sections.
scoped_index disc_id
The global index of the disc member.
std::string evaluator_family_name() const
The name of the evaluator family.
int version(bool xunalias=true) const
The (possibly aliased) version of this component. The version of the host used when evaluating proper...
size_type ct() const
The number of items currently in use.
virtual bool is_initialized() const
True if this has been initialized for iteration with respect to a specific anchor.
A point in a 3D chart space.
poset_path path(bool xauto_access=true) const
A path to this component.
bool conforms_to(const schema_poset_member &xother) const
True if the dofs defined by this agree in type and in order with the dofs defined by xother...
bool state_is_read_accessible() const
True if this is attached and if the state is accessible for read or access control is disabled...
void get_fiber(pod_index_type xdisc_id, vd_lite &xfiber) const
Sets xfiber to the fiber referred to by discretization id xdisc_id.
Definition: sec_vd.cc:1087
virtual void set_vtk_data(const sec_vd &xcoords, const sec_vd &xprop, vtkDoubleArray *xvtk_pt_coords, vtkDoubleArray *xvtk_prop, int xprop_tensor_rank, block< int > &xvtk_cell_types, block< vtkIdType > &xvtk_cell_connectivity, block< int > &xvtk_cell_type_map, vtkIdTypeArray *xvtk_pt_label_ids, vtkIdTypeArray *xvtk_cell_label_ids)
Transfers coordinate and property data to vtk data structures.
subposet & evaluation()
The evaluation subposet for section spaces on this schema (mutable version).
virtual visualization_iterator_4_2 * clone() const
Make a new instance of the same type as this.
bool has_property() const
True if this visualization has a property section.
STL namespace.
bool is_same_state(const poset_state_handle *xhost, pod_index_type xhub_id) const
True is this is attached to state with hub id xhub_id in host xhost.
void put_chart_id(pod_index_type xchart)
Sets chart_id() to xchart_id.
Definition: chart_point.cc:103
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
virtual pod_type pod(pod_type xid) const
The pod index in this space equivalent to xid in the hub id space.
Namespace for the tools component of the sheaf system.
virtual bool is_ancestor_of(const any *xother) const
True if other conforms to this.
Abstract base class with useful features for all objects.
Definition: any.h:39
void push_back(const_reference_type item)
Insert item at the end of the items in the auto_block.
bool invariant() const
The class invariant.
int local_id
The local index of the disc member with respect to the eval member.
const section_space_schema_member & coordinates_schema() const
The coordinates field schema member which is being iterated over.
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
bool descending() const
True if iterating over down set of anchor.
bool le(pod_index_type xother_index) const
True if this is less than or equal to the member with index xother_index.
A visualization iterator for uniform coordinates and property section with discretization equal to ve...
void next()
Makes this the next member of the subset.
bool invariant() const
The class invariant.
subposet & discretization()
The discretization subposet for section spaces on this schema (mutable version).
virtual pod_type pod(pod_type xid) const =0
The pod index in this space equivalent to xid in the hub id space.
coord_type * local_coords()
The array of local coordinates.
A section of a fiber bundle with a d-dimensional vector space fiber.
Definition: sec_vd.h:54
bool is_done() const
True if iteration finished.
const scattered_insertion_index_space_handle & id_space() const
The id space for the members of with this (const version).
Definition: subposet.cc:508
static const poset_path & standard_schema_path()
The path of the schema required by this class.
pod_type hub_pod(pod_type xid) const
The pod index in the unglued hub id space equivalent to xid in this id space; synonym for unglued_hub...
void first()
Moves this to the first member of the iteration.
visualization_iterator_4_2()
Creates an uninitialized iterator.
Abstract iterator over the schema of both the coordinates and property sections of a visualization...
virtual void put_anchor(const section_space_schema_member &xcoords_schema, const section_space_schema_member &xprop_schema)
Reinitializes anchor() to iterate over xcoord_schema and xprop_schema.
total_poset_member & base_space()
The base space component of this (mutable version).
const index_space_handle & discretization_id_space() const
The id space for the discretization members in the down set of the base space of this (const version)...
virtual section_space_schema_member & schema()
The restricted schema for this (mutable version).
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
A client handle for a poset member which has been prepared for use as a schema for a section space...
virtual void reset(bool xreset_markers=true)
Restarts the iteration over the down set of anchor().
const section_space_schema_member & property_schema() const
The property field schema member which is being iterated over.
int df() const
The dimension of the fiber space component.
double sec_vd_dof_type
The type of degree of freedom in the section space.
Definition: fiber_bundle.h:78
sec_rep_descriptor & rep()
The representation for section spaces on this schema (mutable version).
virtual schema_poset_member & schema()
The schema for this member (mutable version).
bool is_same_type(const any *other) const
True if other is the same type as this.
Definition: any.cc:79
bool strict() const
True if iterating over xstrict up/down set of anchor.
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
Definition: scoped_index.h:710