Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions examples/MITWindfarm_quickstart.ipynb
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add "JensenWakeModel, TurbOParkWakeModel" to the "from mitwindfarm import..." line

Original file line number Diff line number Diff line change
Expand Up @@ -223,24 +223,31 @@
"source": [
"### Wake Model\n",
"\n",
"Within the package, there is a `WakeModel` abstract class with two concrete types: the `GaussianWakeModel` and the `VariableKwGaussianWakeModel`. \n",
"Within the package, there is a `WakeModel` abstract class with four concrete types: `GaussianWakeModel`, `VariableKwGaussianWakeModel`, `JensenWakeModel`, and `TurbOParkWakeModel`. \n",
"\n",
"The `GaussianWakeModel` has the following optional arguments (and default values): `sigma` (0.25), `kw` (0.07), `WATI_sigma_multiplier` (1.0), and `xmax` (100.0).\n",
"\n",
"On the other hand, the `VariableKwGaussianWakeModel` adjusts the wake spreading rate based on the\n",
"The `VariableKwGaussianWakeModel` adjusts the wake spreading rate based on the\n",
"`Ctprime` and the `TI` experienced by the wake-generating turbine based on the linear relationship: $kw = a * TI + b * C_T' + c$. Therefore, `VariableKwGaussianWakeModel` has the following optional arguments (and default values): `a`, `b`, `c`, `sigma` ($\\frac{1}{\\sqrt{8}}$), `WATI_sigma_multiplier`(1.0), and `xmax` (100.0).\n",
"\n",
"If neither of these is explicitly provided to the `WindFarm` model, the `GaussianWakeModel` is used."
"The `JensenWakeModel` has one optional argument `kw` (0.07).\n",
"\n",
"The `TurbOParkWakeModel` has two versions: the newer Gaussian TurbOPark model proposed in Pedersen 2022 (`TurbOParkWake`) and the older top-hat TurbOPark model proposed in Nygaard 2020 (`TopHatTurbOParkWake`). The Gaussian TurbOPark model is used by default. Both models have the following optional arguments and default values: `A` (0.04), `TIamb` (0.06), `c_1` (1.5), `c_2` (0.8), and `xmax` (100.0).\n",
"\n",
"If no wake model is explicitly provided to the `WindFarm` model, the `GaussianWakeModel` is used."
]
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"gaussian_wake_model = GaussianWakeModel()\n",
"variable_gaussian_wake_model = VariableKwGaussianWakeModel(a = 1, b = 1, c = 1)"
"variable_gaussian_wake_model = VariableKwGaussianWakeModel(a = 1, b = 1, c = 1)\n",
"jensen_wake_model = JensenWakeModel()\n",
"gaussian_turbopark_wake_model = TurbOParkWakeModel()\n",
"tophat_turbopark_wake_model = TurbOParkWakeModel(gaussian_profile = False, A = 0.6)"
]
},
{
Expand Down
4 changes: 4 additions & 0 deletions mitwindfarm/Superposition.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,7 @@ def __call__(self, base_windfield: Windfield, wakes: list[Wake]) -> Windfield:
class Dominant(Superposition):
def __call__(self, base_windfield: Windfield, wakes: list[Wake]) -> Windfield:
return Superimposed(base_windfield, wakes, method="dominant")

class NQuadratic(Superposition):
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could use "NiayifarQuadratic" just to make the name more clear? Up to you, just an idea!

def __call__(self, base_windfield: Windfield, wakes: list[Wake]) -> Windfield:
return Superimposed(base_windfield, wakes, method="nquadratic")
Loading