コード例 #1
0
SparseBlockStructure3D createRegularDistribution3D (
        plint nx, plint ny, plint nz,
        plint numBlocksX, plint numBlocksY, plint numBlocksZ )
{
    return createRegularDistribution3D (
            Box3D(0, nx-1, 0, ny-1, 0, nz-1),
            numBlocksX, numBlocksY, numBlocksZ);
}
コード例 #2
0
SparseBlockStructure3D createRegularDistribution3D (
        Box3D const& domain, plint numProc)
{

    std::vector<plint> repartition = algorithm::evenRepartition(numProc, 3);
    std::vector<plint> newRepartition(3);
    if(domain.getNx()>domain.getNy()) {        // nx>ny
        if(domain.getNx()>domain.getNz()) {      // nx>nz
            newRepartition[0] = repartition[0];
            if (domain.getNy()>domain.getNz()) {   // ny>nz
                newRepartition[1] = repartition[1];
                newRepartition[2] = repartition[2];
            }
            else {                                 // nz>ny
                newRepartition[1] = repartition[2];
                newRepartition[2] = repartition[1];
            }
        }
        else {                                   // nz>nx
            newRepartition[2] = repartition[0];
            newRepartition[1] = repartition[2];
            newRepartition[0] = repartition[1];
        }
    }
    else {                                     // ny>nx
        if (domain.getNy()>domain.getNz()) {     // ny>nz
            newRepartition[1] = repartition[0];
            if (domain.getNx()>domain.getNz()) {   // nx>nz
                newRepartition[0] = repartition[1];
                newRepartition[2] = repartition[2];
            }
            else {                                 // nz>nx
                newRepartition[0] = repartition[2];
                newRepartition[2] = repartition[1];
            }
        }
        else {                                   // nz>ny
            newRepartition[2] = repartition[0];
            newRepartition[1] = repartition[1];
            newRepartition[0] = repartition[2];
        }
    }
    return createRegularDistribution3D (
                 domain,
                 newRepartition[0], newRepartition[1], newRepartition[2] );
}
コード例 #3
0
SparseBlockStructure3D createRegularDistribution3D (
        plint nx, plint ny, plint nz, int numProc)
{
    return createRegularDistribution3D (
            Box3D(0, nx-1, 0, ny-1, 0, nz-1), numProc );
}