262 hasMPISupport_ =
true;
270 template <
typename dataType,
typename triangulationType>
272 bool bypassCache =
false,
273 const std::vector<bool> *updateMask =
nullptr);
275 template <
typename triangulationType>
277 bool bypassCache =
false,
278 const std::vector<bool> *updateMask =
nullptr);
281 template <
typename triangulationType>
282 int getSimplexRankWithGradientType(
const triangulationType &triangulation,
284 const int gradientType);
295 const size_t mTime) {
304 inline void setSeed(
const unsigned int &newSeed) {
329 if(data !=
nullptr) {
343 }
else if(dim == 3) {
395 template <
typename triangulationType>
397 const triangulationType &triangulation)
const;
402 template <
typename triangulationType>
404 const triangulationType &triangulation)
const;
417 template <
typename triangulationType>
419 const triangulationType &triangulation,
420 bool isReverse =
false)
const;
425 template <
typename triangulationType>
427 std::vector<Cell> &vpath,
428 const triangulationType &triangulation,
429 const bool enableCycleDetector =
false)
const;
434 template <
typename triangulationType>
436 std::vector<Cell> &vpath,
437 const triangulationType &triangulation)
const;
443 template <
typename triangulationType>
446 const std::vector<bool> &isVisited,
447 std::vector<Cell> *
const vpath,
448 const triangulationType &triangulation,
449 const bool stopIfMultiConnected =
false,
450 const bool enableCycleDetector
457 template <
typename triangulationType>
460 const std::vector<bool> &isVisited,
461 std::vector<Cell> *
const vpath,
462 const triangulationType &triangulation,
463 const bool stopIfMultiConnected =
false,
464 const bool enableCycleDetector =
false,
465 bool *
const cycleFound =
nullptr)
const;
471 template <
typename triangulationType>
473 const triangulationType &triangulation)
const;
478 template <
typename triangulationType>
481 const triangulationType &triangulation,
482 std::vector<Cell> *
const wall =
nullptr,
483 std::vector<SimplexId> *
const saddles
489 template <
typename triangulationType>
492 const triangulationType &triangulation,
493 std::vector<Cell> *
const wall =
nullptr,
494 std::vector<SimplexId> *
const saddles
501 template <
typename triangulationType>
504 const triangulationType &triangulation)
const;
510 template <
typename triangulationType>
513 const triangulationType &triangulation)
const;
523 template <
typename triangulationType>
525 const std::array<std::vector<SimplexId>, 4> &criticalCellsByDim,
526 std::vector<std::array<float, 3>> &points,
527 std::vector<char> &cellDimensions,
528 std::vector<SimplexId> &cellIds,
529 std::vector<char> &isOnBoundary,
530 std::vector<SimplexId> &PLVertexIdentifiers,
531 const triangulationType &triangulation)
const;
537 template <
typename triangulationType>
539 std::vector<char> &cellDimensions,
540 std::vector<SimplexId> &cellIds,
541 std::vector<char> &isOnBoundary,
542 std::vector<SimplexId> &PLVertexIdentifiers,
543 const triangulationType &triangulation)
const;
548 template <
typename triangulationType>
550 std::array<std::vector<SimplexId>, 4> &criticalCellsByDim,
551 const triangulationType &triangulation)
const;
556 template <
typename triangulationType>
558 const triangulationType &triangulation)
const;
564 void setCellToGhost(
const int cellDim,
const SimplexId cellId);
571 const std::array<std::vector<SimplexId>, 4> &criticalCellsByDim,
572 const SimplexId *
const ascendingManifold,
573 const SimplexId *
const descendingManifold,
574 std::vector<SimplexId> &manifoldSize)
const;
579 template <
typename triangulationType>
581 std::vector<char> &points_pairOrigins,
582 std::vector<char> &cells_pairTypes,
583 std::vector<SimplexId> &cellsIds,
584 std::vector<char> &cellsDimensions,
585 const triangulationType &triangulation)
const;
597 using lowerStarType = std::array<std::vector<CellExt>, 4>;
608 template <
typename triangulationType>
609 inline void lowerStar(lowerStarType &ls,
612 const triangulationType &triangulation)
const;
623 template <
typename triangulationType>
624 inline void lowerStarWithMask(lowerStarType &ls,
627 const triangulationType &triangulation,
628 const std::vector<bool> *updateMask
640 std::pair<size_t, SimplexId>
641 numUnpairedFaces(
const CellExt &c,
const lowerStarType &ls)
const;
642 std::pair<size_t, SimplexId>
643 numUnpairedFacesTriangle(
const CellExt &c,
644 const lowerStarType &ls)
const;
645 std::pair<size_t, SimplexId>
646 numUnpairedFacesTetra(
const CellExt &c,
const lowerStarType &ls)
const;
654 template <
typename triangulationType>
655 inline void pairCells(
CellExt &alpha,
657 const triangulationType &triangulation);
665 template <
typename triangulationType>
666 int processLowerStars(
const SimplexId *
const offsets,
667 const triangulationType &triangulation);
675 template <
typename triangulationType>
676 int processLowerStarsWithMask(
const SimplexId *
const offsets,
677 const triangulationType &triangulation,
678 const std::vector<bool> *updateMask
681 template <
typename dataType,
typename triangulationType>
682 int processLowerStarsStochastic(
const SimplexId *
const offsets,
683 const triangulationType &triangulation);
685 template <
typename triangulationType>
687 const std::array<float, 3> xCoords,
688 const triangulationType &triangulation,
689 std::vector<SimplexId> &stencilIds,
690 std::vector<float> &stencilLength);
696 void computeDerivatives(
698 const std::vector<SimplexId> &stencilIds,
699 const std::array<float, 3> &xCoords,
700 const std::vector<std::array<float, 3>> &stencilCoords,
712 template <
typename dataType,
typename triangulationType>
713 int getRemovableSaddles1(
714 const std::vector<std::pair<SimplexId, char>> &criticalPoints,
715 const bool allowBoundary,
716 std::vector<char> &isRemovableSaddle,
717 std::vector<SimplexId> &pl2dmt_saddle,
718 const triangulationType &triangulation);
724 template <
typename dataType,
typename triangulationType>
725 int getRemovableSaddles2(
726 const std::vector<std::pair<SimplexId, char>> &criticalPoints,
727 const bool allowBoundary,
728 std::vector<char> &isRemovableSaddle,
729 std::vector<SimplexId> &pl2dmt_saddle,
730 const triangulationType &triangulation);
737 template <
typename dataType,
typename triangulationType>
738 int initializeSaddleSaddleConnections1(
739 const std::vector<char> &isRemovableSaddle1,
740 const std::vector<char> &isRemovableSaddle2,
741 const bool allowBruteForce,
742 std::vector<VPath> &vpaths,
743 std::vector<CriticalPoint> &criticalPoints,
744 std::vector<SimplexId> &saddle1Index,
745 std::vector<SimplexId> &saddle2Index,
746 const triangulationType &triangulation)
const;
754 template <
typename dataType,
typename triangulationType>
755 int initializeSaddleSaddleConnections2(
756 const std::vector<char> &isRemovableSaddle1,
757 const std::vector<char> &isRemovableSaddle2,
758 const bool allowBruteForce,
759 std::vector<VPath> &vpaths,
760 std::vector<CriticalPoint> &criticalPoints,
761 std::vector<SimplexId> &saddle1Index,
762 std::vector<SimplexId> &saddle2Index,
763 const triangulationType &triangulation)
const;
769 template <
typename dataType>
770 int orderSaddleSaddleConnections1(
771 const std::vector<VPath> &vpaths,
772 std::vector<CriticalPoint> &criticalPoints,
773 std::set<std::tuple<dataType, SimplexId, SimplexId>,
780 template <
typename dataType>
781 int orderSaddleSaddleConnections2(
782 const std::vector<VPath> &vpaths,
783 std::vector<CriticalPoint> &criticalPoints,
784 std::set<std::tuple<dataType, SimplexId, SimplexId>,
791 template <
typename dataType,
typename triangulationType>
792 int processSaddleSaddleConnections1(
793 const int iterationThreshold,
794 const std::vector<char> &isPL,
795 const bool allowBoundary,
796 const bool allowBruteForce,
797 const bool returnSaddleConnectors,
798 std::set<std::tuple<dataType, SimplexId, SimplexId>,
800 std::vector<SimplexId> &pl2dmt_saddle1,
801 std::vector<SimplexId> &pl2dmt_saddle2,
802 std::vector<char> &isRemovableSaddle1,
803 std::vector<char> &isRemovableSaddle2,
804 std::vector<VPath> &vpaths,
805 std::vector<CriticalPoint> &criticalPoints,
806 std::vector<SimplexId> &saddle1Index,
807 std::vector<SimplexId> &saddle2Index,
808 const triangulationType &triangulation);
815 template <
typename dataType,
typename triangulationType>
816 int processSaddleSaddleConnections2(
817 const int iterationThreshold,
818 const std::vector<char> &isPL,
819 const bool allowBoundary,
820 const bool allowBruteForce,
821 const bool returnSaddleConnectors,
822 std::set<std::tuple<dataType, SimplexId, SimplexId>,
824 std::vector<SimplexId> &pl2dmt_saddle1,
825 std::vector<SimplexId> &pl2dmt_saddle2,
826 std::vector<char> &isRemovableSaddle1,
827 std::vector<char> &isRemovableSaddle2,
828 std::vector<VPath> &vpaths,
829 std::vector<CriticalPoint> &criticalPoints,
830 std::vector<SimplexId> &saddle1Index,
831 std::vector<SimplexId> &saddle2Index,
832 const triangulationType &triangulation);
838 template <
typename dataType,
typename triangulationType>
841 const dataType *
const scalars,
842 const triangulationType &triangulation)
const;
871 template <
typename triangulationType>
873 const triangulationType &triangulation)
const;
878 template <
typename triangulationType>
880 const triangulationType &triangulation)
const;
885 template <
typename triangulationType>
887 const triangulationType &triangulation,
888 bool cancelReversal =
false)
const;
893 template <
typename triangulationType>
895 const std::vector<Cell> &vpath,
896 const triangulationType &triangulation)
const;
902 const std::vector<std::pair<SimplexId, char>> &criticalPoints,
903 std::vector<char> &isPL);
909 template <
typename dataType,
typename triangulationType>
911 const std::vector<std::pair<SimplexId, char>> &criticalPoints,
912 const std::vector<char> &isPL,
913 const int iterationThreshold,
914 const bool allowBoundary,
915 const bool allowBruteForce,
916 const bool returnSaddleConnectors,
917 const triangulationType &triangulation);
923 template <
typename dataType,
typename triangulationType>
925 const std::vector<std::pair<SimplexId, char>> &criticalPoints,
926 const std::vector<char> &isPL,
927 const int iterationThreshold,
928 const bool allowBoundary,
929 const bool allowBruteForce,
930 const bool returnSaddleConnectors,
931 const triangulationType &triangulation);
933 template <
typename dataType,
typename triangulationType>
935 const triangulationType &triangulation);