-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Could this be extended to 2 rotor case #297
Comments
Do you mean two rotors on the same tower, or two separate turbines? I have an example case for the latter here: https://github.com/petebachant/NTNU-HAWT-turbinesFoam For a multi-rotor turbine, you could define multiple rotors and any number of arbitrary actuator lines to represent a tower structure. |
Thanks for your reply. I mean two rotor (turbine) on same tower. I think as of now I am still not clear and specific in my question. Will it be fine if I keep posting queries here, or some other platform is available? |
Also if I am running this tutorial case https://github.com/petebachant/NTNU-HAWT-turbinesFoam, through run.py it gives me this error: |
Sure, feel free to post here. It serves as a history if others encounter the same issues. As for Python, that case is setup to run with Python 3. If you have the ability I'd recommend upgrading since Python 2.7 is now deprecated. I like the Anaconda distribution. |
Ok, thanks, I doubt that my difficulties will eat up all the spaces.:P |
I'd recommend installing Anaconda, which will include Numpy, so you don't have any issues with dependencies, or you can install the dependencies manually using For setting up two rotors, I'd say the process would be something like:
|
Thanks, so I started the first step (one turbine with no tower or nacelle). I am trying with the horizontal axis turbine, thus trying the tutorial axialFlowTurbineAL. Now the blade that I am using has not the uniform cross-section. I am taking some cross sections and trying the Qblade to extract the Cl Cd curves. Now, what I understood is that I had to change the blockMesh and SHM according to my need. And primarily change the fvOptions. What I understood is that: In the fvOptions, the "nElements" refers to the number of slices takes in the blade for getting the Cl and Cd curves. And for giving the input at these locations (radial distance, twist angle), "elementData" file is there. So effectively I need to make a file similar to "elementData" in which I had to input the locations, twist corresponding to the slice. Sorry but, what is "chordMount" in this? |
And yes, you can specify multiple Reynolds number airfoil data in |
Thanks a lot for your continuous help, but still I am not clear with the usage and/or terminology of nElements and elementData, I will look closely into that and ask you, is it fine? |
Sure, you can continue to ask questions here. No problem. As for the missing import, that can be solved by running |
Thanks a lot. |
Ah, yes. Any time you get an error like that, it usually can be fixed with a
|
Great, thanks! worked perfectly. |
The particular SGS model does seem to have a large effect on the stability of things like tip vortices, but I'm not sure the sensitivity to numerical schemes. Typically, for LES, we use 2nd order accurate schemes, which seem to remain stable since these meshes are simple. There is quite a bit of research in the literature on simulating HAWTs with actuator lines and LES. There are some references in this paper as well: https://arxiv.org/abs/1605.01449 |
Sorry for my unclear question. I intend to ask the suitable LES model like, kEqn, WALE, SpalartAllmarasIDDES. Also wanted you to kindly comment regarding typical grid and time resolution for LES simulations. I tried with the kEqn LES model, but could not see the Tip Vortices etc. thus wondering if some thing else is missing from my part. |
Sorry, I still have doubt with the ChordMount, in the previous post you have mentioned that, typically it is one fourth of the chord length, but if I look at the tutorial case you have suggested https://github.com/hcOnel/NREL5MW-turbinesFoam , then this looks very different. |
For a HAWT, 0.5 could certainly be used. If you imagine a straight line from the axis out to the blade tip defining the geometry, the chord mount defines at each cross-section the distance from the leading edge to that geometric line (the actuator line.) Twist is calculated like blade pitch, twisting about the actuator line, minimizing angle of attack as twist increases--for a constant TSR. It is also defined in degrees. |
Ok, many thanks for the help and reply. With your help I am able to simulate a RANS case for single rotor and 2 rotor case is in progress (without hub, tower etc). Many thanks for it. |
Yep, the |
In the tutorial case "axialFlowTurbineAL" when I intend to plot the results using "plot.py" (provided in the tutorial directory), it successfully plots the "plot_cp" and "plot_spanwise", but while plotting the "plot_meancontquiv", it throws an error which says: |
Ah, that plotting function shouldn't really be there. This repo should have the wake plotting working: https://github.com/petebachant/NTNU-HAWT-turbinesFoam |
Remove wake plotting from AFTAL tutorial in response to #297
Sorry Sir, but unfortunately, using this python script only the performances of the two turbines are outputted/plotted. If I tried to plot "wake", then it complains about: |
Any suggestion/comment on the previous problem? Another issue which is troubling me is that, when I converted this 2 rotor case from RANS to LES, the value of coefficient of power (Cp) seems to be under predicted by LES. The value of Cp from RANS is 0.4, from LES is 0.36, and from the experiment its 0.4 (for 1 turbine, similarly its same for the second turbine). I tried to use about 5 million cells, used K-eqn model for LES simulations and used time stepping close of half of the present set up. I would have expected that the results from LES much better than RANS. Have I done some thing terribly wrong? Could you kindly comment or suggest some thing in this regard. |
I doubt you've done anything terribly wrong, as I've seen similar discrepancies in RANS/LES Cp values. It's possible that ALM/LES is not better at predicting absolute performance of rotors, but is more geared towards studying wakes. Ultimately, lower performance could be caused by lower relative velocity at the actuator lines, or a different flow direction changing angle of attack off the optimum. I recommend digging deeper into the flow data seen by each element along with its computed angle of attack. I will take a look at the NTNU case and see if I can get the plotting working. Feel free to raise more specific issues in that case's issue tracker. |
Thanks for your insight in this regard. Now I am trying with approx. 10 million cells for LES case and will update the pic in this thread . Meanwhile regarding the plotting issue, out of 9 plots, only 4 are working which are: perf, blade-perf, perf-curves and perf-curves-exp; other 5 plots like wake, spanwise, strut-perf, recover, meancontquiv are not working. Also it seems that "controlDict.recovery" is missing in the system folder. Thanks again for your continuous support and help. |
Just a quick and again naive query. Since I am trying to run the LES simulations using 9 million points and unfortunately after 3-4 days the simulation stops due to may be electricity failure. Thus I wanted to re-run the sims from the latest time step, is there any way to do this? I tried through these 2 ways:
|
Unfortunately not at the moment. The actuator line modeling stuff doesn't have the ability to restart from an arbitrary time. It probably wouldn't be too difficult to implement, but I was always running simulations from zero. As a workaround, you could copy the case to a new one and restart from Definitely room for improvement there. |
Thanks a lot for your insight. But if my hub diameter is 1.2 m, are you suggesting to artificially putting the hub diameter something 1.3 m or so? Also I should try using the end effects on, which you have already coded in the fvOptions, I guess? |
You could try it. The force tapers off like a Gaussian, so it's not a perfect representation of the true geometry.
Yep, you have control over whether you want them applied at the root and/or the tip. If you apply at the root, lift will taper off there, which will decrease the strength of that vortex. endEffects
{
active on;
endEffectsModel Glauert; // Glauert || Shen || liftingLine
GlauertCoeffs
{
tipEffects on;
rootEffects on;
}
ShenCoeffs
{
c1 0.125;
c2 21;
tipEffects on;
rootEffects on;
}
} |
Many thanks for your help. I will try, implement and update you. |
Thanks a lot for all your help. I think you already answered that "could this be extended to include the cavitation effect". But now since I am trying the tidal turbine and I need to work for the cavitation effect, could you kindly suggest what should I do to run the turbinesFoam using interPhaseChangeFoam? Will it be difficult/time taking ? |
Since |
Thanks a lot for your help and the link. This is indeed a great help. |
This could be perfectly normal. If the blades are stalling, they could be imparting more force on the flow to create larger looking isosurfaces. Better to compare to experiments using Cp, Cd, mean velocity, turbulence intensity, etc., or at least be aware of the threshold and quantity of your isosurfaces to compare to other visualizations. |
Thanks a lot, but in other words is the "twist stopping the tip vortex from breaking down" ? When I am trying to run the "interPhaseChangeFoam" to include the effect of cavitation, although I am not getting any errors but but it is not at all simulating any thing, the log file corresponding to it is attached herewith. I also refereed the link that you have suggested ( #305 ) but was not able to resolve that. Any suggestion/comment will be a great help. |
What OpenFOAM version are you running? I've never used |
Thanks for the reply. I am using OpenFOAM 19.06, however it seems that the turbinesFOAM is able to recognize the interPhaseChangeFoam but not able to perform simulations properly. In addition I have some problems with the NTNU case which I am explaining in next post to avoid confusion. |
Coming back to the two rotor case NTNU case https://github.com/petebachant/NTNU-HAWT-turbinesFoam, there are some doubts:
|
|
Thanks a lot for your reply and help. I am trying to model a 2 turbines system in which one turbine is rotating in clockwise and other anti-clockwise direction (or vice-versa) and are located at a separation of 1D, my problems are:
|
You're correct that TSR is always defined in terms of
I would simply multiply the values when post processing using |
Thanks a lot for your reply and help. In the previous comment you said that Also I am find it difficult to include the "cavitation" effect in the case using "interPhaseChangeFoam" should I open another thread relating to this? |
Sorry about that. Yeah, you can assume a value of rho and use that in the equation if you want to compare to, e.g., an experiment. I'd say for the cavitation question, it certainly makes sense to open a new issue. I'm honestly not very familiar with the topic so it may be worth asking on the CFD Online forums. |
Thanks a lot for your timely help. If I look at the "axialFlowturbineALSource.c" then it seems that it is looking for "rhoRef" in the input/source (not sure) as:
for calculating the Cp. To calculate the value of power if I assume, \rho =1000 Kg/m^3; U_inf =2.5 m/s, R = 9.5 m (as per the input) and from the code output I am getting the Cp=0.1956, then from hand calculation I am getting Power = 433267.35 and if I am writing it explicitly in the code from:
|
If there a |
No, it's not there in |
Alright, so to be clear, If you define |
Thanks a lot for this clarification. In the same context, what will be the unit of forces (fx, fy, fz) in the "postProcessing/actuatorLineElements/0" (turbine1.blade1.element0.csv, turbine1.blade1.element1.csv etc)? Also for a single turbine and single blade, sorry but I don't understand why there be 3 time data ? I was expecting that the data for the single turbine and for 3 blades data will be there. Extremely sorry for asking these naive queries. |
Those units should be force per unit density for incompressible flow, and Newtons for compressible or multiphase flow. For writing individual force data from each blade that need to be specified for each blade, and you'll see in some tutorials that it is turned off for blade 2 and 3 since they will be the same. blades
{
blade1
{
writePerf true; // <-- Write blade performance
writeElementPerf true; // <--Write element performance
nElements 28;
elementProfiles
(
cylinder
S826
S826
S826
S826
S826
S826
S826
S826
S826
S826
S826
S826
S826
);
elementData
(
#include "elementData"
);
}
blade2
{
$blade1;
writePerf false; // <--Copied blade1 but overwritten to false
writeElementPerf false; // <--Copied blade1 but overwritten to false
azimuthalOffset 120.0;
}
blade3
{
$blade2;
azimuthalOffset 240.0;
}
} |
Ah, yes. That is due to additional PIMPLE correctors. I couldn't find any way to tell which was the last iteration, so I had to write performance for each. The last should be taken as the actual value. If reading the data in pandas, you can do a |
Thanks a lot, I should have figured that out, extremely sorry for that. |
A typical turbine blade should have negative twist for most of the span, regardless of rotation direction: // Blade element data
// axialDistance, radius, azimuth, chord, chordMount, twist
(0.0 0.0075 0.0 0.0135 0.25 0.0)
(0.0 0.049 0.0 0.0135 0.25 0.0)
(0.0 0.054999 0.0 0.0495 0.25 -38.0)
(0.0 0.0675 0.0 0.081432 0.25 -37.055)
(0.0 0.0824985 0.0 0.08011 0.25 -32.544)
(0.0 0.0975015 0.0 0.077013 0.25 -28.677)
(0.0 0.1125 0.0 0.073125 0.25 -25.262)
(0.0 0.1274985 0.0 0.0690075 0.25 -22.43)
(0.0 0.1425015 0.0 0.064953 0.25 -19.988)
(0.0 0.1575 0.0 0.061101 0.25 -18.034)
(0.0 0.1724985 0.0 0.057519 0.25 -16.349)
(0.0 0.1875015 0.0 0.054225 0.25 -14.663)
(0.0 0.2025 0.0 0.0512055 0.25 -13.067)
(0.0 0.2174985 0.0 0.048447 0.25 -11.829)
(0.0 0.2325015 0.0 0.0459315 0.25 -10.753)
(0.0 0.2475 0.0 0.043632 0.25 -9.8177)
(0.0 0.2624985 0.0 0.0415287 0.25 -8.8827)
(0.0 0.2775015 0.0 0.0396009 0.25 -7.9877)
(0.0 0.2925 0.0 0.0378306 0.25 -7.2527)
(0.0 0.3074985 0.0 0.0362007 0.25 -6.565)
(0.0 0.3225015 0.0 0.0346968 0.25 -5.9187)
(0.0 0.3375 0.0 0.0333063 0.25 -5.3045)
(0.0 0.3524985 0.0 0.0320171 0.25 -4.7185)
(0.0 0.3675015 0.0 0.03081915 0.25 -4.1316)
(0.0 0.3825 0.0 0.02970405 0.25 -3.5439)
(0.0 0.3974985 0.0 0.02866365 0.25 -2.9433)
(0.0 0.4125015 0.0 0.0276912 0.25 -2.2185)
(0.0 0.4275 0.0 0.0267804 0.25 -1.097)
(0.0 0.4424985 0.0 0.02592585 0.25 0.71674) This is opposite with e.g., the NREL 5 MW definition, which defines twist as positive. |
Hi @chandukec , Thanks, |
@sreeraj37 Sure, considering the fact I am still a learner and @petebachant is really much more knowledgeable (in fact the creator ) and helping guy as compared to me, thus feel free to post in this forum which could eventually be helpful to other fellows. |
Hello,
Thanks for the turbineFoam, I installed it correctly in OpenFOAM 1906 with your help. Was trying the tutorials of this and wondering that could this be extended for the 2 rotor case? Suppose I had two turbines located at "x" meter with the nacelle, tower etc, is this doable from the existing version? Do I need to change the source for making this happen or how will this work? Any help or comments?
The text was updated successfully, but these errors were encountered: