View Issue Details

IDProjectCategoryView StatusLast Update
0003468OpenFOAMFeaturepublic2020-03-23 10:12
Reporterguillote Assigned Tohenry  
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionsuspended 
PlatformGNU/LinuxOSUbuntuOS Version18.04
Product Versiondev 
Fixed in Versiondev 
Summary0003468: multiLevel decomposition error
DescriptionI'm trying to run the decomposePar tool with multiLevel decomposition method based on the following conditions:

- level0: 12 subdomains, manual method, using a custom "cellDist" file.
- level1: 64 subdomains, simple method, with n (64 1 1).

Total number of subdomains: 768.

The "cellDist" file is created using the decomposePar and setFields tools and by defining boxes based on the boxToCell strategy, in order to set a label to each cell inside the boxes.

The decomposeParDict dictionary is as follows:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

numberOfSubdomains 768;

method multiLevel;

multiLevelCoeffs
{
    level0 // boxes
    {
        numberOfSubdomains 12;
        method manual;
        manualCoeffs
        {
            dataFile "cellDist";
        }
    }
    level1
    {
        numberOfSubdomains 64;
        method simple;
        simpleCoeffs
        {
            n (64 1 1);
            delta 0.001;
            order xyz;
        }
    }
}

// ************************************************************************* //

After running the decomposePar tool, the output shows the following error:

--> FOAM FATAL ERROR:
Not implemented

    From function virtual Foam::labelList Foam::manualDecomp::decompose(const labelListList&, const pointField&, const scalarField&)
    in file manualDecomp/manualDecomp.H at line 108.

FOAM aborting
Steps To Reproduce1. Prepare the data file for a manual decomposition.
2. Config the decomposeParDict to use the multiLevel decomposition method and set the multiLevelCoeffs subdict to use two levels: one set with the manual method using the data file from step 1; another set with the simple method along the x axis.
3. Run the decomposePar tool.
TagsNo tags attached.

Activities

guillote

2020-03-19 02:24

reporter  

decomposePar.log (3,035 bytes)   
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  dev
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
Build  : dev-0f5fbb7ab16c
Exec   : decomposePar
Date   : Mar 03 2020
Time   : 01:12:40
Host   : "haswell"
PID    : 21095
I/O    : uncollated
Case   : /10TB/GuilleRefCase-basegh103
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time



Decomposing mesh region0

Create mesh

Calculating distribution of cells
Selecting decompositionMethod multiLevel
Selecting decompositionMethod manual
Selecting decompositionMethod simple
decompositionMethod multiLevel :
    level 0 decomposing with manual into 12 subdomains.
    level 0 decomposing with simple into 64 subdomains.

--> FOAM FATAL ERROR: 
Not implemented

    From function virtual Foam::labelList Foam::manualDecomp::decompose(const labelListList&, const pointField&, const scalarField&)
    in file manualDecomp/manualDecomp.H at line 108.

FOAM aborting

#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::error::abort() at ??:?
#2  Foam::manualDecomp::decompose(Foam::List<Foam::List<int> > const&, Foam::Field<Foam::Vector<double> > const&, Foam::Field<double> const&) at ??:?
#3  Foam::multiLevelDecomp::decompose(Foam::List<Foam::List<int> > const&, Foam::Field<Foam::Vector<double> > const&, Foam::Field<double> const&, Foam::List<int> const&, int, Foam::Field<int>&) at ??:?
#4  Foam::multiLevelDecomp::decompose(Foam::polyMesh const&, Foam::Field<Foam::Vector<double> > const&, Foam::Field<double> const&) at ??:?
#5  Foam::decompositionMethod::decompose(Foam::polyMesh const&, Foam::Field<Foam::Vector<double> > const&) at ??:?
#6  Foam::decompositionMethod::decompose(Foam::polyMesh const&, Foam::Field<double> const&, Foam::List<bool> const&, Foam::PtrList<Foam::List<int> > const&, Foam::List<int> const&, Foam::List<Foam::Pair<int> > const&) at ??:?
#7  Foam::decompositionMethod::decompose(Foam::polyMesh const&, Foam::Field<double> const&) at ??:?
#8  ? in "/share/GuilleMod25OpenFOAM/OpenFOAM-dev/platforms/linux64GccDPInt32Opt/bin/decomposePar"
#9  ? in "/share/GuilleMod25OpenFOAM/OpenFOAM-dev/platforms/linux64GccDPInt32Opt/bin/decomposePar"
#10  ? in "/share/GuilleMod25OpenFOAM/OpenFOAM-dev/platforms/linux64GccDPInt32Opt/bin/decomposePar"
#11  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#12  ? in "/share/GuilleMod25OpenFOAM/OpenFOAM-dev/platforms/linux64GccDPInt32Opt/bin/decomposePar"
decomposePar.log (3,035 bytes)   
decomposeParDict (1,117 bytes)   
/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  dev
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

numberOfSubdomains 768;

method multiLevel;

multiLevelCoeffs
{
    level0 // boxes
	{
        numberOfSubdomains 12;
        method manual;
        manualCoeffs
        {
            dataFile "cellDist";
        }
    }
    level1
	{
        numberOfSubdomains 64;
        method simple;
        simpleCoeffs
        {
            n (64 1 1);
            delta 0.001;
            order xyz;
        }
    }
}

// ************************************************************************* //
decomposeParDict (1,117 bytes)   

henry

2020-03-19 17:25

manager   ~0011261

manualDecomp does not currently support this mode of operation:

        //- Return for every coordinate the wanted processor number. Explicitly
        // provided connectivity - does not use mesh_.
        // The connectivity is equal to mesh.cellCells() except for
        // - in parallel the cell numbers are global cell numbers (starting
        // from 0 at processor0 and then incrementing all through the
        // processors)
        // - the connections are across coupled patches
        virtual labelList decompose
        (
            const labelListList& globalCellCells,
            const pointField& cc,
            const scalarField& cWeights
        )
        {
            NotImplemented;
            return labelList(0);
        }

guillote

2020-03-20 14:41

reporter   ~0011262

Thank you Henry for the quick reply. Any estimated date for this to be added to OpenFOAM's dev backlog?.

Best regards,

Guillermo Tessi

henry

2020-03-20 14:53

manager   ~0011263

We don't have any plans to add this functionality, it has not been requested by any of the sponsors. Are you interested in either contributing a patch or funding this development?

guillote

2020-03-22 21:03

reporter   ~0011272

I could try to implement this feature but unfortunately I'm not well educated in the depths of the decomposition strategies and classes. Last time I've developed something for OpenFOAM was a library for dynamic meshes using the cell-layer addition/removal technique in parallel for 2.3.0 version.

henry

2020-03-23 10:12

manager   ~0011273

Pending funding or contribution.

Issue History

Date Modified Username Field Change
2020-03-19 02:24 guillote New Issue
2020-03-19 02:24 guillote File Added: decomposePar.log
2020-03-19 02:24 guillote File Added: decomposeParDict
2020-03-19 17:25 henry Note Added: 0011261
2020-03-19 17:25 henry Category Bug => Feature
2020-03-19 17:25 henry Description Updated
2020-03-19 17:25 henry Steps to Reproduce Updated
2020-03-20 14:41 guillote Note Added: 0011262
2020-03-20 14:53 henry Note Added: 0011263
2020-03-22 21:03 guillote Note Added: 0011272
2020-03-23 10:12 henry Assigned To => henry
2020-03-23 10:12 henry Status new => closed
2020-03-23 10:12 henry Resolution open => suspended
2020-03-23 10:12 henry Fixed in Version => dev
2020-03-23 10:12 henry Note Added: 0011273