Mass Balance Summaries in RiverWare 6.2 -- Dec 2011 / Jan 2012
Project index / 1-23-2012 / Summation Operation: Correctness and Performance Testing
![]() |
After implementing the summation computation, I corrected the migrated URGWOM Mass Balance Summary configuration for correctness testing. The legacy (Rpl-based) implementation and the new C++ implementation seem to match, determined with spot checks, "toggling" between the "legacy" values and the new computed results. I'll take a closer look when I implement plotting.
Nine Slot Sum definitions needed to be migrated back to the RPL implementation. The required RPL expression slots were moved to the data object containing the Data Object. (See screenshot). These are:
Here is this Mass Balance data object as an SimObj export file:
See screenshots of the six Mass Balance Summary slots below (with two levels shown).
Three sets of timing results using the 4018 timestep URGWOM reference model were prepared. Results are very good -- less than one second on the Windows machine.
Sample | maelstrom 560 slots [seconds] |
maelstrom 491 slots [seconds] |
Windows 491 slots [seconds] |
1 | 2.057 | 1.942 | 0.647 |
2 | 2.034 | 1.922 | 0.534 |
3 | 2.048 | 1.945 | 0.538 |
4 | 2.031 | 1.913 | 0.530 |
5 | 2.013 | 1.895 | 0.535 |
Note that the tests using the nine Rpl expression slots did not include the re-evaluation of those nine slots. The summation operation doesn't force the re-evaluation of referenced expression slots -- but it could if we wanted it to -- but just one level of expression slot "calls".
Interestingly, the model load operation is significantly faster on maelstrom than it is on the Windows machine -- not measured, but I'd estimate that maelstrom (Solaris) takes about two-thirds the amount of time as the Windows machine.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |