Skip to content

Commit a9088ca

Browse files
committed
Merge branch 'develop' into zero-thermal
2 parents eb8a8a9 + 46dfe52 commit a9088ca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+3883
-665
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,4 @@ julia_src/licenseserver
122122
julia_src/Dockerfile.xpress
123123
docker-compose.xpress.yml
124124
julia_src/solver_setup.sh
125+
compare_run_*.json

.gitmodules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[submodule "EVI-EnLitePy"]
2+
path = EVI-EnLitePy
3+
url = https://github.nrel.gov/AVCI/EVI-EnLitePy.git
4+
branch = server_version

.helm/templates/julia-deployment.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ spec:
5353
resources:
5454
requests:
5555
cpu: {{ .Values.juliaCpuRequest | quote }}
56-
memory: {{ .Values.juliaMemoryRequest | quote }}
56+
memory: "2000Mi"
5757
limits:
5858
cpu: {{ .Values.juliaCpuLimit | quote }}
59-
memory: {{ .Values.juliaMemoryLimit | quote }}
59+
memory: "2000Mi"

.helm/values.production.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
appEnv: production
22
djangoSettingsModule: reopt_api.production_settings
33
djangoReplicas: 10
4+
djangoCpuRequest: "1000m"
5+
djangoCpuLimit: "2000m"
46
djangoMemoryRequest: "2000Mi"
57
djangoMemoryLimit: "2000Mi"
68
celeryReplicas: 10
7-
celeryMemoryRequest: "900Mi"
8-
celeryMemoryLimit: "900Mi"
99
juliaReplicas: 5
1010
juliaCpuRequest: "2000m"
1111
juliaCpuLimit: "4000m"

.helm/values.staging.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
appEnv: staging
2-
djangoSettingsModule: reopt_api.staging_settings
3-
juliaMemoryRequest: "8000Mi"
4-
juliaMemoryLimit: "8000Mi"
2+
djangoSettingsModule: reopt_api.staging_settings

.helm/values.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ redisDataVolumeStorageClassName:
88
juliaHost: "{{ .Chart.Name }}-julia-service"
99
redisHost: "{{ .Chart.Name }}-redis-service"
1010
redisPort: 6379
11-
djangoReplicas: 2
12-
djangoCpuRequest: "2000m"
13-
djangoCpuLimit: "4000m"
14-
djangoMemoryRequest: "1600Mi"
15-
djangoMemoryLimit: "1600Mi"
16-
celeryReplicas: 2
11+
djangoReplicas: 1
12+
djangoCpuRequest: "500m"
13+
djangoCpuLimit: "2000m"
14+
djangoMemoryRequest: "700Mi"
15+
djangoMemoryLimit: "700Mi"
16+
celeryReplicas: 1
1717
celeryCpuRequest: "100m"
18-
celeryCpuLimit: "2000m"
19-
celeryMemoryRequest: "700Mi"
20-
celeryMemoryLimit: "700Mi"
18+
celeryCpuLimit: "1000m"
19+
celeryMemoryRequest: "1600Mi"
20+
celeryMemoryLimit: "1600Mi"
2121
juliaReplicas: 1
22-
juliaCpuRequest: "1000m"
22+
juliaCpuRequest: "500m"
2323
juliaCpuLimit: "2000m"
24-
juliaMemoryRequest: "8000Mi"
25-
juliaMemoryLimit: "8000Mi"
24+
juliaMemoryRequest: "6000Mi"
25+
juliaMemoryLimit: "6000Mi"

CHANGELOG.md

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,77 @@ Classify the change according to the following categories:
2626
##### Removed
2727
### Patches
2828

