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”

Job offer: Join Our Open Source Energy Community!

Hey there!

(Update April, 29th: We found somebody for the described position. As nobody of us except our new team member is compensated by the oemof association, we of course still welcome everybody who is willing to contribute. Best ways to do so are probably joining discussions at openmod:oemof and helping to develop and maintain oemof at GitHub.)

Are you a student or do you have a passion for energy systems and programming? If you love diving into Python projects and exploring innovative ways to optimize energy systems, we’d love to have you on board.

What You’ll Do:

  • Discover & Share: Search the web for fresh publications and real-world applications of oemof, our collection of open source tools.
  • Connect & Learn: Chat with users—from scientists to business professionals—to learn how they’re using energy system optimization.
  • Create & Engage: Write fun, engaging blog posts about your discoveries and share them on social media.

What We’re Looking For:

  • A communicative, curious individual who loves talking to people.
  • A motivated explorer who’s excited to learn about the latest in science and tech.
  • Ideally, you already know a bit about oemof—but if not, that’s cool too!
  • Fluent English skills to engage with our community.

What’s in It for You?

  • A chance to work some hours a month.
  • An opportunity to be part of a vibrant, collaborative open source community.
  • A space to develop your communication and technical skills while making a real impact in the world of energy system optimization.

Does this sound like something you want to do? Send us an email at info@oemof.org. Tell us who you are—what your main job is or, if you’re studying, what you’re studying—and let us know if you’ve ever had contact with oemof. We’re totally open to oemof beginners!

We can’t wait to hear from you!

Thoughts on Software Maintenance

Many projects focus on adding features, often neglecting measures to maintain software quality. One reason for this is financing, may it because new features can sell new licenses or because project funding is connected with them. On the long run, of course, easy-to-maintain code also facilitates adding new features.

Currently, we are rewriting stuff “under the hood” of solph to prepare for future additions, including time-series aggregation. Also, experimental features are removed if they do not mature. (This includes the approach for cellular energy systems, we recommend to use named tuples as labels instead.) Every now and then we try to change our code to eliminate deprecation warnings in time. The release of NumPy 2.0 shows that maintaining compatibility is not always easy. Although it is actually an evolutionary milestone, Pyomo first seemed to be hit between the eyes. In particular, it does not check compatibility of installed dependencies. Never version state to be compatible to numpy<2.0 only, but at least sometimes incompatible versions are installed by pip.

Thus, software relying on Pyomo – such as solph – currently looks broken when latest versions of NumPy are installed. The only option is to downgrade NumPy and wait for Pyomo to update. Not only because this is not the first time Pyomo effectively breaks solph without a warning, we are considering other back-ends. Alternatives also promise faster processing. But this is a big maintenance job, and hard to fund using the current funding scheme of research projects.