-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Component by-passing/disabling #600
Comments
Ciao Tristan, that is an excellent idea, I really like it (others already complained about it as well in context of district heating systems), but it is not very easy to generalize. Maybe we can make a start with you bringing up the topic here. A couple of initial thoughts:
So, maybe we could make two concrete minimal examples to test this out? I would go with your examples, but in the second one I would actually like to see, what happens if the disabled Best Francesco |
Ciao Tristan, thank you for clarifying, I think we are on the same page!
This would actually be the only issue when mimicing a disabled branch by bypassing, which would essentially set mass flow to 0 and could make up any fluid composition, enthalpy and pressure value because those would not matter anyways, when merging to somewhere else again. To get the pressure equality tackled at a merge point, that could be achieved by changing the equations in the merge point depending on whether or not a mass flow is coming from a disabled branch. What is interesting about this is, that it may be realized without too many changes in the current architecture, but then it somehow feels like a "hacky" solution.
I like this solution more, the question here is how to implement it. I think it should be possible to let the solver ignore some connections (and components). The bigger challenge lies in the fact, that some components have to be altered (maybe). I'll try to make a couple of example, which may serve as tests, which a solution needs to cover (or maybe not, we can discuss this):
|
Regarding the "test" cases for defining the intended behaviour:
Perhaps it is important to also differentiate between the degree of disabling, i.e. whether a component has been disabled directly (the disabling flag is set on a given component), indirectly via an upstream or downstream component (the disabling flag is set on an upstream or downstream component), or partial, where a component has multiple fluid conduits, one or more of which can be indirectly disabled.
My take would be that not all problems are valid :P But this should soon be picked up by the network solver so at least the user would get a warning, and can then impose other parameters, such as turbine
I feel like this would be similar to the case with the heat exchanger, in that the Merge is effectively bypassed. That being said, if there were more streams entering the Merge and more than one are active, bypassing does not yield the correct result. |
With the above in mind, My original suggestion to "trim" the branches could work well for all cases where a component is directly disabled or for all components with 0-to-1 (i.e. However, to handle components with m-to-n connections I fear that this would have to be managed at the point when the equations are set... For example, in the case of the Another, but rather intrusive, alternative would be to parse the network to a simplified architecture and to then just solve that network with the regular solver, passing back any results to the original network. |
Ciao Francesco,
Perhaps it would be nice to have the ability to bypass or disable components to be able to switch between different plant configurations more easily.
Bypassing:
If I wanted to investigate the effect of recuperation on the plant performance, I currently have to a) add/remove the recuperator from the network between runs or b) assign a zero duty. With the ability to set a
bypassed
attribute, the component could instead be treated as anode
with the streams passing through unchanged.Disabling:
If I wanted to investigate the effect of only one of my heat exchangers being available as part of an off-design calculation, I would have to a) add/remove the corresponding component from the model or b) artificially assign a very small mass rate (not sure if this would necessarily work). With the ability to set a
disabled
attribute, the branch the component is on could be excluded from the solve.Not sure if these are the best examples but I hope they convey how this could be useful functiontionality
The text was updated successfully, but these errors were encountered: