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");
");
 

Leave a Reply

Translate »
Scroll to Top

Discover more from SWMM5, ICM SWMM, ICM InfoWorks, Ruby and Vibe Apps, InfoSWMM, InfoSewer

Subscribe now to keep reading and get access to the full archive.

Continue reading