RWTH-EBC / AixLib

A Modelica model library for building performance simulations
https://ebc-tools.eonerc.rwth-aachen.de/aixlib
178 stars 82 forks source link

Add District Heating and Cooling models #403

Closed marcusfuchs closed 2 years ago

marcusfuchs commented 7 years ago

Update

We are trying to make a renewed effort to add DHC models to AixLib, concentrating our previous activities from different projects.

This issue will be the central reference for a branch issue403_dhc, in which we will continue our development until a first version is ready for merging to the development branch. We may require different feature branches that first merge to issue403_dhc. We'll use separate issues and PRs to issue403_dhc for this. In this issue, we will try to keep an overview of current activities.

Feel free to participate. Currently, @MichaMans @TobiasBlacha and me are working on this topic.

First steps are:


What is the problem?

Why do we want to solve it?

How do we want to solve it?

402 already adds a first reference network for hydraulic validation. Continuing this work, I'll add the base classes, a very simple first implementation of each network component, and an example recreating the reference network using the newly introduced modules. This may also show some need to modify the models added in #402.

MichaMans commented 7 years ago

As discussed with @marcusfuchs we should consider a IdealHeatSink (or flow sink) with a input connector. With that, we are able to use DemandTables from text or ncDataReaders or .mos scripts, or outputs of other simulation classes, e.g. the thermal zone idealheatercooler

PMehrfeld commented 7 years ago

Just as a quick hint: We have a easy-to-use converter for .mat --> .nc in our ebc_python_library :)

PMehrfeld commented 6 years ago

@MichaMans and @TobiasBlacha : It seems that you two are working now on this issue. Any chance to complete it (maybe together with @marcusfuchs) for the next milestone?

MichaMans commented 6 years ago

@PMehrfeld I think this is and will be a WIP issue for the next weeks/month, but we can have a look at it and merge it at the current state into development. That would make it a bit more transparent

PMehrfeld commented 6 years ago

Thanks for the updates. I set this issue's milestone to a higher version and additionally assigned you, @MichaMans and @TobiasBlacha.

MichaMans commented 6 years ago

As the feature branches of this issue are getting a bit confusing I'm going to delete them:

@marcusfuchs @TobiasBlacha any objections?

marcusfuchs commented 6 years ago

No objections.

MDHering commented 5 years ago

@MichaMans @TobiasBlacha @marcusfuchs Is anyone using the OpenLoop/HeatPumpCarnot model? I have two minor changes, that I want to add and don't want any other models to fail. Changes are:

MichaMans commented 5 years ago

If someone is currently working with that model, then @TobiasBlacha . From my side, every addition is an enhancement 👍

TobiasBlacha commented 5 years ago

@MDHering I'm not working with the model at the moment, but I think the two proposed changes are good.

MichaMans commented 5 years ago

@MDHering @TobiasBlacha I did some small revisions of the partial supply model, set the time constant (tau) for temperature sensor to zero (reason: simulations with euler solver and fixed time step of 1s were otherwise not feasible), flipped the sensor for aesthetic reasons, implemented a Q_flow for the calculation of the heating power in the supply station. Any objections to push that directly?

MDHering commented 5 years ago

@MichaMans No objection from me

MDHering commented 5 years ago

@MichaMans @TobiasBlacha I tried to find a way to set additional pressure losses of the plugFlow pipe model in relation to zeta values of components. Right now, the parameter fac is used. If we want to use zeta values instead the parameterization of fac needs to be changed for three components. The equation for fac is: grafik The components that need changing are:

The changes mainly consist of renaming the parameter fac and adapting its boundaries (e.g. from fac(min=1) to fac(min=0)). The equation for fac needs to be implemented into the HydraulicDiameter component to have access to all necessary parameters (e.g. dpNominal). Changing those three components will most certainly affect all district heating models. Therefore I want to check with you if you think this idea is worth implementing and which way should be used. I thought of two possible ways to implement it:

  1. Delete the parameter fac and replace it by a parameter sumZeta. This improves readability of the code but will affect automated model generation and existing models since parameter naming changes.
  2. Use the parameter fac and give the sum of zeta values to it. The equation can be adapted accordingly and compatibility to existing models should be feasible. However, the naming of the parameter is not that clear.

Do you have any thoughts or suggestions on this?

MichaMans commented 5 years ago

@MDHering Currently I'm not sure if i understand it all right. You already implemented your suggestion and tested it, didnt't you? Where the results better then before? Because this might be a large ajustment to the models of the ibpsa library. Maybe we can go for an implementation suggested with 2. with new models. So not changing the current, more adding new ones to test and discuss them.

MDHering commented 5 years ago

@MichaMans I agree that adding new models is probably the best way to compare the two models. The advantage of writing zeta values directly to the pipe model is mainly that this decreases the need for a lot of preprocessing. Zeta values can be taken from literature directly, whereas fac needs to be calculated depending on flow regimes at nominal conditions right now. I will add the new models for a better understanding of the difference between the two, if this is okay?

PMehrfeld commented 5 years ago

@MDHering: I just went fast through your text, but if I see it correctly, it might be an option for you to take the model AixLib.Fluid.FixedResistances.HydraulicResistance. Here you directly have the parameters m_flow_nominal, diameter and zeta. So you can implement maybe a combination of zetaResis - PlugFlowPipe - zetaResis.

