Updates for PyWake 2.0
WindFarmModel
- PropagateDownwind
- wind_farm_models.engineering_models.PropagateDownwind(site, windTurbines, wake_deficitModel, superpositionModel=LinearSum(), deflectionModel=None, turbulenceModel=None, rotorAvgModel=None, inputModifierModels=[])
- All2All
- wind_farm_models.engineering_models.All2All(site, windTurbines, wake_deficitModel, superpositionModel=LinearSum(), blockage_deficitModel=None, deflectionModel=None, turbulenceModel=None, rotorAvgModel=None)
- All2AllIterative
- wind_farm_models.engineering_models.All2AllIterative(site, windTurbines, wake_deficitModel, superpositionModel=LinearSum(), blockage_deficitModel=None, deflectionModel=None, turbulenceModel=None, convergence_tolerance=1e-06, rotorAvgModel=None, inputModifierModels=[])
- PropagateUpDownIterative
- wind_farm_models.engineering_models.PropagateUpDownIterative(site, windTurbines, wake_deficitModel, superpositionModel=LinearSum(), blockage_deficitModel=None, deflectionModel=None, turbulenceModel=None, rotorAvgModel=None, inputModifierModels=[], convergence_tolerance=1e-06)
- MinimalisticWindFarmModel
- wind_farm_models.minimalistic_wind_farm_model.MinimalisticWindFarmModel(site, windTurbines, correction_factor, latitude, max_cp=None, ws_cutin=None, ws_cutout=None)
- Bastankhah_PorteAgel_2014
- literature.gaussian_models.Bastankhah_PorteAgel_2014(site, windTurbines, k, ceps=0.2, ct2a=ct2a_mom1d, use_effective_ws=True, rotorAvgModel=None, superpositionModel=LinearSum(), deflectionModel=None, turbulenceModel=None, groundModel=None)
- Blondel_Cathelain_2020
- literature.gaussian_models.Blondel_Cathelain_2020(site, windTurbines, use_effective_ws=True, use_effective_ti=True, superpositionModel=LinearSum(), deflectionModel=None, turbulenceModel=None, rotorAvgModel=None, groundModel=None)
- CumulativeWake
- literature.cumulative_sum.CumulativeWake(site, windTurbines)
- IEA37CaseStudy1
- literature.iea37_case_study1.IEA37CaseStudy1(n_wt, deflectionModel=None)
- Jensen_1983
- literature.noj.Jensen_1983(site, windTurbines, rotorAvgModel=AreaOverlapAvgModel(), ct2a=ct2a_madsen, k=0.1, superpositionModel=SquaredSum(), deflectionModel=None, turbulenceModel=None, groundModel=None)
- Niayifar_PorteAgel_2016
- literature.gaussian_models.Niayifar_PorteAgel_2016(site, windTurbines, a=[0.3837, 0.003678], ceps=0.2, ct2a=ct2a_mom1d, use_effective_ws=True, use_effective_ti=True, superpositionModel=LinearSum(), deflectionModel=None, turbulenceModel=CrespoHernandez(ct2a=ct2a_madsen, c=[0.73, 0.8325, -0.0325, -0.32], addedTurbulenceSuperpositionModel=SqrMaxSum(), rotorAvgModel=AreaOverlapAvgModel(), groundModel=None), rotorAvgModel=GaussianOverlapAvgModel(filename='C:\mmpe\programming\python\Topfarm\PyWake\py_wake\rotor_avg_models/gaussian_overlap_.02_.02_128_512.nc'), groundModel=None)
- Nygaard_2022
- literature.turbopark.Nygaard_2022(site, windTurbines)
- Ott_Nielsen_2014
- literature.fuga.Ott_Nielsen_2014(LUT_path, site, windTurbines, rotorAvgModel=None, deflectionModel=None, turbulenceModel=None, remove_wriggles=False)
- Ott_Nielsen_2014_Blockage
- literature.fuga.Ott_Nielsen_2014_Blockage(LUT_path, site, windTurbines, rotorAvgModel=None, deflectionModel=None, turbulenceModel=None, convergence_tolerance=1e-06, remove_wriggles=False)
- Zong_PorteAgel_2020
- literature.gaussian_models.Zong_PorteAgel_2020(site, windTurbines, a=[0.38, 0.004], deltawD=0.7071067811865475, eps_coeff=0.35, lam=7.5, B=3, use_effective_ws=True, use_effective_ti=True, rotorAvgModel=None, superpositionModel=WeightedSum(delta=0.01, max_err=0.001, max_iter=5), deflectionModel=None, turbulenceModel=CrespoHernandez(ct2a=ct2a_madsen, c=[0.73, 0.8325, -0.0325, -0.32], addedTurbulenceSuperpositionModel=SqrMaxSum(), rotorAvgModel=AreaOverlapAvgModel(), groundModel=None), groundModel=None)
WakeDeficitModel
- NOJDeficit
- deficit_models.noj.NOJDeficit(ct2a=ct2a_madsen, k=0.1, rotorAvgModel=AreaOverlapAvgModel(), groundModel=None)
- FugaDeficit
- deficit_models.fuga.FugaDeficit(LUT_path='C:/mmpe/programming/python/Topfarm/PyWake/py_wake/tests/test_files/fuga/2MW/Z0=0.03000000Zi=00401Zeta0=0.00E+00.nc', smooth2zero_x=None, smooth2zero_y=None, remove_wriggles=False, method='linear', rotorAvgModel=None, groundModel=None)
- FugaMultiLUTDeficit
- deficit_models.fuga.FugaMultiLUTDeficit(LUT_path_lst='C:/mmpe/programming/python/Topfarm/PyWake/py_wake/tests/test_files/fuga/2MW/multilut/LUTs_Zeta0=0.00e+00_16_32_*_zi400_z0=0.00001000_z9.8-207.9_UL_nx128_ny128_dx20.0_dy5.0.nc', z_lst=None, TI_ref_height=None, bounds='limit', rotorAvgModel=None, groundModel=None, use_effective_ti=False)
- FugaYawDeficit
- deficit_models.fuga.FugaYawDeficit(LUT_path='C:/mmpe/programming/python/Topfarm/PyWake/py_wake/tests/test_files/fuga/2MW/Z0=0.00408599Zi=00400Zeta0=0.00E+00.nc', smooth2zero_x=None, smooth2zero_y=None, remove_wriggles=False, method='linear', rotorAvgModel=None, groundModel=None)
- BastankhahGaussianDeficit
- deficit_models.gaussian.BastankhahGaussianDeficit(ct2a=ct2a_madsen, k=0.0324555, ceps=0.2, ctlim=0.899, use_effective_ws=False, rotorAvgModel=None, groundModel=None)
- BlondelSuperGaussianDeficit2020
- deficit_models.gaussian.BlondelSuperGaussianDeficit2020(a_s=0.17, b_s=0.005, c_s=0.2, b_f=-0.68, c_f=2.41, ctlim=0.999, use_effective_ws=False, use_effective_ti=True, rotorAvgModel=None, groundModel=None)
- BlondelSuperGaussianDeficit2023
- deficit_models.gaussian.BlondelSuperGaussianDeficit2023(a_s=0.28, b_s=0.01, c_s=[0.1, 0.1], b_f=[-25.98, -1.06], c_f=2, ctlim=0.999, use_effective_ws=False, use_effective_ti=True, rotorAvgModel=None, groundModel=None)
- CarbajofuertesGaussianDeficit
- deficit_models.gaussian.CarbajofuertesGaussianDeficit(ct2a=ct2a_madsen, a=[0.35, 0.0], ceps=[-1.91, 0.34], use_effective_ws=False, use_effective_ti=True, rotorAvgModel=None, groundModel=None)
- IEA37SimpleBastankhahGaussianDeficit
- deficit_models.gaussian.IEA37SimpleBastankhahGaussianDeficit(rotorAvgModel=None, groundModel=None)
- NiayifarGaussianDeficit
- deficit_models.gaussian.NiayifarGaussianDeficit(ct2a=ct2a_madsen, a=[0.38, 0.004], ceps=0.2, ctlim=0.899, use_effective_ws=False, use_effective_ti=True, rotorAvgModel=None, groundModel=None)
- deficit_models.gaussian.NiayifarGaussianDeficit(ct2a=ct2a_madsen, a=[0.38, 0.004], ceps=0.2, ctlim=0.899, use_effective_ws=False, use_effective_ti=True, rotorAvgModel=None, groundModel=None)
- TurboGaussianDeficit
- deficit_models.gaussian.TurboGaussianDeficit(ct2a=ct2a_madsen, A=0.04, cTI=[1.5, 0.8], ceps=0.25, ctlim=0.999, use_effective_ws=False, use_effective_ti=False, rotorAvgModel=None, groundModel=Mirror())
- ZongGaussianDeficit
- deficit_models.gaussian.ZongGaussianDeficit(ct2a=ct2a_madsen, a=[0.38, 0.004], ctlim=0.899, deltawD=0.7071067811865475, eps_coeff=0.35355339059327373, lam=7.5, B=3, use_effective_ws=False, use_effective_ti=True, rotorAvgModel=None, groundModel=None)
- GCLDeficit
- deficit_models.gcl.GCLDeficit(use_effective_ws=False, use_effective_ti=False, rotorAvgModel=None, groundModel=None)
- NoWakeDeficit
- deficit_models.no_wake.NoWakeDeficit(_)
- NOJLocalDeficit
- deficit_models.noj.NOJLocalDeficit(ct2a=ct2a_madsen, a=[0.38, 0.004], use_effective_ws=True, use_effective_ti=True, rotorAvgModel=AreaOverlapAvgModel(), groundModel=None)
- TurboNOJDeficit
- deficit_models.noj.TurboNOJDeficit(ct2a=ct2a_madsen, A=0.6, cTI=[1.5, 0.8], use_effective_ws=False, use_effective_ti=False, rotorAvgModel=AreaOverlapAvgModel(), groundModel=None)
BlockageDeficitModel
- FugaDeficit
- deficit_models.fuga.FugaDeficit(LUT_path='C:/mmpe/programming/python/Topfarm/PyWake/py_wake/tests/test_files/fuga/2MW/Z0=0.03000000Zi=00401Zeta0=0.00E+00.nc', smooth2zero_x=None, smooth2zero_y=None, remove_wriggles=False, method='linear', rotorAvgModel=None, groundModel=None)
- FugaMultiLUTDeficit
- deficit_models.fuga.FugaMultiLUTDeficit(LUT_path_lst='C:/mmpe/programming/python/Topfarm/PyWake/py_wake/tests/test_files/fuga/2MW/multilut/LUTs_Zeta0=0.00e+00_16_32_*_zi400_z0=0.00001000_z9.8-207.9_UL_nx128_ny128_dx20.0_dy5.0.nc', z_lst=None, TI_ref_height=None, bounds='limit', rotorAvgModel=None, groundModel=None, use_effective_ti=False)
- FugaYawDeficit
- deficit_models.fuga.FugaYawDeficit(LUT_path='C:/mmpe/programming/python/Topfarm/PyWake/py_wake/tests/test_files/fuga/2MW/Z0=0.00408599Zi=00400Zeta0=0.00E+00.nc', smooth2zero_x=None, smooth2zero_y=None, remove_wriggles=False, method='linear', rotorAvgModel=None, groundModel=None)
- HybridInduction
- deficit_models.hybridinduction.HybridInduction(switch_radius=6.0, near_rotor=None, far_field=None, superpositionModel=None, rotorAvgModel=None, groundModel=None, upstream_only=False, use_effective_ws=False)
- SelfSimilarityDeficit2020
- deficit_models.selfsimilarity.SelfSimilarityDeficit2020(ct2a=ct2a_madsen, ss_alpha=0.8888888888888888, ss_beta=1.4142135623730951, r12p=[-0.672, 0.4897], ngp=[-1.381, 2.627, -1.524, 1.336], fgp=[-0.06489, 0.4911, 1.116, -0.1577], limiter=1e-10, exclude_wake=True, superpositionModel=None, rotorAvgModel=None, groundModel=None, upstream_only=False, use_effective_ws=False)
- VortexDipole
- deficit_models.vortexdipole.VortexDipole(ct2a=ct2a_madsen, sct=1.0, limiter=1e-10, exclude_wake=True, superpositionModel=None, rotorAvgModel=None, groundModel=None, upstream_only=False, use_effective_ws=False)
- RankineHalfBody
- deficit_models.rankinehalfbody.RankineHalfBody(ct2a=ct2a_madsen, limiter=1e-10, exclude_wake=True, superpositionModel=None, rotorAvgModel=None, groundModel=None, upstream_only=False, use_effective_ws=False)
- Rathmann
- deficit_models.rathmann.Rathmann(ct2a=ct2a_madsen, sct=1.0, limiter=1e-10, exclude_wake=True, superpositionModel=None, rotorAvgModel=None, groundModel=None, upstream_only=False, use_effective_ws=False)
- RathmannScaled
- deficit_models.rathmann.RathmannScaled(ct2a=ct2a_madsen, sct=1.0, limiter=1e-10, exclude_wake=True, superpositionModel=None, rotorAvgModel=None, groundModel=None, upstream_only=False, use_effective_ws=False)
- SelfSimilarityDeficit
- deficit_models.selfsimilarity.SelfSimilarityDeficit(ct2a=ct2a_madsen, ss_gamma=1.1, ss_lambda=0.587, ss_eta=1.32, ss_alpha=0.8888888888888888, ss_beta=1.4142135623730951, limiter=1e-10, exclude_wake=True, superpositionModel=None, rotorAvgModel=None, groundModel=None, upstream_only=False, use_effective_ws=False)
- VortexCylinder
- deficit_models.vortexcylinder.VortexCylinder(ct2a=ct2a_madsen, limiter=0.001, exclude_wake=True, superpositionModel=None, rotorAvgModel=None, groundModel=None, upstream_only=False, use_effective_ws=False)
SuperpositionModel
- LinearSum
- superposition_models.LinearSum()
- CumulativeWakeSum
- superposition_models.CumulativeWakeSum(alpha=2.0)
- MaxSum
- superposition_models.MaxSum()
- SquaredSum
- superposition_models.SquaredSum()
- WeightedSum
- superposition_models.WeightedSum(delta=0.01, max_err=0.001, max_iter=5)
RotorAvgModel
- AreaOverlapAvgModel
- rotor_avg_models.area_overlap_model.AreaOverlapAvgModel()
- GaussianOverlapAvgModel
- rotor_avg_models.gaussian_overlap_model.GaussianOverlapAvgModel(filename='C:\mmpe\programming\python\Topfarm\PyWake\py_wake\rotor_avg_models/gaussian_overlap_.02_.02_128_512.nc')
- CGIRotorAvg
- rotor_avg_models.rotor_avg_model.CGIRotorAvg(n=7)
- EqGridRotorAvg
- rotor_avg_models.rotor_avg_model.EqGridRotorAvg(n=4)
- GQGridRotorAvg
- rotor_avg_models.rotor_avg_model.GQGridRotorAvg(n_x=4, n_y=4)
- GridRotorAvg
- rotor_avg_models.rotor_avg_model.GridRotorAvg(nodes_x=[-0.3333333333333333, 0.3333333333333333, -0.3333333333333333, 0.3333333333333333], nodes_y=[-0.3333333333333333, -0.3333333333333333, 0.3333333333333333, 0.3333333333333333], nodes_weight=None)
- PolarGridRotorAvg
- rotor_avg_models.rotor_avg_model.PolarGridRotorAvg(r=[0.3333333333333333, 0.6666666666666666], theta=[-3.141592653589793, -2.0943951023931957, -1.0471975511965979, 0.0, 1.0471975511965974, 2.094395102393195], r_weight=[0.25, 0.75], theta_weight=0.16666666666666666) theta_weight=0.16666666666666666)
- PolarRotorAvg
- rotor_avg_models.rotor_avg_model.PolarRotorAvg(nodes_r=0.6666666666666666, nodes_theta=[-3.141592653589793, -2.0943951023931957, -1.0471975511965979, 0.0, 1.0471975511965974, 2.094395102393195], nodes_weight=None)
- RotorCenter
- rotor_avg_models.rotor_avg_model.RotorCenter()
- WSPowerRotorAvg
- rotor_avg_models.rotor_avg_model.WSPowerRotorAvg(rotorAvgModel=CGIRotorAvg(n=7), alpha=3)
TurbulenceModel
- CrespoHernandez
- turbulence_models.crespo.CrespoHernandez(ct2a=ct2a_madsen, c=[0.73, 0.8325, -0.0325, -0.32], addedTurbulenceSuperpositionModel=SqrMaxSum(), rotorAvgModel=AreaOverlapAvgModel(), groundModel=None)
- GCLTurbulence
- turbulence_models.gcl_turb.GCLTurbulence(addedTurbulenceSuperpositionModel=SqrMaxSum(), rotorAvgModel=AreaOverlapAvgModel(), groundModel=None)
- STF2005TurbulenceModel
- turbulence_models.stf.STF2005TurbulenceModel(c=[1.5, 0.8], addedTurbulenceSuperpositionModel=LinearSum(), weight_function=FrandsenWeight(), rotorAvgModel=None, groundModel=None)
- STF2017TurbulenceModel
- turbulence_models.stf.STF2017TurbulenceModel(c=[1.5, 0.8], addedTurbulenceSuperpositionModel=LinearSum(), weight_function=FrandsenWeight(), rotorAvgModel=None, groundModel=None)
DeflectionModel
- FugaDeflection
- deflection_models.fuga_deflection.FugaDeflection(LUT_path='C:/mmpe/programming/python/Topfarm/PyWake/py_wake/tests/test_files/fuga/2MW/Z0=0.00408599Zi=00400Zeta0=0.00E+00.nc', on_mismatch='raise')
- GCLHillDeflection
- deflection_models.gcl_hill_vortex.GCLHillDeflection(N=20, wake_deficitModel=None)
- JimenezWakeDeflection
- deflection_models.jimenez.JimenezWakeDeflection(N=20, beta=0.1)
Wake model hierachi
-
EngineeringDeficitModel
deficit = ws * center_wake_factor * shape_factor
-
LinearExpansionModel
wake_radius = expansion_offset + x * expansion_factor
-
GaussianDeficit
sigma = wake_radiusshape_factor = np.exp(-1 / (2 * sigma_sqr_ijlk) * cw_ijlk**2)
-
Bastankhah
center_wake_factor = 2. * self.ct2a(ct * D**2 / (8. * sigma**2))expansion_factor = k
-
TophatDeficit
shape_factor = cw < wake_width
-
NOJ (or TophatDeficit)
center_wake_factor = 2. * self.ct2a(ct) * (r0 /wake_width)**2
-
NOJ 1984
center_wake_factor = 2/3 * (r0 /wake_width)**2
-
TurboNOJDeficit
-
wake_radius = nonlinearexpanding wake (expansion depends on turbulence in wake based on Steen Frandsen formulas)
-
-
Niayifar
expansion_factor = k[1] * TI + k[0]
-
Gabo
expansion_offset = c_eps * k + c_eps
-
shapiro / zong
ct = modified_ct
-
Zong
wake_radius = expansion_offset + f(x) * expansion_factor
-
Nygaard_2022
- gaussian profile
-
wake_radius = nonlinearexpanding wake (expansion depends on turbulence in wake based on Steen Frandsen formulas)
Edited by Mads M. Pedersen