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

GitHub code and Markdown (MD) files Leveraging

 To better achieve your goal of leveraging your GitHub code and Markdown (MD) files for your WordPress blog or LinkedIn articles, consider t...