CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   FLUENT (https://www.cfd-online.com/Forums/fluent/)
-   -   Position and Forces in a Transient Problem with a Moving Mesh (https://www.cfd-online.com/Forums/fluent/250807-position-forces-transient-problem-moving-mesh.html)

astrakhan July 10, 2023 16:27

Position and Forces in a Transient Problem with a Moving Mesh
 
2 Attachment(s)
Hi everyone,

I am running a 2D transient simulation of an airfoil travelling along a circular path. This is a common way to analyze a vertical axis wind turbine in dynamic stall. This is accomplished by having an airfoil set in a rotating mesh. The mesh has two nonconformal interfaces: one between the background and a circular inner mesh that rotates, another between that inner mesh and the mesh containing the airfoil.

Attachment 95336

I've attached a picture of a preliminary result (it is only qualitatively good, the mesh hasn't been properly refined). Ideally, I would be able to retrieve the radial and tangential force components (see other picture attached), and I have several issues to contend with. I'm listing them here, and I'd be grateful of course if any of you are able to enlighten me on any of the following points:
  • I need the angular position of the airfoil;
  • I need the forces acting on the airfoil in a moving frame of reference.

Attachment 95335

ANGULAR POSITION OF THE AIRFOIL
My first solution is to cop out and start the solution from a known position, and associate flow-time directly with angular position. I could probably get a UDF to spit out the angular position as part of the results, but I'm completely new to UDFs. Having to start the simulation from a known position is mildly annoying because I'd rather let the solver fly for a large number of iterations without saving data for the flow to fully develop, but there are ways around that.

The proper solution would be to locate the quarter-cord point (which is where the airfoil was fixed with respect to the horizontal when I made the geometry) of the airfoil and determine the angle it makes with the horizontal or the vertical line of the global coordinate system. I do not have the slightest idea how to do this. However, I did notice in CFD-Post that specific nodes can be selected. I then saw a UDF Macro/function that could be used in the solution to refer to specific nodes. As it happens, my mesh has nodes at both the leading and trailing edges of the airfoil (which is symmetrical), which made me think I should be able to get a UDF to get the coordinates of those nodes in the global frame of reference and then use trigonometry to recover the angular position of the airfoil. What do you think of such an approach?

Are there other ways? I'm actually surprised I couldn't find some stored quantity that tracks how much the mesh has been moved from one case/data file or timestep to the next in radians or degrees. Does that in fact exist?

FORCES ACTING ON THE AIRFOIL
I attached a picture above of the tangential and radial forces I ideally would like to recover. I was completely baffled to discover that there does not appear to be a built-in way of specifying, even in CFD-Post, a frame of reference that moves with my rotating inner mesh. Is that really the case?

Anyhow, my first copout would be to just export the total x-directed and y-directed forces acting on the airfoil in the global coordinate system, compute the combined magnitude, and retrieve the total force acting on the airfoil (which comes down to the same regardless of which orthogonal coordinate system I use). If I have a reliable way to have my angular position, I can use trigonometry to retrieve tangential and radial force components (maybe in Excel or MATLAB). However, what are my options to try and get Fluent to do that for me? In CFD-Post, it was very easy to compute that total force at individual time steps with an expression, but I could not get it to apply the expression to all timesteps in bulk (I realize that the real way to do this is during the solution process with a monitor/report, but is there a way for me to do this in bulk in CFD-Post?)

I can get Fluent to export forces directed along a certain vector, and I wonder if I couldn't get Fluent to adjust that direction depending on the angle at which I start the problem. Again, I do not know how to do that in practice. It seems to me that I would have to define a UDF with DEFINE_REPORT_DEFINITION_FN and use Compute_Force_and_Moment (apparently an undocumented macro/function).

Can you also confirm that even if I use a moving mesh, and that my airfoil is in a moving mesh, that the total x-component and y-component forces are computed correctly in the global frame of reference? I am getting strange values at the moment, which could be due to the problem not being correctly modelled by the turbulence model (unlikely, I've seen papers use the same method), my mesh not being refined enough (rather likely, the Courant and y-plus values are good but I haven't yet done a proper mesh refinement study), or because the values of velocity and forces are erroneously recorded due to the moving mesh. My airfoil wall is indeed modelled as a moving wall rotating with the adjacent fluid zone, but I remain suspicious. Is there anything else I should look out for to trust those values?

---

I realize I've asked many questions. Especially on those relating to UDF use, I am of course not expecting anyone to just write the whole macro for me. First, I'm looking for pointers as to what you think about what I am doing, and answers to the simpler questions. Then maybe I'll think about implementing some of these.

In my current situation, quick and dirty is the best. I'm leaning towards extrapolating angle from flow-time (maybe without a UDF, unless you think it's simple -- always nice to learn something new), and getting force components from the total force (which I indeed believe does not depend on the choice of orthogonal coordinates, moving at constant angular velocity or fixed) from force reports and processing in MATLAB. What do you think?

Thank you very much,
Astrakhan

PS: To moderators, sorry if this is the second time you see this. I got no feedback indicating the thread post was successful when I tried sending it the first time.

LuckyTran July 10, 2023 22:14

Firstly... any point probe will move with the mesh... now you know exactly where the airfoil is at all times.
Secondly, you specify the angular velocity of the rotating mesh so you should know the position of the airfoil at all times simply from the relation of physical time elapsed x the angular velocity
Thirdly, there is a rotating reference frame


Relax, take a deep breath, and stop thinking that a UDF solves all your problems, it never is. That mode of thinking is creating more problems for you!

astrakhan July 11, 2023 04:15

Thank you for answering!

I feel a bit silly for not thinking about this earlier but yes, I should be able to track the position of a point on my airfoil to track the airfoil's angular position.

Even sillier: I might only start recording data at an arbitrary timestep to let the flow develop, but since the flow-time is recorded with every timestep, regardless of timestep changes during the solution process, there's no reason I can't reconstruct position from any case file using elapsed time.

Sillier yet: no point in using UDFs when I'm able to get everything I need from a report file MATLAB.

EDIT:
A moving reference frame can indeed be specified in the solver (Setup>Reference Frames)

astrakhan July 17, 2023 09:22

Hello again,

Angular position is being extrapolated directly from time and angular velocity. I had initially thought this to be inconvenient due to variations in time step, but because Fluent is storing both iteration count and flow time, this was in fact not an issue.

I still am using the global frame of reference for my forces, and have not yet experimented with adding frames.

I am getting suspiciously high values for my forces along the airfoil (which you will recall is moving, and following a circular trajectory at constant angular velocity). While my mesh arguably could use some more work, and smaller timesteps could be used, I am wondering if forces on walls contained in moving meshes don't always mix.

The airfoil wall is contained in a fluid zone which rotates with a circular 'inner' fluid zone that rotates at constant angular velocity. The boundary condition on the airfoil wall is a moving wall immobile with respect to the adjacent cell zone, which was cited in another post as a possible oversight.

Is there anything else I should think about, or is this enough setup to resolve forces on the wall? The force components are resolved in the global x and global y directions.

Thanks,
Astrakhan

EDIT: Can't believe I didn't realize this before: the Fluent 2D analysis don't know how deep the airfoil is, and the force Fluent returns is force per unit span/depth of airfoil.


All times are GMT -4. The time now is 03:33.