29+
## v3.17.3
30+
### Minor Updates
31+
##### Added
32+
- 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.
33+
34+
## v3.17.2
35+
### Minor Updates
36+
##### Added
37+
- Added `/job/get_timeseries_table` endpoint which takes a list of run_uuid's and creates a timeseries results table spreadsheet to download in response
38+
- New custom table option `custom_timeseries_energy_demand` for endpoint `/job/get_timeseries_table`.
39+
##### Changed
40+
- Increased `monthly_totals_kwh` maximum value to 1.0e9.
41+
42+
## v3.17.1
43+
### Minor Updates
44+
##### Changed
45+
- For the `/get_load_metrics` endpoint, update response field names to be consistent with `/simulated_load` for `load_type=electric`: `annual_kwh`, `max_kw` (annual peak load), `monthly_totals_kwh`, and `monthly_peaks_kw`. In a future update, this endpoint will take `load_type` as an input and return the load metrics with consistent units as `/simulated_load` for heating and cooling `load_type`s, such as `monthly_mmbtu` for the heating load types.
46+
47+
## v3.17.0
48+
### Minor Updates
49+
##### Added
50+
- `ElectricLoad` input `monthly_peaks_kw`. Can be used to scale loads_kw or doe_reference loads to monthly peaks while maintaining monthly energy.
51+
- `ElectricTariff` outputs: `demand_rate_average_series`, `energy_cost_series_before_tax`, `energy_cost_series_before_tax_bau`, `energy_rate_average_series`, `energy_rate_series`, `energy_rate_tier_limits`, `facility_demand_monthly_rate_series`, `facility_demand_monthly_rate_tier_limits`, `monthly_demand_cost_series_before_tax`, `monthly_demand_cost_series_before_tax_bau`, `monthly_energy_cost_series_before_tax`, `monthly_energy_cost_series_before_tax_bau`, `monthly_facility_demand_cost_series_before_tax`, `monthly_facility_demand_cost_series_before_tax_bau`, `monthly_fixed_cost_series_before_tax`, `monthly_fixed_cost_series_before_tax_bau`, `monthly_tou_demand_cost_series_before_tax`, `monthly_tou_demand_cost_series_before_tax_bau`, `tou_demand_metrics`, `tou_demand_rate_series`, `tou_demand_rate_tier_limits`.
52+
- New endpoint `/get_load_metrics` for sending a timeseries `load_profile` and getting monthly and annual energy and peak loads.
53+
- New custom table option `custom_table_rates` for endpoint `/job/generate_results_table`.
54+
##### Fixed
55+
- Avoid `CST` bypassing non-servable heating loads by going through the `HighTempThermalStorage`.
56+
57+
58+
## v3.16.2
59+
### Patches
60+
- Added `CST` and `HighTempThermalStorage` to all/superset inputs test.
61+
- Update REopt.jl to v0.55.1 for fix to NSRDB API call for CST
62+
- Add CapEx to initial capex output (should have been included before)
63+
64+
## v3.16.1
65+
### Patches
66+
##### Changed
67+
- `load_builder`: EnSite grid efficiency `grid.eff` was changed from 99% --> 100%
68+
69+
## v3.16.0
70+
### Minor Updates
71+
#### Added
72+
- Added **Site** inputs **sector**, **federal_sector_state**, and **federal_procurement_type**
73+
- Alternative defaults used when **sector** is "federal"
74+
- **GHPOutputs** field **hybrid_solution_type**
75+
76+
## v3.15.1
77+
### Minor Updates
78+
##### Added
79+
- `load_builder`: Optional debug echo for `/ensite` via `includeDebugPayload`; includes `debug.payloadEcho` showing resolved vehicle charge powers (W) and derived EMS capacity to aid troubleshooting.
80+
##### Changed
81+
- `load_builder`: Streamlined EnSite input schema using clear, single-purpose fields (`pChgMax_kW` for vehicles, `pChgCap_kW` for EMS override). All power normalized to Watts internally at ingress.
82+
- `load_builder`: Deterministic EMS/site capacity derivation when no override supplied: sum of (charger count * charger power_kW) across all configured charger categories; remains zero if no chargers defined.
83+
- `load_builder`: Cleaner validation and docstrings; removed extraneous guardrails so UI governs any numeric bounds. `schemaVersion` set to 3 for the stabilized semantics (debug flag renamed).
84+
- `load_builder`: Enrichment still provides annualized statistics; clarified comments around unit conversions (kW <-> W, kWh <-> Wh).
85+
86+
## v3.15.0
87+
### Minor Updates
88+
##### Added
89+
- `/ensite` view in the load_builder app directory
90+
- `load_builder` EnSite EV charging simulation endpoint (EnLitePy) accepting either a UI-friendly schema (`chargers`, `vehicles`, `arrival`, `ems`, `maxChargeDurationHr`) or a direct EnLitePy payload; auto-derives EMS capacity from charger definitions if not overridden.
91+
##### Changed
92+
- Update python to v3.12, from v3.8, along with all dependencies; in particular, Django updated to 4.2.8 LTS.
93+
- `load_builder` EnSite response enrichment (version 2): adds annualized outputs (`power_in_grid_annual` in kW, `equipment_statistics_annual`, `ev_statistics_annual`) and grid capacity utilization metrics (Min/Average/Max capacity utilization [kW]); normalizes statistics and scales 1-week simulation to annual values.
94+
2995
## v3.14.0
3096
### Minor Updates
3197
#### Added
3298
- `CST` (concentrating solar thermal) Intputs and Outputs models; see /help endpoint for model fields
3399
- `HighTempThermalStorage` Inputs and Outputs models; see /help endpoint for model fields
34-
35100
#### Changed
36101
Update the following inputs from the previous --> new values:
37102
- `Financial.offtaker_discount_rate_fraction`: 0.0638 --> 0.0624

Dockerfile

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM reopt/py38
1+
FROM reopt/py312
22

33
# Install NREL root certs for machines running on NREL's network.
44
ARG NREL_ROOT_CERT_URL_ROOT=""
@@ -9,12 +9,18 @@ ENV SRC_DIR=/opt/reopt/reo/src
99
ENV LD_LIBRARY_PATH="/opt/reopt/reo/src:${LD_LIBRARY_PATH}"
1010

1111
# Copy all code
12-
ENV PYTHONDONTWRITEBYTECODE 1
12+
ENV PYTHONDONTWRITEBYTECODE=1
1313
COPY . /opt/reopt
1414

1515
# Install python packages
1616
WORKDIR /opt/reopt
1717
RUN ["pip", "install", "-r", "requirements.txt"]
1818

19+
# Conditionally install EVI-EnLitePy and pydantic (dependency) if EVI-EnLitePy has been cloned via git submodule
20+
RUN if [ -d "/opt/reopt/EVI-EnLitePy" ] && [ "$(ls -A /opt/reopt/EVI-EnLitePy)" ]; then \
21+
cd /opt/reopt/EVI-EnLitePy && pip install -e .; \
22+
pip install pydantic; \
23+
fi
24+
1925
EXPOSE 8000
2026
ENTRYPOINT ["/bin/bash", "-c"]

EVI-EnLitePy

Submodule EVI-EnLitePy added at 9b55820

ghpghx/resources.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ def obj_create(self, bundle, **kwargs):
161161
ghpghxOutputsM = GHPGHXOutputs(ghp_uuid=ghp_uuid, **results)
162162
ghpghxOutputsM.save()
163163
except Exception as e:
164-
print(e)
165164
exc_type, exc_value, exc_traceback = sys.exc_info()
166165
message = "Error saving the results to the database"
167166
data["status"] = message

0 commit comments

Comments
 (0)