CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [Other] dynamic Mesh with angular velocity not parallel to x axis (https://www.cfd-online.com/Forums/openfoam-meshing/128762-dynamic-mesh-angular-velocity-not-parallel-x-axis.html)

donQi January 20, 2014 23:00

dynamic Mesh with angular velocity not parallel to x axis
 
1 Attachment(s)
Hello,

I was trying to make a cylindrical mesh rotate around an axis that is not parallel to the x axis (see file attached). But what I get is a cylinder with the axis of rotation that rotates around x. How can I get an axis of rotation not parallel to x, but that maintains the same position in time?

In the example attached the angle between the x axis and the angular velocity vector is alpha = 5 degrees, the magnitude is 134.22rad/s
=> omega_x = 134.22 * cos(alpha) = 7660.97deg/s
omega_z = 134.22 * sin(alpha) = 670.24deg/s

so I tried:

Code:

solidBodyMotionFvMeshCoeffs
{
    cellZone        innerCylinderSmall;

    solidBodyMotionFunction  rotatingMotion;
    rotatingMotionCoeffs
    {
        CofG        (0 0 0);
        radialVelocity (7660.9758431018 0 670.24853781736); // deg/s
    }
}

but it did not work, the cylinder rotation axis changes position in time.

I tried also

Code:

dynamicFvMesh  solidBodyMotionFvMesh;

motionSolverLibs ( "libfvMotionSolvers.so" );

solidBodyMotionFvMeshCoeffs
{
    cellZone        innerCylinderSmall;

    solidBodyMotionFunction  rotatingMotion;
    rotatingMotionCoeffs
    {
        origin      (0 0 0);
        axis        (0.996194698091746 0 0.0871557427476584);
        omega      134.22; // rad/s
    }
}

but the result is the same.

donQi January 27, 2014 18:01

I ended up finding the following solution: use axisRotationMotion

Code:

    axisRotationCompensation
    {
      solidBodyMotionFunction axisRotationMotion;
      axisRotationMotionCoeffs
      {
        CofG (0 0 0); // origin    (0 0 0);
        radialVelocity  (omegaxDeg omegayDeg omegazDeg);
      }
    }

where omegaxDeg, omegayDeg and omegazDeg are the components of the angular velocity along the x, y and z axis (expressed in deg/s).

odin February 3, 2014 09:29

units in dynamicMeshDict?
 
Hello,

i have a question about the units in the dynamicMeshDict.
In the Propeller example of OF211 '// deg/s' is used.
Am I doing right:
300rpm (rounds per minute) = 5 rounds per second = 1800 deg/s ???

Best regards,
Fabian

donQi June 12, 2014 01:46

Hello Fabi

yes, according to me your conversion is correct.
In fact by searching among my files I am noticing when "radialVelocity" is used units are in deg/s (so you use your 1800deg/s)

Code:

dynamicFvMesh  solidBodyMotionFvMesh;

motionSolverLibs ( "libfvMotionSolvers.so" );

solidBodyMotionFvMeshCoeffs
{
    solidBodyMotionFunction  rotatingMotion;
    rotatingMotionCoeffs
    {
        CofG        (0 0 0);
        radialVelocity (1800 0 0); // deg/s
    }
}


while when omega is used (like in OF22 and OF23 in the pimpleDyMFoam/propeller/constant/dynamicMeshDict) you use radiants/s
so instead of 1800 deg/s use 31.415926 rad/s

Code:

    rotatingMotionCoeffs
    { 
        origin      (0 0 0);
        axis        (0 1 0);
        omega    31.415926; // rad/s
    }


cosbergel September 26, 2014 08:03

I was wondering if it is possible for the mesh to move with a velocity which is calculated during the run.
For example, in case of a accelerating falling sphere is it possible for the mesh to move if the velocity of the sphere?

dynamicFvMesh solidBodyMotionFvMesh;

solidBodyMotionFvMeshCoeffs
{
solidBodyMotionFunction linearMotion;
linearMotionCoeffs
{
velocity (0 velocityOfSphere 0);
}
}

donQi October 2, 2014 23:19

Hello Kostis,

once I tried with pimpleDymFoam: while the analysis was running I changed the rmp in dynamicMeshDict but the rotor continued to rotate with the same initial velocity. I tried both manually and automatically by adding in controlDict the following function to update the dynamicMeshDict:

Code:

functions
{
 
    fileUpdate1
    {
        type            timeActivatedFileUpdate;
        functionObjectLibs ("libutilityFunctionObjects.so");
        outputControl  timeStep;
        outputInterval  1;
        fileToUpdate    "$FOAM_CASE/constant/dynamicMeshDict";

        timeVsFile
        (
            (  -1  "$FOAM_CASE/constant/dynamicMeshDict_1" )
            ( 0.05  "$FOAM_CASE/constant/dynamicMeshDict_2" )
        );
    } 
 
    #include "readFields"
    #include "Q"
    #include "surfaces"
    #include "forces"
}

The dynamicMeshDict was correctly updated with the new angular velocity but once I checked the analysis was still rotating with the initial angular velocity. I don't know if there is a simple way. If you find it out let me know.


All times are GMT -4. The time now is 02:01.