Tuesday, January 4, 2011

How to add a volume variable to SWMM 5

Subject:  How to add a volume variable to SWMM 5


The purpose of this email is to explain how to add another print variable to the DOS version of SWMM 5 so that it can saved in a table in the text output file (after you recompile the modified C code).  The changes have no impact on the SWMM 5 GUI or the SWMM 5 DLL engine.

It is relatively simple five step procedure:

Step 1:  Add a new variable LINK_VOLUME at the end of the link variables in enums.h This is much easier if you just add a report variable that already is part of the link or node structure in objects.h  Your only restriction is that is should be added before the water quality variables.
 // increase by 1 the value of Max  Results in enums.h 
#define MAX_LINK_RESULTS
 7    
enum LinkResultType {
      LINK_FLOW,              // flow rate
      LINK_DEPTH,             // flow depth
      LINK_VELOCITY,          // flow velocity
      LINK_FROUDE,            // Froude number
      LINK_CAPACITY,          // ratio of depth to full depth
      
LINK_VOLUME, // current volume of the conduit - august 2007
      LINK_QUAL};             // concentration of each pollutant
 
Step 2:  Add the report index for LINK_VOLUME to procedure output_open in ouput.c

k = LINK_VOLUME; 
fwrite(&k, sizeof(int), 1, Fout.file);
for (j=0; j<nPolluts; j++)


Step 3: Save the link new volume to the binary output file in procedure link_get_results in link.c.  The new volume of the link has already been saved in the already existing variable newVolume in the Link Structure.

x[LINK_CAPACITY] = (float)c;
x[
LINK_VOLUME]   = (float)Link[j].newVolume;

Step 4. Modify report.c to include the new report variable in procedure report_links

fprintf(Frpt.file, "\n  %11s %8s  %9.3f %9.3f %9.3f %9.1f %9.1f",                          theDate, theTime, LinkResults[LINK_FLOW], LinkResults[LINK_VELOCITY], LinkResults[LINK_DEPTH]  LinkResults[LINK_CAPACITY]* 100.0,
LinkResults[LINK_VOLUME]);
Step 5.  Modify procedure report_LinkHeader in report.c to show the new variable volume:

fprintf(Frpt.file,
"\n                             Flow  Velocity     Depth   Percent   
   Volume");
");
 

1 comment:

Robert Dickinson said...

http://www.swmm2000.com/profiles/blogs/how-to-add-a-volume-variable

AI Rivers of Wisdom about ICM SWMM

Here's the text "Rivers of Wisdom" formatted with one sentence per line: [Verse 1] 🌊 Beneath the ancient oak, where shadows p...