Combinez des mesures asynchrones
Un liquide s'écoule de deux réservoirs et est combiné en un seul flux. Les débits individuels de chaque réservoir sont calculés en mesurant les niveaux de liquide dans chaque réservoir et sont donnés sous forme de séries temporelles. Calculez le débit combiné des deux réservoirs.
h1 = TemporalData[TimeSeries, {{
StructuredArray[QuantityArray, {101},
StructuredArray`StructuredData[QuantityArray, CompressedData["
1:eJwBNQPK/CFib1JlAQAAAGUAAADe5APaz4oAQCSFr48qYgBAQzBMKDxTAEDX
ymqz2x8AQNOLnrenpP8/Kmwvk1Ia/z8huN4wvNb+P4rfuUg5z/4/mdIrXD7C
/j/Uwimro3P+PxLt/Jvz4/0/qjRGTexP/T+BerQGpvj8P89ndGK45/w/uSuU
QGrm/D/3+kpQAbD8P6MLVq3yMPw/4lTjuNuY+z9wTWvQuS77P9Lv9rulD/s/
//pavhEU+z8YLJKVKfT6P+YyAQjbifo/QKWO0djz+T/A5FSVYHn5P9wGcJO5
SPk/s14mlqhM+T8WL8Ql9T/5PzZrds4O7fg/5iLiH0xf+D+CvLZMftj3P+3W
qeZulPc/BmCaoeOR9z+FMpKnwpP3P7+KpFA/Wfc/735hFG3Z9j++3QIdd0v2
P87+0M7j8/U/oJ8LlpTl9T+KFYiNavD1P1yaFoaDzfU/ddD7xmhg9T/9saxT
N9H0P7+BjKTCZ/Q/jidTHYdJ9D9A+nBKMlf0P9b8SZ1xSfQ/3ZNSCoXy8z/B
8GpwT2jzPxZGDC848PI/HzcSGFq/8j/6I6RCr8nyPx+uXV8fzfI/Mvnt4kWO
8j+lcOh1DA/yP1yDkX7qjPE/7W3IZGBI8T+9GiYLqEnxP152KqElWfE/9Zck
XIky8T8wIG3wnMPwP04gUh4EPfA/WedE9gjL7z/8E27037HvPxCrWcsl3e8/
4hlDFD+97z9nOo3taQjvP+h16WqI/u0/J0/Rkm8u7T+urSnBhPLsP8WXTrap
He0/bRLmuLQk7T9tTK7IZp7sP2u9NqEupOs/J3WK3Mq66j8bzo9SOljqP3/m
Tig4d+o/OWJ4ihuc6j8Upnb4hkbqP08bxY1wZ+k/QrxSy/Zu6D8Tx6a6S+Xn
PwYq0SZz7ec/ndGUjRUl6D+4gEpd7f7nP2Kb8eanROc/FZ293t1I5j+9YnNA
IJvlP6EruLryg+U/LLUSnx7C5T+Q8wcHr8blP4TvD3hdOOU/Wl/dx6lF5D+Z
/JtJH3rjP4Nyzev7PeM/ZcZaRVl24z93vVHo6Z3jPwwN4rqOP+M/aTuqJv5h
4j9XG7Zkp4HhP0VTVME+HuE/9dGrFA==
"], "Meters", {{1}}]]}, {
TemporalData`DateSpecification[{2016, 2, 3, 17, 0, 0.}, {2016, 2, 7,
21, 0, 0}, {1, "Hour"}]}, 1, {"Continuous", 1}, {"Discrete", 1},
1, {ResamplingMethod -> {
"Interpolation", InterpolationOrder -> 1}}}, True, 314.1];
h2 = TemporalData[TimeSeries, {{
StructuredArray[QuantityArray, {101},
StructuredArray`StructuredData[QuantityArray, CompressedData["
1:eJwBNQPK/CFib1JlAQAAAGUAAADe5APaz4oAQCOFr48qYgBAWwPf4N9MAEBS
Om4VdZn+PwngPIFrVfw/w0NCHNWZ+z9a09uBZsf8Pxe3P5fCfv4/ss8cEKDm
/j9YFSmc6l39P5tC/AfYC/s/AuMHBPbM+T+AxXXML336P+AErK6XMfw/oeO4
kWwU/T+VJkksOBX8P32SqPG33/k/lmsozcI5+D/2xRoL6mD4PyP1dj3D6fk/
Ez6I2lQn+z9rGrkfDLf6P6iE3q7kw/g/DtWOrkXa9j9h6QGSL3n2P1fJJ+hT
tPc/mXtDXuwm+T8KWSKioj75P/bpYbSxq/c/KZ3c+IGl9T8gGf0U2sj0PyaB
IA5KnfU/Z4uDEF4d9z8a3WXPFav3P6Hb1msJjPY/eG3sElyQ9D9aBVrA4E7z
P+VlDz+PrvM/Ot4sO24W9T8yXSYgSf/1P5XHmyBiXPU/5XIOMrWO8z+C/ifc
mQbyP4FPhVQb7/E/goxHzU4e8z/yOQXGjkH0P5HPQ+F1F/Q/8hzXvYuU8j+R
H7wjQOjwPz7fXelsYvA/ZeCYyYBA8T/t50aD6nryP+dNdqScu/I/ZyQA5B+X
8T/DSwWmlNPvP0LAfkiUEO4/1MyQlYgN7z+Ad8BdLbbwP3USRUfmSvE/SgME
ROiN8D+S13+SyP/tP81vGU/Jues/EBlSmGjw6z87i6MVxv3tP3gbv1aYle8/
9Ca3+aTm7j9ga3NGEj7sP5Wwax17suk/LYTLxm8x6T+9Mlb+gsDqP5sdtOk9
h+w/OLwD2HeK7D9YKMteHXnqP/PR9gS95+c/ogVVcVPR5j94zJwiUcjnP0b7
k3+Mf+k/yzWCkxAK6j9p8Rw1DZ/oP6BooC9NQ+Y/058TsNzJ5D+x4cno0iTl
PwgutSnBleY/kbmhed9u5z+9Gd9kjKLmPzSKhEg+reQ/ojbXlLsO4z+zPmb0
IOHiP9R0w+wu4uM/pCGvgmbH5D9reNbsHnrkP/Ko3Wy9DOM/RtvVUBGQ4T+k
hbaMlgbhP/MowdSsfuE/XFEVpd8i4j/yDMcEJRjiPxyQlJ3qROE/fqHOrPZG
4D/MgGaimHDfP3Bp5/unEN8/l3mlKQ==
"], "Meters", {{1}}]]}, {
TemporalData`DateSpecification[{2016, 2, 3, 17, 30, 0.}, {2016, 2, 7,
21, 30, 0}, {1, "Hour"}]}, 1, {"Continuous", 1}, {
"Discrete", 1}, 1, {
ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}},
True, 314.1];
Tracez les niveaux de liquide.
DateListPlot[{h1, h2}, FrameLabel -> Automatic, Joined -> False,
Filling -> Axis]
Les mesures ne sont pas simultanées, les deux séries temporelles ont différents cadres de temps.
SameQ[h1["Dates"], h2["Dates"]]
Le flux net de chaque réservoir dépend du coefficient de décharge commun , de la surface des sections transversales d'une sortie et du niveau de liquide, et est donné par la fonction suivante.
flowFun[c_, a_, height_] :=
Evaluate[c*a*
Sqrt[2*UnitConvert[Entity["Planet", "Earth"]["Gravity"]]]*
Sqrt[height ]]
Calculez le débit de chaque réservoir en appliquant la formule pour chaque série temporelle.
flow1 = flowFun[.7, Quantity[\[Pi] 0.25^2, "Meters Squared"], h1];
flow2 = flowFun[.7, Quantity[\[Pi] 0.26^2, "Meters squared"], h2];
Calculez le débit global.
TotalFlow = flow1 + flow2;
Les horodatages de la somme sont l'union des horodatages des deux séries temporelles sur une plage temporelle commune.
newtimes =
Union[Complement[flow1["Dates"], {flow1["FirstDate"]}],
Complement[flow2["Dates"], {flow2["LastDate"]}]];
SameQ[newtimes, TotalFlow["Dates"]]
Tracez les débits.