You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"Length of wake propagation buffer region, expressed as a multiple of RotorDiamRef [>=0.0] or DEFAULT [DEFAULT=5]", &
732
+
5_IntKi, ErrStat2, ErrMsg2, UnEc); if (Failed()) return
733
+
734
+
WD_InitInp%RotorDiamRef = p%RotorDiamRef
726
735
727
736
! f_c - Cut-off (corner) frequency of the low-pass time-filter for the wake advection, deflection, and meandering model (Hz) [>0.0] or DEFAULT [DEFAULT=0.0007]:
728
737
DefaultReVal =12.5_ReKi/(p%RotorDiamRef/2._ReKi) ! Eq. (32) of https://doi.org/10.1002/we.2785, with U=10, a=1/3
IF (WD_InitInp%Mod_Wake < 1.or. WD_InitInp%Mod_Wake >3 ) CALL SetErrStat(ErrID_Fatal,'Mod_Wake needs to be 1,2 or 3',ErrStat,ErrMsg,RoutineName)
1025
1034
IF (WD_InitInp%dr <=0.0_ReKi) CALL SetErrStat(ErrID_Fatal,'dr (radial increment) must be larger than 0.',ErrStat,ErrMsg,RoutineName)
1026
1035
IF (WD_InitInp%NumRadii < 2) CALL SetErrStat(ErrID_Fatal,'NumRadii (number of radii) must be at least 2.',ErrStat,ErrMsg,RoutineName)
1027
-
IF (WD_InitInp%NumPlanes < 2) CALL SetErrStat(ErrID_Fatal,'NumPlanes (number of wake planes) must be at least 2.',ErrStat,ErrMsg,RoutineName)
1036
+
IF (WD_InitInp%NumDFull <=0.0_ReKi) CALL SetErrStat(ErrID_Fatal,'NumDFull (distance of full wake propagation as a multiple of RotorDiamRef) must be positive.',ErrStat,ErrMsg,RoutineName)
1037
+
IF (WD_InitInp%NumDBuff < 0.0_ReKi) CALL SetErrStat(ErrID_Fatal,'NumDBuff (length of wake propagation buffer region as a multiple of RotorDiamRef) must be nonnegative.',ErrStat,ErrMsg,RoutineName)
1028
1038
1029
1039
IF (WD_InitInp%k_VortexDecay < 0.0_ReKi) CALL SetErrStat(ErrID_Fatal,'k_VortexDecay must be >= 0',ErrStat,ErrMsg,RoutineName)
1030
1040
IF (WD_InitInp%NumVortices < 2) CALL SetErrStat(ErrID_Fatal,'NumVorticies must be greater than 1',ErrStat,ErrMsg,RoutineName)
call SetErrStat(ErrID_Warn, "For efficiency, NumPlanes has been reduced to the number of time steps ("//TRIM(Num2LStr(WD_InitInput%InputFileData%NumPlanes))//").", ErrStat, ErrMsg, RoutineName )
! Find wake volume which contains the user-requested downstream location.
1407
-
do np =0, min(farm%WD(nt)%p%NumPlanes-2 , n)
1411
+
do np =0, NINT(farm%WD(nt)%y%NumPlanes)-2
1408
1412
1409
1413
if ( ( farm%p%OutDist(iOutDist) >= farm%WD(nt)%y%x_plane(np) ) .and. ( farm%p%OutDist(iOutDist) < farm%WD(nt)%y%x_plane(np+1) ) ) then! A wake volume has been found
1410
1414
@@ -1774,12 +1778,14 @@ END SUBROUTINE Transfer_FAST_to_WD
1774
1778
SUBROUTINETransfer_AWAE_to_WD(farm)
1775
1779
type(All_FastFarm_Data), INTENT(INOUT) :: farm !< FAST.Farm data
1776
1780
1777
-
integer(intKi) :: nt
1781
+
integer(IntKi) :: nt
1782
+
integer(IntKi) :: MaxPln
1778
1783
1779
1784
DO nt =1,farm%p%NumTurbines
1780
-
farm%WD(nt)%u%V_plane = farm%AWAE%y%V_plane(:,:,nt) ! Advection, deflection, and meandering velocity of wake planes, m/s
1781
-
farm%WD(nt)%u%Vx_wind_disk = farm%AWAE%y%Vx_wind_disk(nt) ! Rotor-disk-averaged ambient wind speed, normal to planes, m/s
1782
-
farm%WD(nt)%u%TI_amb = farm%AWAE%y%TI_amb(nt) ! Ambient turbulence intensity of wind at rotor disk
1785
+
MaxPln =NINT(farm%WD(nt)%y%NumPlanes)-1
1786
+
farm%WD(nt)%u%V_plane(:,0:MaxPln) = farm%AWAE%y%V_plane(:,0:MaxPln,nt) ! Advection, deflection, and meandering velocity of wake planes, m/s
1787
+
farm%WD(nt)%u%Vx_wind_disk = farm%AWAE%y%Vx_wind_disk(nt) ! Rotor-disk-averaged ambient wind speed, normal to planes, m/s
1788
+
farm%WD(nt)%u%TI_amb = farm%AWAE%y%TI_amb(nt) ! Ambient turbulence intensity of wind at rotor disk
type(All_FastFarm_Data), INTENT(INOUT) :: farm !< FAST.Farm data
1789
1795
1790
1796
integer(intKi) :: nt
1797
+
integer(IntKi) :: MaxPln
1791
1798
1792
-
DO nt =1,farm%p%NumTurbines
1793
-
farm%AWAE%u%xhat_plane(:,:,nt) = farm%WD(nt)%y%xhat_plane ! Orientations of wake planes, normal to wake planes, for each turbine
1794
-
farm%AWAE%u%p_plane(:,:,nt) = farm%WD(nt)%y%p_plane ! Center positions of wake planes for each turbine
1795
-
farm%AWAE%u%Vx_wake(:,:,:,nt) = farm%WD(nt)%y%Vx_wake2 ! Axial wake velocity deficit at wake planes, distributed radially, for each turbine
1796
-
farm%AWAE%u%Vy_wake(:,:,:,nt) = farm%WD(nt)%y%Vy_wake2 ! Horizontal wake velocity deficit at wake planes, distributed radially, for each turbine
1797
-
farm%AWAE%u%Vz_wake(:,:,:,nt) = farm%WD(nt)%y%Vz_wake2 ! "Vertical" wake velocity deficit at wake planes, distributed radially, for each turbine
1798
-
farm%AWAE%u%D_wake(:,nt) = farm%WD(nt)%y%D_wake ! Wake diameters at wake planes for each turbine
1799
+
DO nt =1,farm%p%NumTurbines
1800
+
MaxPln =NINT(farm%WD(nt)%y%NumPlanes)-1
1801
+
farm%AWAE%u%NumPlanes ( nt) = farm%WD(nt)%y%NumPlanes ! Number of active wake planes for each turbine
1802
+
farm%AWAE%u%xhat_plane( :,0:MaxPln,nt) = farm%WD(nt)%y%xhat_plane( :,0:MaxPln) ! Orientations of wake planes, normal to wake planes, for each turbine
1803
+
farm%AWAE%u%p_plane ( :,0:MaxPln,nt) = farm%WD(nt)%y%p_plane ( :,0:MaxPln) ! Center positions of wake planes for each turbine
1804
+
farm%AWAE%u%Vx_wake (:,:,0:MaxPln,nt) = farm%WD(nt)%y%Vx_wake2 (:,:,0:MaxPln) ! Axial wake velocity deficit at wake planes, distributed radially, for each turbine
1805
+
farm%AWAE%u%Vy_wake (:,:,0:MaxPln,nt) = farm%WD(nt)%y%Vy_wake2 (:,:,0:MaxPln) ! Horizontal wake velocity deficit at wake planes, distributed radially, for each turbine
1806
+
farm%AWAE%u%Vz_wake (:,:,0:MaxPln,nt) = farm%WD(nt)%y%Vz_wake2 (:,:,0:MaxPln) ! "Vertical" wake velocity deficit at wake planes, distributed radially, for each turbine
1807
+
farm%AWAE%u%D_wake ( 0:MaxPln,nt) = farm%WD(nt)%y%D_wake ( 0:MaxPln) ! Wake diameters at wake planes for each turbine
1799
1808
if (farm%p%WAT /= Mod_WAT_None) then
1800
-
farm%AWAE%u%WAT_k(:,:,:,nt) = farm%WD(nt)%y%WAT_k ! scaling factor for each wake plane for WAT
1809
+
farm%AWAE%u%WAT_k(:,:,0:MaxPln,nt) = farm%WD(nt)%y%WAT_k (:,:,0:MaxPln)! scaling factor for each wake plane for WAT
Copy file name to clipboardExpand all lines: glue-codes/fast-farm/src/FAST_Farm_Types.f90
+18Lines changed: 18 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -52,6 +52,7 @@ MODULE FAST_Farm_Types
52
52
REAL(DbKi) :: TMax =0.0_R8Ki!< Total run time [seconds]
53
53
INTEGER(IntKi) :: n_high_low =0_IntKi!< Number of high-resolution time steps per low-resolution time step [-]
54
54
INTEGER(IntKi) :: NumTurbines =0_IntKi!< Number of turbines in the simulation [-]
55
+
INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE:: MaxNumPlanes !< Maximum number of wake planes for each rotor [-]
55
56
CHARACTER(1024) :: WindFilePath !< Path name of wind data files from ABLSolver precursor [-]
56
57
REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE:: WT_Position !< X-Y-Z position of each wind turbine; index 1 = XYZ; index 2 = turbine number [meters]
57
58
INTEGER(IntKi) :: WaveFieldMod =0_IntKi!< Wave field handling (-) (switch) {0: use individual HydroDyn inputs without adjustment, 1: adjust wave phases based on turbine offsets from farm origin} [-]
0 commit comments