In order to make flixOpt more easy to use and extendable, the internal Structure of model creation and data organization is Changed significantly.
Old Approach:
Create all Elements for the FLowSystem.
Modeling gets initiated through the SystemModel, which orchestrates when to model which Element. Each Element (Flow, Effect, Component, ...) has multiple Functions to initiate its Variables /Eqs and Sub-Elements (Features).
Problems:
The modeling of a Single Element and its Features was hard to follow.
The User Interface and the modeling are not well separated
New Approach:
Create all Elements for the FLowSystem.
Modeling gets initiated through the SystemModel. First, the EffectCOllection, which holds all Effects and penalty gets Modeled.
Second, all Components (and their nested sub_models) get modeled.
Each Element (flow, Component, Effect) has an individual corresponding Model (FlowModel, ComponentModel, ...). Each Model has one central Method .do_modeling(), which creates all Variables, Equations (and Share to Effects).
Improvements:
The Orchestration in SystemModel is limited to: First: All Effects, Second all Components
The rest is Handled by the ComponentModel /EffectModel
Accessing Variables, Equations and Results is easily done through recursive functions/properties
Results are always well formatted, but can can be formatted individually for each ElementModel.
Other Changes
Several attribute Names were changed and unused functions deleted
Currently, Shares are saved as VariableTS if applicable. Before, it was always a single Variable
Temporarily Removed Functionality
Before Values of Variables (flow_rate, on, ...)
Medium
Known issues
AggregatedCalculation and Aggregation is not working yet
New Structure
In order to make flixOpt more easy to use and extendable, the internal Structure of model creation and data organization is Changed significantly.
Old Approach:
New Approach:
Other Changes
Temporarily Removed Functionality
Known issues
Contributors
Felix Bumann
Closes #39 Closes #38 Closes #37 Closes #36 Closes #30