View Issue Details

IDProjectCategoryView StatusLast Update
0000809OpenFOAMBugpublic2015-01-01 17:23
Reporteruser635Assigned Tohenry  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
PlatformLinuxOSOpenSUSEOS Version12.2
Summary0000809: checkMesh reports non-orthogonality angle of 180 for cyclical boundary.
DescriptionUsing OpenFOAM 2.2.0, checkMesh will report Mesh non-orthogonality Max: 180 if using translational cyclics. CheckMesh subsequently fails one mesh check.

180 degrees suggests the normal vector of the face is pointing the wrong way. However, the same mesh does not give an issue with OpenFOAM 2.1.1.

Under both v 2.1.1 and 2.2.0, the solver seems to work fine and gives virtually the same results, suggesting the reported issue in checkMesh is a false positive.




Steps To Reproducefluent3dMeshToFoam ./fluent.msh
createPatch
checkMesh
Additional InformationCan provide a mesh if required, though the ones I have to hand are too large to attach. In my experience this seems to be for any mesh (or at least any fluent mesh - I've not tried other formats).
TagscheckMesh

Activities

user635

2013-04-08 09:07

 

createPatchDict (3,810 bytes)   
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.1.1                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      createPatchDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// This application/dictionary controls:
// - optional: create new patches from boundary faces (either given as
//   a set of patches or as a faceSet)
// - always: order faces on coupled patches such that they are opposite. This
//   is done for all coupled faces, not just for any patches created.
// - optional: synchronise points on coupled patches.

// 1. Create cyclic:
// - specify where the faces should come from
// - specify the type of cyclic. If a rotational specify the rotationAxis
//   and centre to make matching easier
// - always create both halves in one invocation with correct 'neighbourPatch'
//   setting.
// - optionally pointSync true to guarantee points to line up.

// 2. Correct incorrect cyclic:
// This will usually fail upon loading:
//  "face 0 area does not match neighbour 2 by 0.0100005%"
//  " -- possible face ordering problem."
// - in polyMesh/boundary file:
//      - loosen matchTolerance of all cyclics to get case to load
//      - or change patch type from 'cyclic' to 'patch'
//        and regenerate cyclic as above

// Do a synchronisation of coupled points after creation of any patches.
// Note: this does not work with points that are on multiple coupled patches
//       with transformations (i.e. cyclics).
pointSync false;

// Patches to create.
patches
(
    {
        // Name of new patch
        name cyc_half0;

        // Dictionary to construct new patch from
        patchInfo
        {
            type cyclic;
            neighbourPatch cyc_half1;

            // Optional: explicitly set transformation tensor.
            // Used when matching and synchronising points.
            //transform rotational;
            //rotationAxis (1 0 0);
            //rotationCentre (0 0 0);
            // transform translational;
            // separationVector (1 0 0);

            // Optional non-default tolerance to be able to define cyclics
            // on bad meshes
            //matchTolerance 1E-2;
        }

        // How to construct: either from 'patches' or 'set'
        constructFrom patches;

        // If constructFrom = patches : names of patches. Wildcards allowed.
        patches (S1);

        // If constructFrom = set : name of faceSet
        //set f0;
    }
    {
        // Name of new patch
        name cyc_half1;

        // Dictionary to construct new patch from
        patchInfo
        {
            type cyclic;
            neighbourPatch cyc_half0;

            // Optional: explicitly set transformation tensor.
            // Used when matching and synchronising points.
            //transform rotational;
            //rotationAxis    ( 0 0 1 );
            //rotationCentre  ( 0.3 0 0 );
        }

        // How to construct: either from 'patches' or 'set'
        constructFrom patches;

        // If constructFrom = patches : names of patches. Wildcards allowed.
        patches (S2);

        // If constructFrom = set : name of faceSet
        //set f0;
    }
);

// ************************************************************************* //
createPatchDict (3,810 bytes)   

nogenmyr

2013-04-11 06:48

reporter   ~0002114

Should have been fixed in a1264baad44158d49c262db1350b16f19ab0331c. See bug report http://www.openfoam.org/mantisbt/view.php?id=778

Issue History

Date Modified Username Field Change
2013-04-08 09:07 user635 New Issue
2013-04-08 09:07 user635 File Added: createPatchDict
2013-04-11 06:48 nogenmyr Note Added: 0002114
2014-12-29 18:33 wyldckat Tag Attached: checkMesh
2015-01-01 17:22 henry Status new => resolved
2015-01-01 17:22 henry Resolution open => fixed
2015-01-01 17:22 henry Assigned To => henry