数据处理器的执行和集成机制:从applyProcessingFunctional说起

源码位置:
/src/atomicBlock/dataProcessorWrapper3D.hh

首先就为我们展示了applyProcessingFunctional。

template<typename T, template<typename U> class Descriptor>
void applyProcessingFunctional (
        LatticeBoxProcessingFunctional3D<T,Descriptor>* functional,
        Box3D domain,
        std::vector<BlockLattice3D<T,Descriptor>*> lattices )
{
    std::vector<AtomicBlock3D*> atomicBlocks(lattices.size());
    for (pluint iLattice=0; iLattice<lattices.size(); ++iLattice) {
        atomicBlocks[iLattice] = dynamic_cast<AtomicBlock3D*>(lattices[iLattice]);
    }
    executeDataProcessor( BoxProcessorGenerator3D(functional, domain), atomicBlocks );
}

它是根据不同区块属性而执行对应代码,有LatticeBoxProcessing3D,ScalarFieldBoxProcessing3D,TensorFieldBoxProcessing3D等。

而integrateProcessingFunctional与applyProcessingFunctional的不同在于它是通过

addInternalProcessor( BoxProcessorGenerator3D(functional, domain),
                          atomicBlocks, level );

实现集成。

而apply是执行一次。

executeDataProcessor( BoxProcessorGenerator3D(functional, domain), atomicBlocks );

根据不同属性的区块,我们可以看到BoxProcessing3D_L,BoxProcessing3D_S,BoxProcessing3D_T等参数。
在这里插入图片描述可以用作编写数据处理器的参考。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页