Hi Everyone,
We're currently working on developing an MSX model for Chlorine Decay that can account for wall decay as a factor of Biofilm growth (thus removing the need to specify wall decay for specific pipes throughout the network).
Unfortunately the equation for this relies on the mass transfer coefficient, which is dependent on the type of flow, as explained here: https://docs.bentley.com/LiveContent/web/Bentley%20WaterGEMS%20SS6-v1/en/GUID-D7D70292-50F6-4066-A30E-3B98BBB2BF7B.html.
This is built into the WaterGEMS standard pipe wall reaction calculations, however I need to know whether we can reference this coefficient in MSX, does anyone know whether this is possible? My understanding is that EPANET is capable of this so I assume WaterGEMS is capable as well, I just don’t know how.
For anyone wondering, the equations for Bulk decay are very simple. Below is a copy of what we use currently (no wall decay):
The Wall Decay equations are derived as follows (A&B are constants to be determined by trial and error, kw is what we need from WaterGEMS)
Thank you,
Ryan
The above solution is now included as a wiki article as below;
How to include result fields or pre-defined parameters in Multi Species Extension (MSX) for analysis?
Regards,
Yashodhan Joshi
G’day Tom,
Firstly I would like to start by saying I’m aware of the limitations of Chlorine Decay Modelling and I understand it's questionable whether this process is worth the effort given the limitations of the model.
An easier method would be to simply;
I agree with the benefits of tons of field Cl field data, we don't have a lot but we do have a reasonable amount.
We will be re-building our EPS model in the near future, in order to improve our calibration of this we’ve installed 20 pressure loggers across the system in addition to all the existing pressure and flow loggers.
Up to the comment on using the constituent model I agree with everything. But I have to argue strongly against using the WaterGEMS constituent model. We have used this previously and it is incredibly inaccurate. If you’re aware of Fishers work you’ll understand exactly how inaccurate first order decay is for networks with several day’s water age and multiple chlorine boosting stations. I would argue that it can be dangerous to use this because if someone were to use that method and think that it has some degree of accuracy; it could potentially lead to decisions being made that may have significant consequences.
I like your modeling Quote from George Box, and that’s exactly what I’m trying to achieve.. A useful Chlorine decay model.
As a side note:
While many reticulation networks have limited continuous monitoring for pressure, flow and chlorine, as the years go by, the amount of monitoring that occurs across Australia is increasing. Additionally academics are constantly researching and developing new and improved equations to represent the way chemicals interact throughout these systems. With these developments, in conjunction with continual improvements in computer processing power, it's only a matter of time before everything necessary to run accurate and reliable chlorine decay models exists... and all we would need then is the software to do so :)
Ryan, it's admirable to try to apply MSX to your situation but I prefer to approach things incrementally. I believe it was Einstein who said, "A model should be as simple as possible but no simpler." That applies here.
Before I would even start modeling, I would collect tons of field Cl data (with corresponding demands and boundary conditions) and analyze it to determine the nature of the problem and range of solutions. I assume you've done this.
Then I would ensure that my EPS model is very well calibrated. If it's not almost perfect, then why bother with something like MSX?
Then I would try to model my chlorine data using the standard WaterGEMS constituent model (not MSX) by adjusting my wall decay rates (increasing them in areas where flows are very low). This may be good enough for what you need and it is much easier than MSX.
If you are certain that everything in your model is correct, except that the WaterGEMS constituent model is not adequate, only then would I take Wayne's advice and dive into MSX.
I'm aware of Fisher's work and its' quite good.
If you would like to discuss more off line, send me an email and we can call (tom.walski@bentley.com).
I'll leave you with one more famous saying. Mathematician George Box once said something like, "All models are wrong. Some are useful anyway."
Best wishes,
Tom
Re: "It would also be great if pipe material and age were terms that could also be referenced in MSX,"
Pipe material is not possible right now, but Age is. You could do this by modeling age as a species that does not grow or decay.
[SPECIES]; AgeBULK Age MG
[PIPES]RATE Age 1.0
[TANKS];AgeRATE Age 1.0
[QUALITY]GLOBAL Age 24.0
(The last part is just if you want to use an initial age... you can do that globally or by element).
The units are just a label and can be ignored, especially if the purpose is just to calculate some other dependent value.
In my test model this seems to have the desired outcome.
Hope this helps.
Wayne.
Hi Ryan,
I think there has been some confusion in this thread for which I apologize.
The first thing to note is that the UDX route won't work, not because there is anything wrong with UDX (it's a cool feature), but because there is no way (currently) to plug in UDX fields into the input side of an MSX calculation. (It is possible to do that kind of thing for regular calculations with some programming knowledge, but that is outside the scope of this thread).
So to re-iterate, it is definitely possible to do what you want using the TERMS feature of MSX just as I initially stated. I think I understand now that what you were missing is not that the terms can be defined as a function of Reynold's number (and other pre-defined variables), but how to apply different behaviors based on different value ranges of Reynolds Number (i.e., different flow regimes). It wasn't clear to me that this was the stumbling block based on the way I was reading your responses.
The key to the application of different formulae to different value ranges of Reynolds Number, or indeed different value ranges of any different kind of variable is the STEP(x) function in MSX. An example of its usage is given on page 62 of the EPANET MSX 1.1 user manual, and it is described on page 63. If you think about it, a tool like MSX wouldn't have much value if this type of thing was not possible, since it would completely prevent the type of situation you are trying to model from being modeled.
The step function works as follows (example only; this is not implementing the actual mass transfer coefficient equations you want, just demonstrating the general mechanism by which it can be achieved using MSX).
Let's say that you had 3 flow regimes that you were interested in.
1: Re <= 1.0e52: 1.0e5 < Re <= 1.0e73: Re > 1.0e7
You could apply different sets of reaction equations subject to these three regimes.
First to capture the different flow regimes, you could define new TERMS as follows.
[TERMS]FR1 STEP(1.0e5 - Re) ; Re <= 1.0e5FR2 STEP(1.0e7 - Re) * (1 - FR1) ; Re <= 1.0e7FR3 STEP(1.0e9 - Re) * (1 - FR2) ; Re <= 1.0e9FR1M FR1FR2M FR2 * 10FR3M FR3 * 25
The first three terms (FR1, FR2, and FR3) are the flow regimes. These terms evaluate to 1 or 0 depending on whether the pipe flow is within the defined range of Reynolds Number. These could be used directly to "turn on" (or off) various parts of a decay equation thus enabling the ability to define reaction rates that involve different equations for different flow regimes.
The second three terms (FR1M, FR2M and FR3M) are simply terms (multipliers) that I created to demonstrate that the previous three terms work as expected. We will see how this works in a moment.
Then to implement the regimes in the equations you simply write equations that leverage the previous terms. (In my example the FR1M, FR2M and FR3M terms; in your case the FR1 FR2 and FR3 terms).
[PIPES];Free chlorine decayRATE CL2 FR1M*(-Ks20*TC*Cs*CL2-Kf20*TC*Cf*CL2-Km20*TC*Cm*CL2) + FR2M*(-Ks20*TC*Cs*CL2-Kf20*TC*Cf*CL2-Km20*TC*Cm*CL2)+ FR3M*(-Ks20*TC*Cs*CL2-Kf20*TC*Cf*CL2-Km20*TC*Cm*CL2)
What I am doing above in my example is modifying the CL2 decay rate for pipes subject to the flow regime. The equation above, simplified is:
RATE CL2 FR1M*Const + FR2M*Const + FR3M*Const, where Const is the result of all the terms that define the decay rate.
(In my example I am using the same equation for each multiplier and increasing the decay rate by a factor, but in your case you would likely stick to multipliers of 0 and 1 (FR1, FR2, FR3) to turn on/off parts of the decay rate equation that do not apply to the specific flow regime).
In my example, and referring to the simplified form of the equation, the outcomes are that:
...if the flow regime is such that Re < 1.0e5, then the decay rate is 1*Const....if the flow regime is such that Re > 1.0e5 and Re <= 1.0e7 then the decay rate is 10*Const...if the flow regime is such that Re > 1.0e7 and Re <= 1.0e9 then the decay rate is 25*Const
In other words, the higher the value of Re (subject to the stepwise evaluation within the defined ranges), the higher the decay rate.
I know this is not the specific equations you want to implement, but it's illustrating the underlying mechanism by which you, or anyone else, can do it, subject to an arbitrary number of different ranges in Reynolds number (or any other variable or term), and making it easy to clearly demonstrate that it works (by exaggerating the effects).
When I run the above equations in a model that uses the following combinations of multipliers...
... it is easy to see that the decay in the modeled system in my test model does vary depending on the defined factors, and thus varies depending on the decay function applied for the specific flow regime under consideration. In other words the evaluation of the step function is working as intended.
Given that MSX provides the ability for users to flexibly define their own constants, calculated terms and equations I am sure that the above is just one or many ways to approach this use case.
The only thing left to do is for you to write the actual equations you wish to use and apply them to the ranges of Reynolds number that you deem relevant to your system. If you run into any issue where you cannot access information that you need to define a specific equation, then please feel free to post again.
I hope this helps.
Regards,Wayne.
Answer Verified By: Ryan Catling