MultiContainerBlock3D::MultiContainerBlock3D(plint nx_, plint ny_, plint nz_) : MultiBlock3D ( // Default envelope-width to 0 defaultMultiBlockPolicy3D().getMultiBlockManagement(nx_,ny_,nz_, 0), defaultMultiBlockPolicy3D().getBlockCommunicator(), defaultMultiBlockPolicy3D().getCombinedStatistics() ) { allocateBlocks(); }
MultiBlock3D::MultiBlock3D(plint nx, plint ny, plint nz, plint envelopeWidth) : multiBlockManagement(defaultMultiBlockPolicy3D().getMultiBlockManagement ( Box3D(0,nx-1,0,ny-1,0,nz-1), envelopeWidth) ), maxProcessorLevel(-1), blockCommunicator(defaultMultiBlockPolicy3D().getBlockCommunicator()), internalStatistics(), combinedStatistics(defaultMultiBlockPolicy3D().getCombinedStatistics()), statSubscriber(*this), statisticsOn(true), periodicitySwitch(*this), internalModifT(modif::staticVariables) { id = multiBlockRegistration3D().announce(*this); }
MultiContainerBlock3D::MultiContainerBlock3D ( MultiBlockManagement3D const& multiBlockManagement_, CombinedStatistics* combinedStatistics_ ) : MultiBlock3D(multiBlockManagement_, defaultMultiBlockPolicy3D().getBlockCommunicator(), combinedStatistics_) { allocateBlocks(); }
MultiBlockManagement3D align( std::vector<Box3D> const& originalDomain, MultiBlockManagement3D const& alignWith, plint envelopeWidth, plint refinementLevel, bool crop ) { Box3D bbox(alignWith.getBoundingBox()); if (crop && !originalDomain.empty()) { bbox = originalDomain[0]; for (pluint i=1; i<originalDomain.size(); ++i) { bbox = bound(bbox, originalDomain[i]); } } SparseBlockStructure3D originalSparseBlock(bbox); for (plint i=0; i<(plint)originalDomain.size(); ++i) { originalSparseBlock.addBlock(originalDomain[i], i); } MultiBlockManagement3D originalManagement ( originalSparseBlock, defaultMultiBlockPolicy3D().getThreadAttribution(), envelopeWidth, refinementLevel ); return align(originalManagement, alignWith); }