123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- #pragma once
- #include "ThirdPartyHeadersBegin.h"
- #include <algorithm>
- #include "ThirdPartyHeadersEnd.h"
- #include "SzlFileLoader.h"
- #include "IJK.h"
- namespace tecplot
- {
- namespace ___3933
- {
- class IJKSubzoneInfo
- {
- private:
- ___1844 m_zoneIJKDim;
- ___1844 m_zoneLastIJKIndex;
- ___1844 m_subzoneItemsMaxIJKDim;
- ___2090::___2980 m_partition;
- ___1844 m_subzoneTilingIJKDim;
- ___1844 m_subzoneTilingIJKShift;
- ___2090::SubzoneOffset_t m_numSubzones;
- #if !defined NO_ASSERTS
- bool ___2492;
- #endif
- public:
- IJKSubzoneInfo(___1844 const &zoneIJKDim, ___1844 const &subzoneMaxIJKDim, ___2090::___2980 ___2977, bool minimizeNumSubzones) : m_zoneIJKDim(zoneIJKDim), m_zoneLastIJKIndex(zoneIJKDim.maxOp(1) - 1), m_subzoneItemsMaxIJKDim(subzoneMaxIJKDim), m_partition(___2977), m_subzoneTilingIJKDim(numSubzonesForDirection(zoneIJKDim.i(), ___2090::ItemOffset_t(subzoneMaxIJKDim.i()), minimizeNumSubzones), numSubzonesForDirection(zoneIJKDim.___2105(), ___2090::ItemOffset_t(subzoneMaxIJKDim.___2105()), minimizeNumSubzones), numSubzonesForDirection(zoneIJKDim.___2134(), ___2090::ItemOffset_t(subzoneMaxIJKDim.___2134()), minimizeNumSubzones)), m_subzoneTilingIJKShift(subzoneShiftForDirection(zoneIJKDim.i(), ___2090::ItemOffset_t(subzoneMaxIJKDim.i()), minimizeNumSubzones), subzoneShiftForDirection(zoneIJKDim.___2105(), ___2090::ItemOffset_t(subzoneMaxIJKDim.___2105()), minimizeNumSubzones), subzoneShiftForDirection(zoneIJKDim.___2134(), ___2090::ItemOffset_t(subzoneMaxIJKDim.___2134()), minimizeNumSubzones)), m_numSubzones(___2090::SubzoneOffset_t(m_subzoneTilingIJKDim.blockSize()))
- #if !defined NO_ASSERTS
- ,
- ___2492(minimizeNumSubzones)
- #endif
- {
- REQUIRE(zoneIJKDim > 0);
- REQUIRE(subzoneMaxIJKDim > 0);
- }
- IJKSubzoneInfo() : m_zoneIJKDim(0, 0, 0), m_zoneLastIJKIndex(0, 0, 0), m_subzoneItemsMaxIJKDim(0, 0, 0), m_subzoneTilingIJKDim(0, 0, 0), m_subzoneTilingIJKShift(0, 0, 0), m_numSubzones(0) {}
- ~IJKSubzoneInfo() {}
- inline void swap(IJKSubzoneInfo &___2888)
- {
- using std::swap;
- swap(m_zoneIJKDim, ___2888.m_zoneIJKDim);
- swap(m_zoneLastIJKIndex, ___2888.m_zoneLastIJKIndex);
- swap(m_subzoneItemsMaxIJKDim, ___2888.m_subzoneItemsMaxIJKDim);
- swap(m_subzoneTilingIJKDim, ___2888.m_subzoneTilingIJKDim);
- swap(m_subzoneTilingIJKShift, ___2888.m_subzoneTilingIJKShift);
- swap(m_numSubzones, ___2888.m_numSubzones);
- }
- inline void reset(___1844 const &zoneIJKSize, ___1844 const &subzoneIJKMax, bool minimizeNumSubzones = DEFAULT_MINIMIZE_IJK_NUM_SUBZONES)
- {
- REQUIRE(zoneIJKSize > 0);
- REQUIRE(subzoneIJKMax > 0);
- REQUIRE(minimizeNumSubzones == DEFAULT_MINIMIZE_IJK_NUM_SUBZONES);
- m_zoneIJKDim = zoneIJKSize;
- m_zoneLastIJKIndex = zoneIJKSize.maxOp(1) - 1;
- m_subzoneItemsMaxIJKDim = subzoneIJKMax;
- m_subzoneTilingIJKDim = ___1844(numSubzonesForDirection(zoneIJKSize.i(), ___2090::ItemOffset_t(subzoneIJKMax.i()), minimizeNumSubzones), numSubzonesForDirection(zoneIJKSize.___2105(), ___2090::ItemOffset_t(subzoneIJKMax.___2105()), minimizeNumSubzones), numSubzonesForDirection(zoneIJKSize.___2134(), ___2090::ItemOffset_t(subzoneIJKMax.___2134()), minimizeNumSubzones));
- m_subzoneTilingIJKShift = ___1844(subzoneShiftForDirection(zoneIJKSize.i(), ___2090::ItemOffset_t(subzoneIJKMax.i()), minimizeNumSubzones), subzoneShiftForDirection(zoneIJKSize.___2105(), ___2090::ItemOffset_t(subzoneIJKMax.___2105()), minimizeNumSubzones), subzoneShiftForDirection(zoneIJKSize.___2134(), ___2090::ItemOffset_t(subzoneIJKMax.___2134()), minimizeNumSubzones));
- m_numSubzones = ___2090::SubzoneOffset_t(m_subzoneTilingIJKDim.blockSize());
- }
- inline bool ___2067() const { return m_zoneIJKDim > 0 && m_subzoneItemsMaxIJKDim > 0; }
- inline bool validSubzone(___2090::SubzoneOffset_t ___3880) const { return ___3880 < getNumSzs(); }
- inline bool validSzAddress(___2090::SubzoneAddress szAddress) const { return validSubzone(szAddress.subzoneOffset()) && szAddress.___2977() == m_partition; }
- inline bool validItemAddress(___2090 ___2089) const { return validSzAddress(___2089.subzoneAddress()) && ___2089.itemOffset() < numItemsInSz(___2089.subzoneOffset()); }
- ___81 getNumItems(void) const { return m_zoneIJKDim.blockSize(); }
- ___1844 const &ijkDim(void) const { return m_zoneIJKDim; }
- ___1844 const &ijkLastIndex(void) const
- {
- ___478(m_zoneLastIJKIndex == m_zoneIJKDim.maxOp(1) - 1);
- return m_zoneLastIJKIndex;
- }
- ___2090::SubzoneOffset_t getNumSzs(void) const
- {
- ENSURE(m_numSubzones == ___2090::SubzoneOffset_t(m_subzoneTilingIJKDim.blockSize()));
- ENSURE(m_numSubzones == calcNumSubzones(m_zoneIJKDim, m_subzoneItemsMaxIJKDim, ___2492));
- return m_numSubzones;
- }
- static inline ___2090::SubzoneOffset_t numSubzonesForDirection(___81 itemIndexDim, ___2090::ItemOffset_t subzoneIndexMax, bool minimizeNumSubzones = DEFAULT_MINIMIZE_IJK_NUM_SUBZONES)
- {
- REQUIRE(itemIndexDim > 0);
- REQUIRE(subzoneIndexMax <= ___2090::MAX_ITEM_OFFSET + 1);
- ___2090::SubzoneOffset_t numSubzonesForDir;
- if (minimizeNumSubzones)
- {
- numSubzonesForDir = ___2090::SubzoneOffset_t((itemIndexDim + subzoneIndexMax - 1) / subzoneIndexMax);
- }
- else
- {
- numSubzonesForDir = ___2090::SubzoneOffset_t(1 + (itemIndexDim / subzoneIndexMax));
- }
- ENSURE(numSubzonesForDir > 0);
- ENSURE((___81)numSubzonesForDir * subzoneIndexMax >= itemIndexDim);
- ENSURE(IMPLICATION(minimizeNumSubzones, ___81(numSubzonesForDir - 1) * subzoneIndexMax < itemIndexDim));
- return numSubzonesForDir;
- }
- static ___2090::SubzoneOffset_t calcNumSubzones(___1844 const &zoneIJKDim, ___1844 const &subzoneIJKMax, bool minimizeIJKNumSubzones)
- {
- REQUIRE(zoneIJKDim > 0);
- REQUIRE(subzoneIJKMax > 0);
- ___1844 const subzoneTilingIJK(numSubzonesForDirection(zoneIJKDim.i(), ___2090::ItemOffset_t(subzoneIJKMax.i()), minimizeIJKNumSubzones), numSubzonesForDirection(zoneIJKDim.___2105(), ___2090::ItemOffset_t(subzoneIJKMax.___2105()), minimizeIJKNumSubzones), numSubzonesForDirection(zoneIJKDim.___2134(), ___2090::ItemOffset_t(subzoneIJKMax.___2134()), minimizeIJKNumSubzones));
- ___2090::SubzoneOffset_t const numSubzones = ___2090::SubzoneOffset_t(subzoneTilingIJK.blockSize());
- ENSURE(numSubzones > 0 && numSubzones <= zoneIJKDim.blockSize());
- return numSubzones;
- }
- static inline ___2090::ItemOffset_t subzoneShiftForDirection(___81 itemIndexDim, ___2090::ItemOffset_t subzoneIndexMax, bool minimizeNumSubzones = DEFAULT_MINIMIZE_IJK_NUM_SUBZONES)
- {
- REQUIRE(itemIndexDim > 0);
- REQUIRE(subzoneIndexMax >= 3 && subzoneIndexMax <= ___2090::MAX_ITEM_OFFSET + 1);
- ___2090::ItemOffset_t const remainder = ___2090::ItemOffset_t(itemIndexDim % subzoneIndexMax);
- ___2090::ItemOffset_t subzoneShift = (subzoneIndexMax - remainder) / 2;
- if (minimizeNumSubzones && remainder == 0)
- subzoneShift = 0;
- ENSURE(subzoneShift < subzoneIndexMax);
- return subzoneShift;
- }
- public:
- ___1844 itemIJKStart(___1844 const &szIJK) const
- {
- INVARIANT(m_subzoneTilingIJKShift < m_subzoneItemsMaxIJKDim);
- ___1844 const indexStart = m_subzoneTilingIJKShift.maxOp(szIJK * m_subzoneItemsMaxIJKDim) - m_subzoneTilingIJKShift;
- ENSURE(indexStart >= 0);
- return indexStart;
- }
- ___1844 itemIJKEnd(___1844 const &szIJK) const
- {
- INVARIANT(m_subzoneTilingIJKShift < m_subzoneItemsMaxIJKDim);
- ___1844 const indexEnd = m_zoneIJKDim.minOp((szIJK + 1) * m_subzoneItemsMaxIJKDim - m_subzoneTilingIJKShift) - 1;
- ENSURE(indexEnd < m_zoneIJKDim);
- return indexEnd;
- }
- ___1844 szIJKAtSzIndex(___2090::SubzoneOffset_t ___3880) const
- {
- REQUIRE(validSubzone(___3880));
- ___1844 const subzoneIJK = m_subzoneTilingIJKDim.ijkAtOffset(___3880);
- ENSURE(subzoneIJK < m_subzoneTilingIJKDim);
- return subzoneIJK;
- }
- ___2090::SubzoneAddress szAddressAtSzIJK(___1844 const &szIJK) const
- {
- REQUIRE(szIJK < m_subzoneTilingIJKDim);
- ___2090::SubzoneAddress const szAddress(m_partition, static_cast<___2090::SubzoneOffset_t>(m_subzoneTilingIJKDim.offsetAtIJK(szIJK)));
- ENSURE(validSzAddress(szAddress));
- ENSURE(szIJKAtSzIndex(szAddress.subzoneOffset()) == szIJK);
- return szAddress;
- }
- void subzoneIJKStartAndEnd(___2090::SubzoneOffset_t ___3880, ___1844 &___1880, ___1844 &___1852) const
- {
- REQUIRE(___3880 < getNumSzs());
- ___1844 const szIJK = szIJKAtSzIndex(___3880);
- ___1880 = itemIJKStart(szIJK);
- ___1852 = itemIJKEnd(szIJK);
- ENSURE(___1880 < m_zoneIJKDim);
- ENSURE(___1852 < m_zoneIJKDim);
- ENSURE(szAddressAtItemIJK(___1880).subzoneOffset() == ___3880);
- ENSURE(szAddressAtItemIJK(___1852).subzoneOffset() == ___3880);
- }
- ___1844 subzoneIJKStart(___2090::SubzoneOffset_t ___3880) const
- {
- REQUIRE(___3880 < getNumSzs());
- ___1844 const szIJK = szIJKAtSzIndex(___3880);
- ___1844 const ___1880 = itemIJKStart(szIJK);
- ENSURE(___1880 < m_zoneIJKDim);
- ENSURE(szAddressAtItemIJK(___1880).subzoneOffset() == ___3880);
- return ___1880;
- }
- ___1844 subzoneIJKEnd(___2090::SubzoneOffset_t ___3880) const
- {
- REQUIRE(___3880 < getNumSzs());
- ___1844 const szIJK = szIJKAtSzIndex(___3880);
- ___1844 const ___1852 = itemIJKEnd(szIJK);
- ENSURE(___1852 < m_zoneIJKDim);
- ENSURE(szAddressAtItemIJK(___1852).subzoneOffset() == ___3880);
- return ___1852;
- }
- ___1844 szIJKAtItemIJK(___1844 const &itemIJK) const
- {
- REQUIRE(itemIJK < m_zoneIJKDim);
- ___1844 const szIJK = (itemIJK + m_subzoneTilingIJKShift) / m_subzoneItemsMaxIJKDim;
- ENSURE(szIJK < m_subzoneTilingIJKDim);
- return szIJK;
- }
- ___2090::SubzoneAddress szAddressAtItemIJK(___1844 const &itemIJK) const
- {
- REQUIRE(itemIJK < m_zoneIJKDim);
- ___1844 const subzoneIJK = szIJKAtItemIJK(itemIJK);
- ___2090::SubzoneAddress const szAddress(m_partition, static_cast<___2090::SubzoneOffset_t>(m_subzoneTilingIJKDim.offsetAtIJK(subzoneIJK)));
- ENSURE(validSzAddress(szAddress));
- return szAddress;
- }
- ___2090::SubzoneAddress szAddressAtItemIndex(___81 itemIndex) const
- {
- REQUIRE(itemIndex < getNumItems());
- ___1844 const itemIJK = m_zoneIJKDim.ijkAtOffset(itemIndex);
- ___2090::SubzoneAddress const szAddress = szAddressAtItemIJK(itemIJK);
- ENSURE(validSzAddress(szAddress));
- return szAddress;
- }
- ___2090 itemAddressAtItemIJK(___1844 const &itemIJK, ___1844 const &szIJK) const
- {
- REQUIRE(itemIJK < m_zoneIJKDim);
- REQUIRE(szIJK < m_subzoneTilingIJKDim);
- ___2090::SubzoneOffset_t const szOffset = static_cast<___2090::SubzoneOffset_t>(m_subzoneTilingIJKDim.offsetAtIJK(szIJK));
- ___1844 const ___1880 = itemIJKStart(szIJK);
- ___1844 const ___1852 = itemIJKEnd(szIJK);
- ___1844 const localMax = ___1852 - ___1880 + 1;
- ___1844 const localIJK = itemIJK - ___1880;
- ___478(localIJK <= localMax);
- ___2090::ItemOffset_t const itemOffset = ___2090::ItemOffset_t(localMax.offsetAtIJK(localIJK));
- ENSURE(itemOffset < localMax.blockSize());
- return ___2090(m_partition, szOffset, itemOffset);
- }
- ___1844 subzoneIJKDim(___2090::SubzoneOffset_t ___3880) const
- {
- REQUIRE(validSubzone(___3880));
- ___1844 szIJKStart, szIJKEnd;
- subzoneIJKStartAndEnd(___3880, szIJKStart, szIJKEnd);
- ___1844 const szIJKDim = szIJKEnd - szIJKStart + 1;
- return szIJKDim;
- }
- ___2090::ItemOffset_t numItemsInSz(___2090::SubzoneOffset_t ___3880) const
- {
- REQUIRE(validSubzone(___3880));
- return ___2090::ItemOffset_t(subzoneIJKDim(___3880).blockSize());
- }
- ___2090 itemAddressAtItemIJK(___1844 const &itemIJK) const
- {
- REQUIRE(itemIJK < m_zoneIJKDim);
- ___1844 const szIJK = szIJKAtItemIJK(itemIJK);
- return itemAddressAtItemIJK(itemIJK, szIJK);
- }
- ___1844 itemIJKAtItemAddress(___2090 ___2089) const
- {
- REQUIRE(validItemAddress(___2089));
- ___2090::SubzoneOffset_t const ___3880 = ___2089.subzoneOffset();
- ___1844 ___1880, ___1852;
- subzoneIJKStartAndEnd(___3880, ___1880, ___1852);
- ___2090::ItemOffset_t const ___2865 = ___2089.itemOffset();
- ___1844 const ijkRange = ___1852 - ___1880 + 1;
- ___1844 const ___1862 = ijkRange.ijkAtOffset(___2865);
- ___1844 const itemIJK = ___1880 + ___1862;
- ENSURE(itemIJK < m_zoneIJKDim);
- ENSURE(itemAddressAtItemIJK(itemIJK) == ___2089);
- return itemIJK;
- }
- inline ___2090 itemAddressAtItemIndex(___81 itemIndex) const
- {
- REQUIRE(itemIndex < getNumItems());
- ___1844 const itemIJK = itemIJKAtItemIndex(itemIndex);
- ___2090 const ___2089 = itemAddressAtItemIJK(itemIJK);
- return ___2089;
- }
- inline ___81 itemIndexAtItemAddress(___2090 ___2089) const
- {
- REQUIRE(validItemAddress(___2089));
- ___1844 const itemIJK = itemIJKAtItemAddress(___2089);
- ___81 const itemIndex = itemIndexAtItemIJK(itemIJK);
- ENSURE(itemIndex < getNumItems());
- ENSURE(itemAddressAtItemIndex(itemIndex) == ___2089);
- return itemIndex;
- }
- inline ___81 itemIndexAtItemIJK(___1844 const &itemIJK) const
- {
- REQUIRE(itemIJK < m_zoneIJKDim);
- ___81 const itemIndex = m_zoneIJKDim.offsetAtIJK(itemIJK);
- ENSURE(itemIndex < getNumItems());
- return itemIndex;
- }
- ___1844 itemIJKAtItemIndex(___81 itemIndex) const
- {
- REQUIRE(itemIndex < getNumItems());
- ___1844 const itemIJK = m_zoneIJKDim.ijkAtOffset(itemIndex);
- ENSURE(itemIJK < m_zoneIJKDim);
- ENSURE(itemIndexAtItemIJK(itemIJK) == itemIndex);
- return itemIJK;
- }
- ___372 getSubzonesOnIndexPlane(IJKPlanes_e whichPlane, ___81 planeIndex, ___3269<___2090::SubzoneAddress> &szAddresses) const;
- ___372 getSubzonesOnIndexLine(IJKLines_e whichLine, ___81 mIndex, ___81 nIndex, ___3269<___2090::SubzoneAddress> &szAddresses) const;
- };
- }
- }
|