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).

Performance

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.

  1. maelstrom (solaris): 560 slots (before reverting nine of the Slot Sums back to Rpl).
  2. maelstrom (solaris): 491 slots (correct configuration, using nine Rpl expression slots).
  3. PC (64-bit Intel Core i7-2600 CPU, 3.4 GHz; Windows 7; 16 GB): 491 slots.
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.