|
[Sponsors] |
Issues in setting up cyclic boundary condition for wind turbine |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
September 26, 2023, 13:03 |
Issues in setting up cyclic boundary condition for wind turbine
|
#1 |
New Member
Niall O'Neill
Join Date: Feb 2023
Posts: 21
Rep Power: 3 |
Hello,
I am simulating a wind turbine rotor. Due to computational constraints I am trying to halve the domain through the rotational axis and apply a cyclic condition. I have attached an image of the computational domain below. The bottom face is actually 2 separate .stl files to represent the left periodic and right periodic face. Given that these files were imported in the SHM dictionary and not blockMesh, I am finding it very difficult to define them as cyclic boundaries. The way that I have been doing this was simply to use the 'createPatchDict' Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2306 | | \\ / A nd | Website: www.openfoam.com | | \\/ 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 (0 1 0); rotationCentre (0.302438 -0.006962 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 (leftperiodic); } { // 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 1 0); rotationCentre (0.302438 -0.006962 0); matchTolerance 1E-2; } // How to construct: either from 'patches' or 'set' constructFrom patches; // If constructFrom = patches : names of patches. Wildcards allowed. patches (rightperiodic); // If constructFrom = set : name of faceSet } ); Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 3.0.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | |*---------------------------------------------------------------------------*| | File created by CFD support s.r.o., Wed Feb 1 13:46:42 2017 | | http://www.cdfsupport.com | \*---------------------------------------------------------------------------*/ FoamFile { version 3.0; format ascii; class dictionary; location "system"; object changeDictionaryDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // boundary { leftperiodic { type cyclic; neighbourPatch rightperiodic; } rightperiodic { type cyclic; neighbourPatch leftperiodic; } } Then I skipped the createPatchDict and just changed the boundary dictionary, but I recieved the following error message: "For patch leftperiodic there are 14627 face centres, for the neighbour patch rightperiodic there are 14573" I also tried using cyclicAMI conditions in case the accuracy was an issue but I still got the same error. I haven't managed to find any examples online of cases where people have used rotational cyclic conditions like this, and I'm assuming there is just something inherently wrong with the way that I am trying to do this, so If anyone has experience in using these sort of boundary conditions and could help me figure it out that would be much appreciated. Perhaps splitting the two faces as separate stls is not a wise thing to do and there is an easier option. Thanks. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Question about different kinds of Boundaries and Boundary Conditions | granzer | Main CFD Forum | 17 | April 12, 2022 18:27 |
Table bounds warnings at: END OF TIME STEP | CFXer | CFX | 4 | July 17, 2020 00:44 |
Problem of boundary condition setting for natural convection in a water tank | haiteng | FLUENT | 2 | June 25, 2020 05:04 |
Cyclic boundary condition / length setting? | Kina | OpenFOAM Pre-Processing | 0 | March 30, 2016 03:11 |
Boundary condition setting for non-premixed combustion using reactingFoam | skyopener | OpenFOAM | 0 | May 23, 2010 23:55 |