CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Bugs (https://www.cfd-online.com/Forums/openfoam-bugs/)
-   -   steadyUniversalMRFFoam Tutorial fails in MixingPlane (https://www.cfd-online.com/Forums/openfoam-bugs/214817-steadyuniversalmrffoam-tutorial-fails-mixingplane.html)

HenrikJohansson February 14, 2019 04:48

steadyUniversalMRFFoam Tutorial fails in MixingPlane
 
1 Attachment(s)
Hi,

I have ran into a problem regarding the mixingPlane function in foam-extend.
When running the steadyUniversalMRFFoam tutorial in parallel with ten times larger mesh in all axises it fails.
Works fine in serial thus I think the fault lie within the decomposition method used.
It fails when running the Initalization of the mixing plane or GGI.
I seem to get the error when I increase the radial element count above 80.
In this case I tried with 100 elements.

I have tried foam-extend 4.1 aswell as 4.0 and booth gives the same error.

I have attached the tutorial that gives me the error.

The error I get:
Code:

Create time

Create mesh for time = 0

mixingPlane patch Master: GVOUTLET Slave: RUINLET is local parallel
mixingPlane patch Master: RUINLET Slave: GVOUTLET is local parallel
mixingPlane patch Master: RUOUTLET Slave: DTINLET is local parallel
Initializing the GGI interpolator between master/shadow patches: RUCYCLIC1/RUCYCLIC2
mixingPlane patch Master: DTINLET Slave: RUOUTLET is local parallel
Initializing the GGI interpolator between master/shadow patches: DTCYCLIC1/DTCYCLIC2
[2]
[2]
[2] --> FOAM FATAL IO ERROR:
[2] Expected a '(' or a '{' while reading List, found on line 0 an error
[2]
[2] file: IOstream at line 0.
[2]
[2]    From function Istream::readBeginList(const char*)
[2]    in file db/IOstreams/IOstreams/Istream.C at line 130.
[2]
FOAM parallel run exiting
[2]

Using debuggin function of the mixingPlane I can see that the code stops after this instance during the initilazation of the mixingPlane.

Code:

From function MixingPlaneInterpolation<MasterPatch, SlavePatch>::calcMixingPlanePatch() const
in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/MixingPlaneInterpolationPatches.C at line 333
minSpan from patch BB : -5.07657818944
maxSpan from patch BB : 9.27844514192

From function MixingPlaneInterpolation<MasterPatch, SlavePatch>::calcMixingPlanePatch() const
in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/MixingPlaneInterpolationPatches.C at line 354
minSpan after checking spanLimited: -180
maxSpan after checking spanLimited: 180

From function MixingPlaneInterpolation<MasterPatch, SlavePatch>::calcMixingPlanePatch() const
in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/MixingPlaneInterpolationPatches.C at line 412
mixingPatch:

After that it should go to this but it does not and I get the error shown above.

Code:

From function MixingPlaneInterpolation<SlavePatch, SlavePatch>::calcTransforms() const
in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/MixingPlaneInterpolationAddressing.C at line 361
slave face centre transformation check: (should be zero!) mag =

I tried switchin from patchConstrained to metis and the error went away.
But the solver crashed since the mixingPlane faces were not constrained to one patch as the need to.
Guess it could be something within patchConstrained method.

I can also see now that the error is not only due to the mixing plane. It also occurs from initializing the GGI interpolator.
So the fault may lie in the GGI code.

Appyling debug switches to the GGI I get the following:

Code:

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

Create mesh for time = 0

mixingPlane patch Master: GVOUTLET Slave: RUINLET is local parallel
mixingPlane patch Master: RUINLET Slave: GVOUTLET is local parallel
mixingPlane patch Master: RUOUTLET Slave: DTINLET is local parallel
[0] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC1
Initializing the GGI interpolator between master/shadow patches: RUCYCLIC1/RUCYCLIC2

    From function void ggiPolyPatch::calcPatchToPatch() const
    in file meshes/polyMesh/polyPatches/constraint/ggi/ggiPolyPatch.C at line 211
    Calculating patch to patch interpolation for patchRUCYCLIC1
[2] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC1
[3] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC1
[4] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC1
[7] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC1
[1] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC1
[5] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC1
[6] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC1

    From function void GGIInterpolation<MasterPatch, SlavePatch>::calcAddressing() const
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 114
    Evaluation of GGI weighting factors:

    From function GGIInterpolation::findNonOverlappingFaces
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 829
      : Found 0 non-overlapping faces for this GGI patch

    From function GGIInterpolation::findNonOverlappingFaces
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 829
      : Found 0 non-overlapping faces for this GGI patch

    From function GGIInterpolation::calcPartiallyCoveredFaces
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 909
      : Found 0 partially overlapping faces for master GGI patch

    From function GGIInterpolation::calcPartiallyCoveredFaces
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 933
      : Found 0 partially overlapping faces for slave GGI patch
  Largest slave weighting factor correction : 2.22044604925e-16 average: 5.41788836017e-17
  Largest master weighting factor correction: 5.21764348393e-08 average: 1.3359972925e-08
[3] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC1
[1] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC1
[5] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC1
[4] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC1
Allocating communicator for GGI patch RUCYCLIC1 with 3(1 5 6): 1
GGI patch Master: RUCYCLIC1 Slave: RUCYCLIC2 is split between multiple processors
[0] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC1
[7] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC1
[6] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC1
[2] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC1
[5] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC2
[2] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC2
[0] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC2
[7] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC2
[6] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC2
[4] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC2
[3] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC2
[1] ggiPolyPatch::calcRemoteZoneAddressing() const for patch RUCYCLIC2
[1] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC2
[2] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC2
GGI patch Master: RUCYCLIC2 Slave: RUCYCLIC1 is split between multiple processors
[0] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC2
[7] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC2
[6] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC2
[4] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC2
[3] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC2
[5] ggiPolyPatch::calcSendReceive() const for patch RUCYCLIC2
[2] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC1
mixingPlane patch Master: DTINLET Slave: RUOUTLET is local parallel
[0] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC1
Initializing the GGI interpolator between master/shadow patches: DTCYCLIC1/DTCYCLIC2

    From function void ggiPolyPatch::calcPatchToPatch() const
    in file meshes/polyMesh/polyPatches/constraint/ggi/ggiPolyPatch.C at line 211
    Calculating patch to patch interpolation for patchDTCYCLIC1
[7] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC1
[6] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC1
[3] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC1
[5] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC1
[4] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC1
[1] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC1

    From function void GGIInterpolation<MasterPatch, SlavePatch>::calcAddressing() const
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 114
    Evaluation of GGI weighting factors:

    From function GGIInterpolation::findNonOverlappingFaces
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 829
      : Found 0 non-overlapping faces for this GGI patch

    From function GGIInterpolation::findNonOverlappingFaces
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 829
      : Found 0 non-overlapping faces for this GGI patch

    From function GGIInterpolation::calcPartiallyCoveredFaces
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 909
      : Found 0 partially overlapping faces for master GGI patch

    From function GGIInterpolation::calcPartiallyCoveredFaces
    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/GGIInterpolationWeights.C at line 933
      : Found 0 partially overlapping faces for slave GGI patch
  Largest slave weighting factor correction : 2.22044604925e-16 average: 6.5883806347e-17
  Largest master weighting factor correction: 2.62809629614e-08 average: 9.7988954088e-09
[2] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC1
[1] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC1
[7] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC1
[5] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC1
[6] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC1
Allocating communicator for GGI patch DTCYCLIC1 with 3(1 4 5): 2
GGI patch Master: DTCYCLIC1 Slave: DTCYCLIC2 is split between multiple processors
[0] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC1
[4] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC1
[3] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC1
[3] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC2
[0] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC2
[4] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC2
[2] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC2
[1] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC2
[5] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC2
[7] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC2
[6] ggiPolyPatch::calcRemoteZoneAddressing() const for patch DTCYCLIC2
[1] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC2
[6] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC2
[3] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC2
GGI patch Master: DTCYCLIC2 Slave: DTCYCLIC1 is split between multiple processors
[0] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC2
[7] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC2
[4] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC2
[2] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC2
[5] ggiPolyPatch::calcSendReceive() const for patch DTCYCLIC2

    From function void ggiPolyPatch::calcReconFaceCellCentres() const
    in file meshes/polyMesh/polyPatches/constraint/ggi/ggiPolyPatch.C at line 279
    Calculating recon centres for patch RUCYCLIC1

    From function void ggiPolyPatch::calcReconFaceCellCentres() const
    in file meshes/polyMesh/polyPatches/constraint/ggi/ggiPolyPatch.C at line 279
    Calculating recon centres for patch DTCYCLIC1
[0]
[0]
[0] --> FOAM FATAL IO ERROR:
[0] incorrect first token, expected <int> or '(', found on line 0 the word 'J'
[0]
[0] file: IOstream at line 0.
[0]
[0]    From function operator>>(Istream&, List<T>&)
[0]    in file /home/henrik/foam/foam-extend-4.0/src/foam/lnInclude/ListIO.C at line 149.
[0]
FOAM parallel run exiting

So maybe the fault is when the GGI code calculates the cell centres.
It was not... But it seems like the error occures in the ggiPolyPatch.C.


All times are GMT -4. The time now is 19:13.