CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

cyclicAMI crashes in parallel when processor has faces for only on AMI patch

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   April 4, 2014, 10:00
Default cyclicAMI crashes in parallel when processor has faces for only on AMI patch
  #1
New Member
 
Andreas Groß
Join Date: Sep 2013
Posts: 8
Rep Power: 12
AndreasG is on a distinguished road
Hi everybody,

i tried to run a case with cyclicAMI and non planar rotational patches (rotationAngle set). The case runs fine on a single or on a small number of processors. Using more processors results in cyclicAMI failing to initialize.
After some observation I think that this error occurs when a processor holds faces from one ami patch but not from the other one.

Please find a test case attached (pipe flow and a rotation angle of 60 deg). The case runs fine on a single processor and crashes in parallel. To reproduce run Allrun script.

When the decomposition changed to force faces of both AMI patches on each processor it will run fine in parallel; change decomposeParDict to:
Code:
simpleCoeffs
{
    n           (1 1 2);
//    n           (2 1 1);
    delta       0.1;
}
Please note that you will get a warning although the transformed patches align perfectly (add cyclicAMI debug switch in etc/controlDict and set it to 1). Nevertheless the calculation will run fine.

Code:
--> FOAM Warning : 
    From function void Foam::cyclicAMIPolyPatch::calcTransforms(const primitivePatch&, const pointField&, const vectorField&, const pointField&, const vectorField&)
    in file AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C at line 204
    Patch areas are not consistent within 0.01 % indicating a possible error in the specified angle of rotation
    owner patch     : side1
    neighbour patch : side2
    angle           : 60 deg
    area error      : 99.9978 %    match tolerance : 0.0001
cyclicAMIPolyPatch::calcTransforms: patch:side1 Specified rotation: swept angle: 60 [deg] reverse transform: (0.5 -0.866025 0 0.866025 0.5 0 0 0 1)
patch: side1
    forwardT = 1((0.5 0.866025 0 -0.866025 0.5 0 0 0 1))
    reverseT = 1((0.5 -0.866025 0 0.866025 0.5 0 0 0 1))
    separation = 0()
    collocated = 1(0)
please also see http://www.openfoam.org/mantisbt/view.php?id=1260
Attached Files
File Type: zip pipeCyclic2.zip (10.1 KB, 26 views)
AndreasG is offline   Reply With Quote

Old   April 9, 2014, 09:37
Default
  #2
New Member
 
Andreas Groß
Join Date: Sep 2013
Posts: 8
Rep Power: 12
AndreasG is on a distinguished road
Hey again,

seems like there was a bug in the check for the orientation of the rotation. This bug was causing the failure of AMI in parallel and the warnings in parallel and serial; please note, that there might still be warnings when decomposing the case.

So here's the fix:

Code:
From 5811815091ef368b64ca93eaf2027dcf353b872f Mon Sep 17 00:00:00 2001
From: AndreasG <openfoam.noHam.kwijybo.de>
Date: Wed, 9 Apr 2014 15:24:16 +0200
Subject: [PATCH] fixing bug #0001260 fix the check for orientation of given
 rotation angle in cyclicAMI

---
 .../cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C        | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C
index 91ac2b8..a7e8cbe 100644
--- a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C
+++ b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C
@@ -173,16 +173,20 @@ void Foam::cyclicAMIPolyPatch::calcTransforms
                 reduce(transformedAreaNeg, sumOp<vector>());
                 reduce(area1, sumOp<vector>());
 
-                scalar errorPos = mag(transformedAreaPos - area1);
-                scalar errorNeg = mag(transformedAreaNeg - area1);
+                // Vectors of patches are pointing to outside, so sum of master and transformed
+                // slave patch has to zero - AG 2014/04/09
+                scalar errorPos = mag(transformedAreaPos + area1);
+                scalar errorNeg = mag(transformedAreaNeg + area1);
 
+                // Transformation RPos is transformation for neighbour patch, so local transformation
+                // is transpose tensor - AG 2014/04/09
                 if (errorPos < errorNeg)
                 {
-                    revT = RPos;
+                    revT = RPos.T();
                 }
                 else
                 {
-                    revT = RNeg;
+                    revT = RNeg.T();
                     rotationAngle_ *= -1;
                 }
 
-- 
1.8.1.4
AndreasG is offline   Reply With Quote

Reply

Tags
bugs, cyclicami


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Commercial meshers] Mesh conversion problem (fluent3DMeshToFoam) Aadhavan OpenFOAM Meshing & Mesh Conversion 2 March 8, 2018 01:47
Superlinear speedup in OpenFOAM 13 msrinath80 OpenFOAM Running, Solving & CFD 18 March 3, 2015 05:36
[GAMBIT] periodic faces not matching Aadhavan ANSYS Meshing & Geometry 6 August 31, 2013 11:25
[blockMesh] Cyclic BC's: Possible face ordering problem? (Channel flow) sega OpenFOAM Meshing & Mesh Conversion 3 September 28, 2010 12:46
[snappyHexMesh] external flow with snappyHexMesh chelvistero OpenFOAM Meshing & Mesh Conversion 11 January 15, 2010 19:43


All times are GMT -4. The time now is 12:32.