Wake deflection when using FAST.Farm at region3

Dear @Jason.Jonkman ,

After adjusting the parameters as you suggested, the following cross section was obtained at x=D/2 as shown below.
The set values are as follows.
k_VortexDecay=0
k_vCurl=5

Is the simulation running without problems?

Best regards,

Dear @Yuki.Ogura,

I can’t answer your question generally, but are you now seeing the wake deflection you expect?

Best regards,

Dear @Jason.Jonkman ,

Sorry for my bad question.

The velocity deficit ratio in the xy-plane was obtained at 6D downstream of the wind turbine under the previous conditions, as shown in the following figure.
The blue line is the result of the LES analysis.
The velocity deficit ratio in the xy-plane was obtained at 6D downstream of the wind turbine under the previous conditions, as shown in the following figure.
The blue line is the result of the LES analysis. Which parameter should be changed to reduce the wake range and increase the maximum wake deficits order to bring the black line closer to the blue line?

Dear @Yuki.Ogura,

I see from your plot that the wake deflection matches reasonable well between FAST.Farm (curled wake) and LES, but the wake is recovering faster in FAST.Farm. This implies that your eddy viscosity in FAST.Farm is too high. It looks like your simulation involves inflow without ambient turbulence, so, the ambient turbulence part of the eddy viscosity is likely quite low. So, it is the eddy viscosity associated with the shear layer in the wake that is too high. This can be changed in FAST.Farm by changing (reducing) k_vCurl and/or k_vShr.

Best regards,

Dear @Jason.Jonkman ,

I followed your advice and ran the simulation with a reduced k_vSr.
I were able to match the Cueled Wake results to the LES results as shown in the figure below.
Thank you for your support.


Best regards,

1 Like

Dear @Yuki.Ogura @Jason.Jonkman

This post is very interesting. I haven’t tried the curved wake model yet. As you mentioned, the curled wake model has more accurate wake under yaw conditions. Can I make some improvements in DWM to achieve better yaw wake simulation? What aspects should I start from?

Best regards,

Dear @Jundong.Wang,

I’m not sure I understand what you are asking, but certainly the curled wake model of FAST.Farm is better than the polar model in skewed flow conditions, e.g., applications of wind farm controls with wake steering.

For details on the curled wake model of FAST.Farm, see our Wind Energy Science journal article: https://onlinelibrary.wiley.com/doi/full/10.1002/we.2785.

Best regards,

Dear Jonkman,
Sorry to bother you again,I’m trying to compare the velocity profiles of the actuator line model and FAST.FARM of two turbine string , but my actuator line simulation’s wake shows some strange phenomena: the maximum velocity loss occurs near the hub neither near the tip, which is different from the similar results I’ve seen before. What could be causing this?


Here is the fvOptions file.

/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  3.0.x                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      fvOptions;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

/*EpsSource1
{
    type            myALeSource;
    fields	    (epsilon);
    selectionMode   cellSet;
    cellSet         AL1;
    diskRadius      40;
    diskCenter      (0.0001 0 70);
    C4e_factor      0.9;
    writeToFile     true;
    monitorMethod   points;
    monitorCoeffs
    {
        points
        (
            (-20 40 70)
        );
    }
}

EpsSource2
{
    type            myALeSource;
    fields	    (epsilon);
    selectionMode   cellSet;
    cellSet         AL2;
    diskRadius      40;
    diskCenter      (560.0001 0 70);
    C4e_factor      2e2;
    writeToFile     true;
    monitorMethod   points;
    monitorCoeffs
    {
        points
        (
            (520 40 70)
        );
    }
}*/



