123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #pragma once
- #include "ThirdPartyHeadersBegin.h"
- #include <algorithm>
- #include <utility>
- #include <vector>
- #include <boost/foreach.hpp>
- #include <boost/shared_ptr.hpp>
- #include <boost/unordered_map.hpp>
- #include <boost/unordered_set.hpp>
- #include "ThirdPartyHeadersEnd.h"
- #include "FESubzonePartitionerInterface.h"
- #include "fileStuff.h"
- #include "SzlFileLoader.h"
- namespace tecplot
- {
- namespace ___3933
- {
- class ___1350
- {
- UNCOPYABLE_CLASS(___1350);
- public:
- ___1350(___465 ___2781, ___2718 ___2821, ___682 ___2789, boost::shared_ptr<FESubzonePartitionerInterface> subzonePartitioner, ___2090::___2980 ___2977 = ___2090::UNKNOWN_PARTITION, ___465 numGhostCells = 0, ___2718 numGhostNodes = 0) : m_numCells(___2781), m_numNodes(___2821), m_numCorners(___2789), m_subzonePartitioner(subzonePartitioner), m_partition(___2977), m_numGhostCells(numGhostCells), m_numGhostNodes(numGhostNodes), m_numReferencedPartitions(0) {}
- ~___1350() {}
- typedef boost::unordered_map<___2090::SubzoneOffset_t, boost::unordered_set<PartitionSubzone>> NeighborCszRefMap;
- typedef boost::unordered_map<___2090::SubzoneOffset_t, std::vector<___2479>> NszMinMaxMap;
- static ___2090::SubzoneOffset_t calcNumSubzones(___81 ___2812)
- {
- REQUIRE(___2812 > 0);
- REQUIRE(___2090::MAX_ITEM_OFFSET + 1 == DEFAULT_SUBZONE_MAX_FE_SIZE);
- ___2090::SubzoneOffset_t const numSubzones = ___2090::SubzoneOffset_t(1 + ((___2812 - 1) >> ___2090::ItemOffsetBitSize));
- ENSURE(numSubzones > 0 && numSubzones <= ___2812);
- return numSubzones;
- }
- ___2090::___2980 getPartition() const { return m_partition; }
- ___465 ___1766() const { return m_numCells; }
- ___2718 ___1768() const { return m_numNodes; }
- ___682 ___1767() const { return m_numCorners; }
- ___465 getNumGhostCells() const { return m_numGhostCells; }
- ___2718 getNumGhostNodes() const { return m_numGhostNodes; }
- inline ___2090::SubzoneOffset_t ___2783() const
- {
- ___2090::SubzoneOffset_t const ___2783 = m_subzonePartitioner->___2783();
- ENSURE(___2783 == 0 || ___2783 == calcNumSubzones(m_numCells - m_numGhostCells));
- return ___2783;
- }
- ___2090::ItemOffset_t ___2782(___2090::SubzoneOffset_t ___469) const { return m_subzonePartitioner->___2782(___469); }
- ___465 ___4608(___2090 szCoordinate) const { return m_subzonePartitioner->___4608(szCoordinate); }
- inline ___2090::SubzoneOffset_t ___2823() const
- {
- ___2090::SubzoneOffset_t const ___2823 = m_subzonePartitioner->___2823();
- ENSURE(___2823 == 0 || ___2823 == calcNumSubzones(m_numNodes - m_numGhostNodes));
- return ___2823;
- }
- ___2090::ItemOffset_t ___2822(___2090::SubzoneOffset_t ___2734) const { return m_subzonePartitioner->___2822(___2734); }
- ___2718 ___4657(___2090 szCoordinate) const { return m_subzonePartitioner->___4657(szCoordinate); }
- void addNeighborNodeCoordinate(___2718 ___4656, ___2090 szCoordinate) { m_subzonePartitioner->setNodeSubzoneCoordinate(___4656, szCoordinate); }
- inline void addNeighborCszInfo(tecplot::___2090::___2980 neighbor, std::vector<___2718> const &nodes, std::vector<boost::unordered_set<___2090::SubzoneOffset_t>> const &cellSubzones, std::vector<std::vector<___2479>> const &varMinMaxes)
- {
- REQUIRE(getPartition() != ___2090::INVALID_PARTITION);
- REQUIRE(neighbor != getPartition());
- REQUIRE(!nodes.empty());
- REQUIRE(nodes.size() == cellSubzones.size());
- REQUIRE(cellSubzones.size() == varMinMaxes.size());
- if (m_numReferencedPartitions == 0)
- {
- m_numReferencedPartitions = 2;
- m_referencedPartitions.alloc(m_numReferencedPartitions);
- m_referencedPartitions[0] = getPartition();
- m_referencedPartitions[1] = neighbor;
- }
- else
- {
- std::set<tecplot::___2090::___2980> partitions(m_referencedPartitions.begin(), m_referencedPartitions.end(m_numReferencedPartitions));
- if (partitions.insert(neighbor).second)
- {
- ++m_numReferencedPartitions;
- m_referencedPartitions.___937();
- m_referencedPartitions.alloc(m_numReferencedPartitions);
- int i = 0;
- BOOST_FOREACH (tecplot::___2090::___2980 ___2977, partitions)
- m_referencedPartitions[i++] = ___2977;
- }
- }
- for (size_t i = 0; i < nodes.size(); ++i)
- {
- ___2090 szCoordinate = ___3924(nodes[i]);
- ___2090::SubzoneOffset_t ___2757 = szCoordinate.subzoneOffset();
- BOOST_FOREACH (___2090::SubzoneOffset_t ___469, cellSubzones[i])
- m_neighborCszRefs[___2757].insert(PartitionSubzone(neighbor, ___469));
- std::vector<___2479> &minMaxes = m_nszMinMaxes[___2757];
- if (minMaxes.empty())
- minMaxes.resize(varMinMaxes[i].size());
- for (size_t ___2105 = 0; ___2105 < varMinMaxes[i].size(); ++___2105)
- minMaxes[___2105].include(varMinMaxes[i][___2105]);
- }
- }
- inline void addNeighborCszRef(___2090::SubzoneOffset_t ___2757, ___2090 cellCoordinate) { m_neighborCszRefs[___2757].insert(PartitionSubzone(cellCoordinate.___2977(), cellCoordinate.subzoneOffset())); }
- NeighborCszRefMap const &getNeighborCszRefs() const { return m_neighborCszRefs; }
- NszMinMaxMap const &getNszMinMaxes() const { return m_nszMinMaxes; }
- inline void resetNeighborInfo()
- {
- m_neighborCszRefs.clear();
- m_nszMinMaxes.clear();
- m_numReferencedPartitions = 0;
- m_referencedPartitions.___937();
- }
- inline ___2090 ___3924(___2718 ___4656) const
- {
- REQUIRE(0 <= ___4656 && ___4656 < m_numNodes);
- return m_subzonePartitioner->___3924(___4656);
- }
- inline ___2090 szCoordinateAtZoneCell(___2718 zoneCell) const
- {
- REQUIRE(0 <= zoneCell && zoneCell < m_numCells);
- return m_subzonePartitioner->szCoordinateAtZoneCell(zoneCell);
- }
- inline void addReferencedPartitions(std::set<tecplot::___2090::___2980> const &partitionSet)
- {
- REQUIRE(getPartition() != ___2090::INVALID_PARTITION);
- REQUIRE(!partitionSet.empty());
- std::set<tecplot::___2090::___2980> partitions(partitionSet);
- for (tecplot::___2090::___2980 i = 0; i < m_numReferencedPartitions; ++i)
- partitions.insert(m_referencedPartitions[i]);
- partitions.insert(getPartition());
- if (m_numReferencedPartitions != static_cast<tecplot::___2090::___2980>(partitions.size()))
- {
- m_referencedPartitions.___937();
- m_referencedPartitions.alloc((uint64_t)partitions.size());
- int i = 0;
- BOOST_FOREACH (tecplot::___2090::___2980 ___2977, partitions)
- {
- m_referencedPartitions[i] = ___2977;
- ++i;
- }
- m_numReferencedPartitions = i;
- }
- }
- tecplot::___2090::___2980 getNumReferencedPartitions() const { return m_numReferencedPartitions; }
- PartitionArray const &getReferencedPartitions() const { return m_referencedPartitions; }
- private:
- ___465 const m_numCells;
- ___2718 const m_numNodes;
- ___682 const m_numCorners;
- boost::shared_ptr<FESubzonePartitionerInterface> m_subzonePartitioner;
- ___2090::___2980 m_partition;
- ___465 const m_numGhostCells;
- ___2718 const m_numGhostNodes;
- NeighborCszRefMap m_neighborCszRefs;
- NszMinMaxMap m_nszMinMaxes;
- tecplot::___2090::___2980 m_numReferencedPartitions;
- PartitionArray m_referencedPartitions;
- };
- }
- }
|