MDHering commented 5 years ago

@PMehrfeld Thanks for the advice. Somehow I missed this possibility completely. I will add a model according to your suggestion and test it.

MDHering commented 5 years ago

I added the models with an additional HydraulicResistance element. For small district heating networks this works fine. The Jülich heating network runs into Bad Allocation error when using the new pipe models.

MDHering commented 5 years ago

I added my first draft of the PlugFlowPipes to the pipes folder in the disctrict heating folder. The pipes named PlugFlowPipeZeta and StaticPipeZeta use an additonal hydraulic resistance component. With those pipe models a large DH simulation failed during the comilation due to Bad Allocation error.

The model PlugFlowPipeFacAsZeta is modelling additional pressure losses with the factor fac instead of an additional hydraulic resistance component. This seems to reduce the number of equations and allows the simulation model to be compiled even for a large DH network. Addtitional components need to be changed to use this approach. Those components are added to the folder BasClassesPlugFlowFacAsZeta.

@MichaMans Do you think the model PlugFlowPipeFacAsZeta is an approach worth following? Or do you think an approach like PlugFlowPipeZeta is better for large DH networks?

MDHering commented 5 years ago

@MichaMans @TobiasBlacha I tried the approach that you suggested to write the calculation of parameter fac in the model generation template. For my first test this works really well. The changes are all part of the uesmodels project (see issue 32). In my opinion this is a good solution. If you aggree I delete all additional pipe models that I added to this branch, because we do not need them any more.

MichaMans commented 5 years ago

@MDHering @TobiasBlacha As fare as i see the progress here, we reached a point in terms of model development which serves first DHC applications. Therefore we should think about merging it to the development. At least we should check the following for that:

MDHering commented 5 years ago

@MichaMans I pushed a first draft of a valvecontrolled Closed Loop substation. This substation is allready optimized to minimize the number of equations and to substitute the secondary fluid flow and Heat Exchanger model. Additionally, a control loop is added to set the opening of the valve according to available heat flow and requiered heat flow. I sucessfully simulated the small LTDH network. Additionally, I tested the large juelich heating network and ended with the "bad allocation" error during the compilation of the model. To implement the functionality of the closed loop substation into the large network I added the OpenLoop.ValveControlledHX model. This model should yield similar results to the closed loop model with a reduced amount of equations. I simulated the large network sucessfully with the OpenLoop substations. However, there is still some interesting behavior: I compared the closed loop model to the open loop model for the small network and a simulation time of one week.

DaJansenGit commented 5 years ago

Thanks for the work you've put into this so far. Can you give us a short estimation of how much effort is still needed? Do you consider it realistic to close the issue in the near future? Otherwise I would assign it to v0.9.0.

MichaMans commented 5 years ago

@DaJansenGit thanks, i would go for v0.9.0. 😃

DaJansenGit commented 5 years ago

@DaJansenGit thanks, i would go for v0.9.0. 😃

Ok, I changed the milestone :) Thanks!

KremerMartin commented 5 years ago

@MichaMans As I saw, you are going for v0.9.0. Maybe this could be something for the hackday next week. Otherwise, you can just remove the hackday label. ;)

MartinRaetz commented 3 years ago

Hello everyone, what is the status of this issue? Anything we could tackle in tomorrows hackday?

ebc-aixlib-bot commented 2 years ago

The Branch issue403_dev_integration_2 has been inactive for more than 872 days. A pull request is created and the branch is then deleted. If you want to restore the branch, go to the closed pull requests and restore your branch. Pull Request URL: https://github.com/RWTH-EBC/AixLib/pull/1262

ebc-aixlib-bot commented 2 years ago

The Branch issue403_dev_integration_4 has been inactive for more than 858 days. A pull request is created and the branch is then deleted. If you want to restore the branch, go to the closed pull requests and restore your branch. Pull Request URL: https://github.com/RWTH-EBC/AixLib/pull/1263

ebc-aixlib-bot commented 2 years ago

The Branch issue403_dhc_pipes_heatLosses has been inactive for more than 522 days. A pull request is created and the branch is then deleted. If you want to restore the branch, go to the closed pull requests and restore your branch. Pull Request URL: https://github.com/RWTH-EBC/AixLib/pull/1264

ebc-aixlib-bot commented 2 years ago

The Branch issue403_dhc_substation_refactoring has been inactive for more than 518 days. A pull request is created and the branch is then deleted. If you want to restore the branch, go to the closed pull requests and restore your branch. Pull Request URL: https://github.com/RWTH-EBC/AixLib/pull/1265

ebc-aixlib-bot commented 2 years ago

The Branch issue403_dhc_substations has been inactive for more than 523 days. A pull request is created and the branch is then deleted. If you want to restore the branch, go to the closed pull requests and restore your branch. Pull Request URL: https://github.com/RWTH-EBC/AixLib/pull/1266

ebc-aixlib-bot commented 2 years ago

The branch issue403_dhc has been inactive for more than 124 days. The branch is automatically deleted after 180 days. If you want to keep the branch, add changes to the branch. A pull request is created and the branch is then deleted. If you want to restore the branch, go to the closed pull requests and restore your branch. User name: MichaMans Branch URL: https://github.com/RWTH-EBC/AixLib/tree/issue403_dhc