turbine1
{
    type            axialFlowTurbineALSource;
    active          on;

    axialFlowTurbineALSourceCoeffs
    {
        fieldNames          (U);
        selectionMode       cellSet; // cellSet || points || cellZone
        cellSet             turbine;
        origin              (0 0 0);//
        axis                (1 0 0);
        verticalDirection   (0 0 1);//垂直高度方向
        azimuthalOffset     0;
        yawAngle	     0;
        freeStreamVelocity  (8 0 0);
        tipSpeedRatio       7.54;//叶尖速比
        rotorRadius         89.15;

        dynamicStall
        {
            active          off;
            dynamicStallModel LeishmanBeddoes;
        }

        endEffects
        {
            active          on;
            endEffectsModel Glauert; // Glauert || Shen || liftingLine
            GlauertCoeffs
            {
                tipEffects  on;
                rootEffects on;
            }
            ShenCoeffs
            {
                c1          0.125;
                c2          21;
                tipEffects  on;
                rootEffects on;
            }
        }

        blades
        {
            blade1
            {
                writePerf   true;
                writeElementPerf true;
                nElements   57;
                elementProfiles
                (	
					 
					 //Cylinder_Aerodyn15
                                         Cylinder_Aerodyn15
                                         FFA_W3_241_Aerodyn15
                                         FFA_W3_301_Aerodyn15
                                         FFA_W3_360_Aerodyn15
                                         FFA_W3_480_Aerodyn15
                                         FFA_W3_480_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15

					 
                 );
                elementData
                (
				  // axialDis radius  azimuth chord chordMount pitch
				
(0	2.8	0	5.38	0.25	-14.5)
(0	8.179769842	0	5.379960542	0.25	-14.5)
(0	13.90314305	0	5.635440637	0.25	-13.88881566)
(0	19.89533568	0	6.070654313	0.25	-10.60868772)
(0	26.06466526	0	6.203008845	0.25	-7.801802346)
(0	32.30763834	0	6.019962425	0.25	-6.382197792)
(0	38.5156384	0	5.645323326	0.25	-5.227502158)
(0	44.58238871	0	5.185829384	0.25	-4.088596355)
(0	50.41106166	0	4.69821952	0.25	-2.886552384)
(0	55.92010112	0	4.222691222	0.25	-1.736174932)
(0	61.04704772	0	3.786080587	0.25	-0.718703543)
(0	65.75009523	0	3.398094491	0.25	0.130379615)
(0	70.00759769	0	3.061899684	0.25	0.819565193)
(0	73.81585351	0	2.77627915	0.25	1.382704418)
(0	77.18597429	0	2.535947291	0.25	1.861958764)
(0	80.14021663	0	2.331431759	0.25	2.280079398)
(0	82.70848486	0	2.12906893	0.25	2.644084094)
(0	84.92515655	0	1.903322498	0.25	2.945070681)
(0	86.82648588	0	1.626011864	0.25	3.177328958)
(0	88.44866288	0	1.183598976	0.25	3.35752648)

                );
            }
            blade2
            {
                $blade1;
                writePerf   true;
                writeElementPerf true;
                azimuthalOffset 120.0;
            }
            blade3
            {
                $blade2;
                azimuthalOffset 240.0;
            }
        }

     //   tower
     //   {
     //       active off; // not sure if this works
     //       includeInTotalDrag  false; // default is false
     //       nElements   1;
     //       elementProfiles (cylinder);
     //       elementData
     //       ( // axial distance (turbine axis), height, diameter
     //           (10.0 -90.0 4.50)
     //           (10.0  0.00 3.50)
     //       );
     //   }
     //
        hub
        {
            nElements   2;
            elementProfiles (Cylinder_Aerodyn15);
            elementData
            ( // axial distance, height, diameter
                (0 2.8 5.6)
                (0 -2.8 5.6)
            );
        }

        profileData
        {
            Cylinder_Aerodyn15
            {
                data ((-180 0 0.6)(180 0 0.6));
                //data (#include "../../resources/foilData/Cylinder_Aerodyn15.dat");
            }
            FFA_W3_241_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_241_Aerodyn15.txt");
            }
            FFA_W3_301_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_301_Aerodyn15.txt");
            }
            FFA_W3_360_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_360_Aerodyn15.txt");
            }
            FFA_W3_480_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_480_Aerodyn15.txt");
            }
            FFA_W3_600_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_600_Aerodyn15.txt");
            }
            
        }
    }
}

