Next oemof user Meeting: Berlin February 2027

Are you an oemof user or simply curious about energy system modelling? Then join us in Berlin in February 2027! What awaits you:

  • Connect with other oemof users and developers
  • Join workshops tailored to every level, from your first modelling steps to advanced techniques and problem solving
  • Present your use case and learn from the projects of others
  • Get the big picture of the oemof universe and its growing ecosystem of tools
  • Ask your questions directly to experienced developers
  • Whether you are building your first energy system model or maintaining a large one – you are welcome.

When? Thursday, 25th of February 2027
Where? Berlin (location TBA)
Registration: oemof user meeting registration form
Latest updates (continuously updated): Meeting page on GitHub

We look forward to seeing you in Berlin!

oemof.solph at the 4th Conference of Northern German Heat Research

Last week, Uwe presented oemof.solph at the 4th Conference of Northern German Heat Research in Flensburg to introduce the tool to a broader scientific audience and increase its visibility within the scientific community.

Together with Patrik, Jonas, and Malte, they created a poster that clearly summarizes the most important information about oemof.solph and provides an overview of the tool’s features and potential applications.

New HiGHS: oemof.solph v0.6.5

We have just released oemof.solph v0.6.5 (GitHub, Zenodo, PyPI, RTD), which brings not only a number of bug fixes but also support for the solver “HiGHS“. To use it, make sure you have it installed and call model.solve(solver="highs") after you have created the energy system model. The solver can be installed automatically as a dependency without any manual action. (Currently, you need to pip install highspy). Based on feedback we receive in the next time, it might become our new default. So, what is your experience with HiGHS?

Bug fixes and other changes are mostly relevant for users of Flows with a binary status variable (using NonConvex) and TSAM users, but not only:

Continue reading “New HiGHS: oemof.solph v0.6.5”

oemof.network v0.5.3

The release 0.5.3 of oemof.network (GitHub, Zenodo, PyPI, RTD) brings some fixes (mostly concerning subnodes) and two quality of life improvements:

EnergySystem.from_file(filename)

Instead of creating an EnergySystem that is then overwritten based on the file contents, you can now get load a new energy system from a file.

# Deprecated way to load energy system dumps
es_old = EnergySystem()
es_old.restore(dpath="./", filename="es_dump.oemof")

# 0.5.3+ way to load energy system dumps
es_new = EnergySystem.from_file("./es_dump.oemof")

As a plus, you won’t get a warning anymore that your EnergySystem is overwritten. So you have cleaner code and a cleaner output.

EnergySystem.to_networkx()

Continue reading “oemof.network v0.5.3”

Registration for 2026.09 dev meeting

As already mentioned at the last user meeting in Nordhausen, our next workshop will be the “2026.09 oemof dev meeting” in Bingen. It will be hosted by the University of Applied Sciences Bingen from the 23rd to 25th of September 2026. If you plan to join, please register using the registration form. (Note: You might not receive an instant reply. Instead, we will answer registrations in batches.)

2026.04 TESPy community meeting

Last week the second TESPy Community Meeting, held in Braunschweig, was a resounding success, offering developers and users an excellent opportunity to exchange ideas in person, discuss new concepts, and collaborate on the further development of TESPy.

The highlight of the meeting was the hackathons, during which participants worked intensively on various topics:

  • Introductory tutorials for TESPy
  • Best practices for initial values in automated simulations
  • Creation of a ModelTemplate class, which can serve as a powerful starting point for user models
  • First steps in implementing a new ejector component

A new TESPy release has already been published based on the results of the hackathons. This release already includes the new ModelTemplate class and also made the OptimizationProblem class compatible with it. Further details about the release can be found in the official release notes:
https://tespy.readthedocs.io/en/main/whats_new.html#whats-new-label

A big thank you goes to Hannes Schneider from Technical University of Braunschweig for the excellent organization and for hosting the meeting. We would also like to thank all participants for the open atmosphere, their enthusiastic participation in the hackathon, and the many engaging discussions.

solph v0.6.4: Saturating Storage

Today, we released oemof.solph v0.6.4 (GitHub, Zenodo, PyPI, RTD). This new version updates the documentation to prefer solph.Results over solph.processing.results(model). Also, the former is automatically returned by model.solve(). This way it is now impossible to accidentally look for results of a model that has not been solved. You can have a look a commit that impressively shows the improvement: 898b457f@GitHub.

Two panels showing battery charging graphs. Left: Constant power inflow and a linear increase of the SOC. Right: Charging power decreases with the SOC.
The new parameters SOC-dependent charging power make it easy to model batteries more realistically.

But there is also a notable new feature: There is now an API to easily set up SOC-dependent charging power. Before, we had an example showing how to formulate custom Pyomo constraints to do the same thing. Please have a look at the SOC dependent charging example for reference. (As the feature just slipped in, the example is not part of the documentation, yet. Also, we highly appreciate feedback for improved generic argument names.)

Working with solph.Results

With the update of solph v0.6.2, we marked solph.Results as stable. As it is planned to completely replace solph.processing.results(model), I am currently replacing all references to the old module from the documentation, so that new users will learn the new feature instead of the one that is about to be replaced.

With the old nested dict structure, we had the very convenient helper solph.views.node(results, "node_label"), which extracted all information related to a particular Node. For example, you could use it to extract all flows from and to a node.

Continue reading “Working with solph.Results”

Join the TESPy user meeting in April

From April 13 to 15 the 2nd TESPy user meeting will be held at the Technical University of Brunswick. You are invited to join us to network and exchange with the community, bring your questions to get help in hands-on tutorials and contribute to the development with your feedback, ideas and discussions. Please register here: https://cloud.oemof.org/apps/forms/s/KGPbPMQQJdeCRkmsEsi86Ezq

solph v0.6.3: The 2026.02 user meeting retrospective release

Last week, some of us were in Nordhausen (Thuringia) visiting both, the oemof user meeting and the parallel RET.con. As the latter is addressing a broader audience, we tried to also shape the user meeting to welcome novices and interested students.

As an artefact of this meeting, we just released solph v0.6.3 (GitHub, Zenodo, PyPI), that just implements some quality of life improvements. (Tutorial sessions can be a great opportunity to learn about unnecessary barriers that nobody ever reports.)

  • The parameter nominal_capacity now has an input validation. (We have seen people putting time series, which is currently not supported.)
  • Argument infer_last_interval of the EnergySystem now tries to infer the interval also if DatetimeIndex.freq is not explicitly set. This simplifies using time indexes from input data.
  • We added a tutorial focusing on time indexes and aggregation. (Note that some of the described features are experimental and subject to planned changes.)
  • You can now access results using Results.get(key, default). This way, the Results object is more similar to a dict. We believe it to be easier to use this way.

Another result of the meeting is a new task interest group that will work on saving/loading energy systems and results. The aim is to simplify exchange of data without passing around Python scripts to be able to reproduce insights and findings.

PS: It was mentioned in the local news (nnz-online.de, in German), that we promote transparency and openness in energy research. nice to hear that these topics are recognised to be relevant for the general public.