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

Possible to have both solidBodyMotionFunction rotatingMotion + displacementLaplacian?

Register Blogs Community New Posts Updated Threads Search

Like Tree2Likes
  • 2 Post By quarkz

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   March 16, 2021, 10:30
Default Possible to have both solidBodyMotionFunction rotatingMotion + displacementLaplacian?
  #1
Senior Member
 
TWB
Join Date: Mar 2009
Posts: 402
Rep Power: 19
quarkz is on a distinguished road
Hi,

I need my body to deform using displacementLaplacian, so mesh will deform according to the body's boundary (no reordering).

At the same time, I also want the whole body to pitch up.

However, if I use displacementLaplacian for the body deformation and pitch up motion, the mesh quality will deteriorate rapidly due to the large pitching motion.

hence, I'm thinking of rotating the entire mesh for the pitch up motion, and using displacementLaplacian for the body deformation.

Is it possible to combine it this way?

Also, in the relativeMotion tutorial, there is the "solidBodyDisplacementLaplacian".

Can I use it to achieve what I want?

Thanks.
quarkz is offline   Reply With Quote

Old   August 12, 2021, 01:48
Default
  #2
Senior Member
 
TWB
Join Date: Mar 2009
Posts: 402
Rep Power: 19
quarkz is on a distinguished road
After spending some trial and error, I finally managed to get it working.

The wing will be deformed (according to your own preference) using solidBodyDisplacementLaplacian

In this example, I use angularOscillatingDisplacement

For the full body pitching, the whole grid will pitch up. Hence, grid quality can be preserved much better than simply full mesh deformation.

pointDisplacement file

Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       pointVectorField;
    object      pointDisplacement;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 1 0 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{

    wing
    {
    type      angularOscillatingDisplacement;
        axis            (0 -1 0);
        origin (0.03 0 0.235);
        angle0           0;
        amplitude       0.7854;  //units of rad
        omega           1.5708;       //units of rad/s
        value           uniform (0 0 0);
    }

    ".*"
    {
        type            fixedValue;
        value           uniform (0 0 0);
    }


}
Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dynamicFvMesh dynamicMultiMotionSolverFvMesh;   //dynamicMotionSolverFvMesh;

// Specification of rotation around centre

dynamicMultiMotionSolverFvMeshCoeffs
{    
    dualWing1
    {
        cellZone AirfoilZone;

        // Solve displacement on top of solid-body rotation
		
		solver solidBodyDisplacementLaplacian;

        solidBodyDisplacementLaplacianCoeffs
        {
            solidBodyMotionFunction  multiMotion;
            multiMotionCoeffs
            {
                
                rotation_2
                {
                    // Apply counter rotation to keep dualWing aligned
                    solidBodyMotionFunction rotatingMotion;
				   rotatingMotionCoeffs
				   {
					   origin          (0.00896 -0.04056 0);//(0.4825 0. 0.);
					   axis            ( 0 0 1);
					   omega           -0.1745;    //5.52 rad/s
				   }
															
                }
            }
            diffusivity quadratic inverseDistance ("wing.*");
        }
    }
}
topoSetDict

Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

actions
(
    {
        name    c0;
        type    cellSet;
        action  new;
        source  regionToCell;
        insidePoints ((-0.5 1. 0.0));
    }

    
);
topoSetDict_movingZone

Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

actions
(
    {
        name    AirfoilZone;
        type    cellZoneSet;
        action  new;
        source  setToCellZone;
        sourceInfo
        {
            set c0;
        }
    }
);
With these files, run
1. topoSet
2. topoSet -dict system/topoSetDict_movingZone
3. renumberMesh, pimpleFoam or moveDynamicMesh etc.

Hope it helps!
snak and xCFD like this.
quarkz is offline   Reply With Quote

Reply


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
Multiple AMI rotations not working mahtin360 OpenFOAM Running, Solving & CFD 4 January 3, 2021 10:50
AMI speed performance danny123 OpenFOAM 21 October 24, 2020 04:13
rotatingMotion: omega too low kandelabr OpenFOAM Running, Solving & CFD 0 August 23, 2018 07:10
rotatingMotion not in foam-extend? louvel OpenFOAM 0 December 8, 2016 10:05
Problem with rotatingMotion OpenFOAM 2.2.2 Naruto OpenFOAM Running, Solving & CFD 7 November 28, 2013 10:03


All times are GMT -4. The time now is 09:23.