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();
}
Esempio n. 2
0
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);
}