CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)
-   -   Boundary conditions for rotating reference frame (https://www.cfd-online.com/Forums/openfoam/91838-boundary-conditions-rotating-reference-frame.html)

 Borna August 24, 2011 07:54

Boundary conditions for rotating reference frame

Hi All,

I'm a new OpenFOAM user and new to the community, so my apologies in advance if this is overly simple a question.

I'm trying to simulate a rotating fan blade, using the single rotating frame approach. The results look wrong, and I suspect I'm missing something in the boundary conditions. My approach is the following

1. Modify icoFoam to include Coriolis and centrifugal terms (as discussed elsewhere in the Forums) as follows:

dimensionedScalar angularVel(transportProperties.lookup("angularVel" ));
dimensionedVector Omega("Omega",
dimensionSet(0, 0, -1, 0, 0),
vector(0, angularVel.value(), 0)
);

volVectorField Fcent = (Omega ^ (Omega ^ mesh.C()));

fvVectorMatrix UEqn
(
fvm::ddt(U)
+ fvm::div(phi, U)
- fvm::laplacian(nu, U)
+ (2*Omega ^ U) // Added Coriolis force
+ Fcent // Added centrifugal force
);

2. Geometry:
My first testcase is just a cylindrical geometry which represents the bounding box of the simulation. It will eventually contain the fan geometry, but I wanted to verify the behavior on a very simple testcase. The cylinder axis is along "y", and is the axis of rotation. This is generated using blockMesh, and looks good.

3. Boundary conditions
The "side" of the cylinder has a fixed pressure condition (arbitrary fixed value, incompressible flow), since I'm assuming that the cylinder boundary is far enough away from the future geometry in the center that it is essentially free stream. Given that it is observed from a rotating frame, it should be uniform along the cylinder boundary (right?)

The top and bottom of the cylinder have zeroGradient pressure and velocity conditions. The velocity boundary condition on the side of the cylinder is set to slip - I'm trying to let the UEqn naturally set the velocity.

The results are not at all what I expected. Setting a finite rotational velocity, I expected to find a rotational U field, azimuthally symmetric, linearly varying radially. Instead, I have zero velocity everywhere. Interestingly though, the pressure field looks qualitatively OK, azimuthally symmetric with radial variation roughly as expected (correct value at the boundary).

Are my expectations incorrect? It seems to me that after adding the Coriolis and cent. terms, the "U" we are solving for is the velocity in the rotating frame, which should be non-zero.
What am I missing with the BCs? BTW, the solution looks fully converged, many more steps taken than were actually required for convergence.

Many thanks,

Borna

 jianxiyao August 24, 2011 10:25

Quote:
 Originally Posted by Borna (Post 321375) Hi All, I'm a new OpenFOAM user and new to the community, so my apologies in advance if this is overly simple a question. I'm trying to simulate a rotating fan blade, using the single rotating frame approach. The results look wrong, and I suspect I'm missing something in the boundary conditions. My approach is the following 1. Modify icoFoam to include Coriolis and centrifugal terms (as discussed elsewhere in the Forums) as follows: dimensionedScalar angularVel(transportProperties.lookup("angularVel" )); dimensionedVector Omega("Omega", dimensionSet(0, 0, -1, 0, 0), vector(0, angularVel.value(), 0) ); volVectorField Fcent = (Omega ^ (Omega ^ mesh.C())); fvVectorMatrix UEqn ( fvm::ddt(U) + fvm::div(phi, U) - fvm::laplacian(nu, U) + (2*Omega ^ U) // Added Coriolis force + Fcent // Added centrifugal force ); 2. Geometry: My first testcase is just a cylindrical geometry which represents the bounding box of the simulation. It will eventually contain the fan geometry, but I wanted to verify the behavior on a very simple testcase. The cylinder axis is along "y", and is the axis of rotation. This is generated using blockMesh, and looks good. 3. Boundary conditions The "side" of the cylinder has a fixed pressure condition (arbitrary fixed value, incompressible flow), since I'm assuming that the cylinder boundary is far enough away from the future geometry in the center that it is essentially free stream. Given that it is observed from a rotating frame, it should be uniform along the cylinder boundary (right?) The top and bottom of the cylinder have zeroGradient pressure and velocity conditions. The velocity boundary condition on the side of the cylinder is set to slip - I'm trying to let the UEqn naturally set the velocity. The results are not at all what I expected. Setting a finite rotational velocity, I expected to find a rotational U field, azimuthally symmetric, linearly varying radially. Instead, I have zero velocity everywhere. Interestingly though, the pressure field looks qualitatively OK, azimuthally symmetric with radial variation roughly as expected (correct value at the boundary). Are my expectations incorrect? It seems to me that after adding the Coriolis and cent. terms, the "U" we are solving for is the velocity in the rotating frame, which should be non-zero. What am I missing with the BCs? BTW, the solution looks fully converged, many more steps taken than were actually required for convergence. Many thanks, Borna

you can try the SimpleSRFFoam for you case.

 All times are GMT -4. The time now is 10:05.