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
4 changes: 2 additions & 2 deletions doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,9 @@
# built documents.
#
# The short X.Y version.
version = '0.10'
version = '0.11'
# The full version, including alpha/beta/rc tags.
release = '0.10.1'
release = '0.11.0'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
1 change: 1 addition & 0 deletions doc/whatsnew.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ These are new features and improvements of note in each release.
:local:
:backlinks: top

.. include:: whatsnew/v0_11_0.rst
.. include:: whatsnew/v0_10_1.rst
.. include:: whatsnew/v0_10_0.rst
.. include:: whatsnew/v0_9_0.rst
Expand Down
15 changes: 15 additions & 0 deletions doc/whatsnew/v0_11_0.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Release 0.11.0 (August 13, 2026)
+++++++++++++++++++++

Added features
--------------

* Added an optional simplified distribution grid representation in eTraGo, enabling more realistic dispatch flexibility while supporting standalone workflows through precomputed CSV inputs.
* Introduced region-focused clustering, allowing users to prioritize the spatial resolution of a selected region while reducing the number of clustered buses in less relevant areas.
* Updated arguments and default parameters to improve readability and consistency in light of the changes above.
* Corresponding updates to documentation.
* Improved result export for better readability and reduced storage requirements.
* Some improvements within spatial clustering and spatial aggregation.
* Improved temporal disaggregation.
* Moved definition of unit commitment parameters to dataframe.

138 changes: 76 additions & 62 deletions etrago/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,14 +227,19 @@ def __init__(

elif results_folder_name is not None:

self.get_args_setting(results_folder_name + "/args.json")
args_file = os.path.join(results_folder_name, "args.json")

if "csv_export" in self.args:
self.network = Network(
results_folder_name, name, ignore_standard_types
)
if os.path.isfile(args_file):
self.get_args_setting(args_file)
else:
self.args = None

if self.args:

if self.args:
if "csv_export" in self.args:
self.network = Network(
results_folder_name, name, ignore_standard_types
)

if self.args["spatial_disaggregation"] is not None:
self.disaggregated_network = Network(
Expand All @@ -259,83 +264,92 @@ def __init__(
not solved yet.Run 'etrago.optimize()' to build
and solve the market model.
""")

else:

logger.warning(f"""
No args.json in {results_folder_name} available.
""")
# Import last network according to args
if self.args["pf_post_lopf"]["active"]:
try:
self.network = Network(
results_folder_name + "/non_linear_powerflow"
)
except FileNotFoundError:
self.network = Network(
results_folder_name + "/pf_post_lopf"
)
elif self.args["temporal_disaggregation"]["active"]:
self.network = Network(
results_folder_name + "/temporal_disaggregation"
)
else:
self.network = Network(
results_folder_name + "/grid_optimization"
)

try:
if self.args["method"]["market_optimization"]["active"]:
try:
self.market_model = Network(
results_folder_name + "/market_optimization",
name,
ignore_standard_types,
)
except ValueError:
logger.warning("""
Could not import a market_model but the
selected method in the args indicated that it
should be there. This happens when the exported
network was not solved yet. Run
'etrago.optimize()' to build and solve the
market model.
""")

if self.args["spatial_disaggregation"] is not None:
self.disaggregated_network = Network(
results_folder_name + "/disaggregated_network",
results_folder_name + "/disaggregated_network.nc",
name,
ignore_standard_types,
)
except ValueError:
logger.info("""
No disaggregated network available.
""")

try:
self.market_model = Network(
results_folder_name + "/market",
name,
ignore_standard_types,
)
except ValueError:
logger.info("""
No separate market model available.
""")
self.get_clustering_data(results_folder_name)

else:

# Import last network according to args
if self.args["pf_post_lopf"]["active"]:
try:
self.network = Network(
results_folder_name + "/non_linear_powerflow"
)
except FileNotFoundError:
self.network = Network(
results_folder_name + "/pf_post_lopf"
)
elif self.args["temporal_disaggregation"]["active"]:
self.network = Network(
results_folder_name + "/temporal_disaggregation"
)
else:
logger.warning(f"""
No args.json in {results_folder_name} available.
""")

try:
self.network = Network(
results_folder_name + "/grid_optimization"
results_folder_name, name, ignore_standard_types
)
except ValueError:
logger.info("""
No network found.
""")

if self.args["method"]["market_optimization"]["active"]:
try:
self.market_model = Network(
results_folder_name + "/market_optimization",
name,
ignore_standard_types,
)
except ValueError:
logger.warning("""
Could not import a market_model but the selected
method in the args indicated that it should be
there. This happens when the exported network was
not solved yet.Run 'etrago.optimize()' to build
and solve the market model.
""")

if self.args["spatial_disaggregation"] is not None:
try:
self.disaggregated_network = Network(
results_folder_name + "/disaggregated_network.nc",
results_folder_name + "/disaggregated_network",
name,
ignore_standard_types,
)
except ValueError:
logger.info("""
No disaggregated network available.
""")

self.get_clustering_data(results_folder_name)
try:
self.market_model = Network(
results_folder_name + "/market",
name,
ignore_standard_types,
)
except ValueError:
logger.info("""
No separate market model available.
""")

else:
logger.error("Set args or csv_folder_name")
logger.error("Set args or results_folder_name")

# Add functions
get_args_setting = get_args_setting
Expand Down
22 changes: 11 additions & 11 deletions examples/analysis_example.ipynb

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion examples/args_minimal_example.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
"scn_name": "eGon2035",
"scn_extension": null,
"lpfile": false,
"csv_export": false,
"export_results_path": false,
"extendable": {
"extendable_components": [
"as_in_db"
Expand Down
175 changes: 79 additions & 96 deletions examples/minimal_example.ipynb

Large diffs are not rendered by default.

263 changes: 150 additions & 113 deletions examples/minimal_example_result_analysis.ipynb

Large diffs are not rendered by default.