turbine2
{
    type            axialFlowTurbineALSource;
    active          on;

    axialFlowTurbineALSourceCoeffs
    {
        fieldNames          (U);
        selectionMode       cellSet; // cellSet || points || cellZone
        cellSet             turbine;
        origin              (1248.1 0 0);
        axis                (1 0 0);
        verticalDirection   (0 0 1);
        azimuthalOffset     0;
        yawAngle	     0;
        freeStreamVelocity  (5.53 0 0);
        tipSpeedRatio       9.93;
        rotorRadius         89.15;

        dynamicStall
        {
            active          off;
            dynamicStallModel LeishmanBeddoes;
        }

        endEffects
        {
            active          on;
            endEffectsModel Glauert; // Glauert || Shen || liftingLine
            GlauertCoeffs
            {
                tipEffects  on;
                rootEffects on;
            }
            ShenCoeffs
            {
                c1          0.125;
                c2          21;
                tipEffects  on;
                rootEffects on;
            }
        }

        blades
        {
            blade1
            {
                writePerf   true;
                writeElementPerf true;
                nElements   57;
                elementProfiles
                (	
					 
					 //Cylinder_Aerodyn15
                                         Cylinder_Aerodyn15
                                         FFA_W3_241_Aerodyn15
                                         FFA_W3_301_Aerodyn15
                                         FFA_W3_360_Aerodyn15
                                         FFA_W3_480_Aerodyn15
                                         FFA_W3_480_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15
                                         FFA_W3_600_Aerodyn15					 
                 );
                elementData
                (
				  // axialDis radius  azimuth chord chordMount pitch
				(0	2.8	0	5.38	0.25	-14.5)
(0	8.179769842	0	5.379960542	0.25	-14.5)
(0	13.90314305	0	5.635440637	0.25	-13.88881566)
(0	19.89533568	0	6.070654313	0.25	-10.60868772)
(0	26.06466526	0	6.203008845	0.25	-7.801802346)
(0	32.30763834	0	6.019962425	0.25	-6.382197792)
(0	38.5156384	0	5.645323326	0.25	-5.227502158)
(0	44.58238871	0	5.185829384	0.25	-4.088596355)
(0	50.41106166	0	4.69821952	0.25	-2.886552384)
(0	55.92010112	0	4.222691222	0.25	-1.736174932)
(0	61.04704772	0	3.786080587	0.25	-0.718703543)
(0	65.75009523	0	3.398094491	0.25	0.130379615)
(0	70.00759769	0	3.061899684	0.25	0.819565193)
(0	73.81585351	0	2.77627915	0.25	1.382704418)
(0	77.18597429	0	2.535947291	0.25	1.861958764)
(0	80.14021663	0	2.331431759	0.25	2.280079398)
(0	82.70848486	0	2.12906893	0.25	2.644084094)
(0	84.92515655	0	1.903322498	0.25	2.945070681)
(0	86.82648588	0	1.626011864	0.25	3.177328958)
(0	88.44866288	0	1.183598976	0.25	3.35752648)


                );
            }
            blade2
            {
                $blade1;
                writePerf   true;
                writeElementPerf true;
                azimuthalOffset 120.0;
            }
            blade3
            {
                $blade2;
                azimuthalOffset 240.0;
            }
        }

     //   tower
     //   {
     //       active off; // not sure if this works
     //       includeInTotalDrag  false; // default is false
     //       nElements   1;
     //       elementProfiles (cylinder);
     //       elementData
     //       ( // axial distance (turbine axis), height, diameter
     //           (10.0 -90.0 4.50)
     //           (10.0  0.00 3.50)
     //       );
     //   }
     //
        hub
        {
            nElements   2;
            elementProfiles (Cylinder_Aerodyn15);
            elementData
            ( // axial distance, height, diameter
                (0 2.8 5.6)
                (0 -2.8 5.6)
            );
        }

        profileData
        {
            Cylinder_Aerodyn15
            {
                data ((-180 0 0.6)(180 0 0.6));
                //data (#include "../../resources/foilData/Cylinder_Aerodyn15.dat");
            }
            FFA_W3_241_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_241_Aerodyn15.txt");
            }
            FFA_W3_301_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_301_Aerodyn15.txt");
            }
            FFA_W3_360_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_360_Aerodyn15.txt");
            }
            FFA_W3_480_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_480_Aerodyn15.txt");
            }
            FFA_W3_600_Aerodyn15
            {
                //data ((-180 0 1.0)(180 0 1.0));
                data (#include "../../resources/foilData/FFA_W3_600_Aerodyn15.txt");
            }
            
        }
    }
}


// ************************************************************************* //

Best regards,

Dear @Zhiyan.Dong,

I’m not familiar enough with OpenFOAM to comment on your set-up. If are using OpenFOAM within SOWFA, I suggest posting your question on the SOWFA GitHub site: GitHub · Where software is built.

Best regards,

Dear Jonkman,
I’m sorry to bother you again, I then solved the problem I mentioned earlier and tried to learn amr-wind to run the same example, the wake deficit of the two actuator lines method is more similar, so I ruled out the problem of the actuator line simulation, I then tried to calibrate the FAST.FARM parameters, I turned up the value of vkCurl with reference to your earlier paper and combined with your suggestion in the “[(Differences between curl and polar wake models in FAST Farm for a fixed bottom farm · OpenFAST/openfast · Discussion #1756 · GitHub)” post, The increase in its value does significantly reduce the gap between FAS.FARM and LES, but there is still a significant numerical difference, I have tried several parameter combinations later, but it still can’t reduce the gap with LES, do you have any suggestions?


Best regards,

Dear @Zhiyan.Dong,

Can you clarify what conditions you are simulating (wind turbine, inflow, skew angle)?

The wake deficit looks quite different in the near wake (1D). Is the rotor thrust the same between LES and FAST.Farm? The initial wake deficit is wider in FAST.Farm, which you could adjust by playing with C_NearWake.

Otherwise, the last (yellow) solution from FAST.Farm is getting closer to result you expect.

Best regards,