Skip to content
Merged
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
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ Classify the change according to the following categories:
##### Removed
### Patches

## v3.17.3
### Minor Updates
##### Added
- Input for `Wind`: `acres_per_kw` which has a default of 0.03; Wind is only constrained by this for sizes greater than 1500 kW.

## v3.17.2
### Minor Updates
##### Added
Expand Down
19 changes: 19 additions & 0 deletions reoptjl/migrations/0112_windinputs_acres_per_kw.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 4.2.26 on 2025-12-08 23:22

import django.core.validators
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('reoptjl', '0111_alter_electricloadinputs_monthly_totals_kwh'),
]

operations = [
migrations.AddField(
model_name='windinputs',
name='acres_per_kw',
field=models.FloatField(blank=True, default=0.03, help_text='Land area required per kW of wind capacity in acres/kW; only constrained by this for systems greater than 1500 kW', validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100.0)]),
),
]
9 changes: 9 additions & 0 deletions reoptjl/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3615,6 +3615,15 @@ class WIND_SIZE_CLASS_CHOICES(models.TextChoices):
help_text="Only applicable when off_grid_flag=True; defaults to 0.5 (50 pct) for off-grid scenarios and fixed at 0 otherwise."
"Required operating reserves applied to each timestep as a fraction of wind generation serving load in that timestep."
)
acres_per_kw = models.FloatField(
default=0.03,
validators=[
MinValueValidator(0),
MaxValueValidator(100.0)
],
blank=True,
help_text="Land area required per kW of wind capacity in acres/kW; only constrained by this for systems greater than 1500 kW"
)

def clean(self):
if self.size_class != "" and self.installed_cost_per_kw is None:
Expand Down
3 changes: 2 additions & 1 deletion reoptjl/test/posts/all_inputs_test.json
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,8 @@
"can_wholesale": true,
"can_export_beyond_nem_limit": true,
"can_curtail": true,
"operating_reserve_required_fraction": 0.0
"operating_reserve_required_fraction": 0.0,
"acres_per_kw": 0.03
},
"ExistingBoiler": {
"production_type": "hot_water",
Expand Down