View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003468 | OpenFOAM | Feature | public | 2020-03-19 02:24 | 2020-03-23 10:12 |
Reporter | guillote | Assigned To | henry | ||
Priority | normal | Severity | feature | Reproducibility | always |
Status | closed | Resolution | suspended | ||
Platform | GNU/Linux | OS | Ubuntu | OS Version | 18.04 |
Product Version | dev | ||||
Fixed in Version | dev | ||||
Summary | 0003468: multiLevel decomposition error | ||||
Description | I'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 Reproduce | 1. 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. | ||||
Tags | No tags attached. | ||||
|
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" 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; } } } // ************************************************************************* // |
|
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); } |
|
Thank you Henry for the quick reply. Any estimated date for this to be added to OpenFOAM's dev backlog?. Best regards, Guillermo Tessi |
|
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? |
|
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. |
|
Pending funding or contribution. |
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 |