You need to be a member of SWMM 5 or SWMM or EPASWMM and SWMM5 in ICM_SWMM to add comments!

Join SWMM 5 or SWMM or EPASWMM and SWMM5 in ICM_SWMM

Comments

  • SWMM 5.1 Update History

    =======================

    Engine Updates, more information and code shown on the EPA Website:

    1.   A new feature that provides monthly adjustments for

         temperature, evaporation rate, and rainfall was added.

    epa51.png

    2.   Support for reading the new GHCN-Daily climate data

         files available from NCDC's Climate Data Online service

         was added.

    3.   In addition to lateral groundwater flow, a custom

         equation can now also be used for seepage flow to

         a deeper groundwater aquifer.

    Capture16.png

    4.   The [GW_FLOW] section of the project file was renamed

         to [GWF] and its format was changed to accommodate

         both lateral and deep groundwater flow equations.

    5.   A new Weir parameter was added that specifies if the

         weir can surcharge using an orifice equation or not.

         Surcharging was the only option in SWMM 5.0 but was

         switched to no surcharging in earlier 5.1 releases.

         This new parameter accommodates both closed top weirs

         that can surcharge and open channel weirs that cannot.

    Capture17.png

    6.   The formula used to recover infiltration capacity during

         dry periods for the Modified Horton method was revised.

    7.   The initial cumulative infiltration into the upper soil

         zone for Green-Ampt infiltration had been incorrectly

         set to the maximum value instead of zero.

    8.   All of the Green-Ampt infiltration functions were

         re-factored to make the code easier to follow.

    9.   The calculation of infiltration out of the bottom of a

         Bio-Retention Cell or Permeable Pavement LID unit with a

         zero-depth storage layer was corrected.

    10.  Most of the LID simulation routines were modified to

         provide more accurate results under flooded conditions.

    11.  Results written to the detailed LID results report now

         always correspond to a full reporting time step.

    12.  The name of the variable used to represent the height of

         the receiving channel bottom in a user-defined groundwater

         flow equation was corrected to match the name displayed

         in the GUI's Groundwater Editor dialog (Hcb).

    13.  A problem with the program crashing when a climate file

         was used to provide evaporation rates for open channels

         and storage nodes when runoff was not computed (as when

         there were no subcatchments in the project) was fixed.

    14.  Flow and pollutant routing mass balance accounting was

         modified to correctly handle negative external inflows.

    15.  The procedure for computing the area available for seepage

         out of a storage node that has a tabular storage curve was

         corrected.

    16.  Seepage from storage units can now be modeled using Green-

         Ampt infiltration, which makes the seepage rate a function

         of storage level. The constant seepage rate option can

         still be used by setting the G-A initial moisture deficit

         to 0.

    Capture18.png

    17.  The function that finds depth as a function of volume from

         a storage curve was corrected for the case where the depth

         falls within a portion of the curve where area is constant

         with depth (i.e., vertical side walls).

    GUI Updates:

    1.   The Object Toolbar was restored.

    2014-10-11_1007.png

    2.   A new page was added to the Climatology Editor to edit

         values for monthly adjustments for temperature, evaporation,

         and rainfall.

    3.   A field for the new weir surcharge option was added to the

         Weir Property editor.

    4.   A problem with the current project being closed without

         asking if it should be saved first whenever a new style

         theme was selected from the Program Preferences dialog

         has been fixed.

    5.   The default seepage rate from an LID storage layer was changed.

    6.   The Infiltration Editor was restored for editing Green-Ampt

         parameters for storage unit seepage loss.

    7.   The Groundwater Flow Equation Editor was extended to accept


         equations for deep groundwater flow.

     
    History of EPA SWMM versions (from Wikipedia)
     
    2014-10-11_1017.png
     
    • This is for Students who want to make their own customized version of the SWMM5 GUI Interface. You can use the Embarcadero Starter Version for XE2 to XE7.  Here are the main files you download from the EPA There may be a problem with teechart and the starter version - see the note here http://docwiki.embarcadero.com/RADStudio/XE7/en/FireMonkey_and_TeeC...



      2014-10-11_1124.png

      CONTENTS OF SWMM5.1.007_GUI.ZIP
      =============================


      Note from the EPA: This archive contains source code for the Windows graphical user interface portion of Version 5.1.007 of the Storm Water Management Model (SWMM). The interface was written using Embarcadero's Delphi XE2 (www.embarcadero.com). The name of the Delphi project containing the code is Epaswmm5. All of the files for the project can be found in the GUI5_1_007.ZIP file within this archive.


      Before the Epaswmm5 project can be loaded into Delphi's Integrated Development Environment (IDE), several special components must be installed into the IDE's component pallette. The source code for these components is contained in the COMPONENTS.ZIP file in this archive. Consult the Delphi Users Guide for instructions on how to install these components. 


      My note:  The Delphi Starter versions for XE2 to XE7 also can create a customized SWMM5.1 GUI.  You can by the Embarcadero Starter Version for $209 USD.  As explained in the readme from the EPA Site, Delphi uses the Delphi Interface (Bullet 1), the F(form files), D(dialog files), U(Utility files), Txt (Interface Rules) as shown in Bullet 2 and Components that work with the Forms of the Delphi Compiler (Bullet 3).  See Figure 1 below for an example. 



      2014-10-11_1040.png
      Figure 1. Delphi XE7 Interface for SWMM 5.1.007
      Here is how to use the Components



      CONTENTS OF COMPONENTS.ZIP
      ==========================
      This archive contains the source code for several 32-bit Delphi
      custom components. The components and the files used to install
      them are listed below.

      -------------------------------
      OpenTxtFileDialog (OpenDlg.pas)
      -------------------------------
      Windows standard Open File dialog with a preview window for text files.

      ---------------------
      NumEdit (NumEdit.pas)
      ---------------------
      Text box control that limits entries to valid numerical values.

      -----------------------------
      PageSetupDialog (PgSetup.pas)
      -----------------------------
      Dialog control that selects a printer and page orientation, margins,
      and headers/footers.

      -----------------------------
      VirtualListBox (VirtList.pas)
      -----------------------------
      Listbox control that allows an unlimited number of items.

      ---------------------------
      PrintControl (Xprinter.pas)
      ---------------------------
      Nonvisual control that handles printing of text, tables, and graphics.
      Includes a print preview feature. Documentation is provided in the file
      Xprinter.doc.

      What do the Components look like?
      Capture23.png
      Figure 2. Delphi Components on a Form


    • This is a code note about change 52 in the newer EPA SWMM 5.1.x C code

      52. Weekday and weekend hourly time patterns for Dry Weather inflows are now correctly applied in a mutually exclusive manner.
       
       Here is the code from SWMM 5.0.022
      double inflow_getDwfInflow(TDwfInflow* inflow, int month, int day, int hour)

      //

      //  Input:   inflow = dry weather inflow data structure

      //           month = current month of year of simulation

      //           day = current day of week of simulation

      //           hour = current hour of day of simulation

      //  Output:  returns value of dry weather inflow parameter

      //  Purpose: computes dry weather inflow value at a specific point in time.

      //

      {

          int    i,                          // pattern type index

                 p;                          // pattern index

          double f = 1.0;                    // pattern factor

          for (i=0; i<4 i="" o:p="">
          {

              p = inflow->patterns[i];

              if ( p >= 0 ) f *= inflow_getPatternFactor(p, month, day, hour);       //(5.0.019 - LR)

          }


          return f * inflow->avgValue;   

       
      Here is the new 2014+ code,  which adjusts the pattern  factor based on the day of the week.
       
      double inflow_getDwfInflow(TDwfInflow* inflow, int month, int day, int hour)

      //

      //  Input:   inflow = dry weather inflow data structure

      //           month = current month of year of simulation

      //           day = current day of week of simulation

      //           hour = current hour of day of simulation

      //  Output:  returns value of dry weather inflow parameter

      //  Purpose: computes dry weather inflow value at a specific point in time.

      //

      {

          int    p1, p2;                     // pattern index

          double f = 1.0;                    // pattern factor

          p1 = inflow->patterns[MONTHLY_PATTERN];

          if ( p1 >= 0 ) f *= inflow_getPatternFactor(p1, month, day, hour);   // Pattern f value is 1 * The Monthly Factor

          p1 = inflow->patterns[DAILY_PATTERN];

          if ( p1 >= 0 ) f *= inflow_getPatternFactor(p1, month, day, hour);   // Pattern f value is last f * The Daily Factor

          p1 = inflow->patterns[HOURLY_PATTERN];

          p2 = inflow->patterns[WEEKEND_PATTERN];

          if ( p2 >= 0 )

          {

              if ( day == 0 || day == 6 )

                  f *= inflow_getPatternFactor(p2, month, day, hour); // Pattern f value is last f * The Hourly Factor for Saturday and Sunday

              else if ( p1 >= 0 )

                  f *= inflow_getPatternFactor(p1, month, day, hour); // Pattern f value is last f * The Hourly Factor Monday to Friday

          }

          else if ( p1 >= 0 ) f *= inflow_getPatternFactor(p1, month, day, hour);  // Pattern f value is last f * The Hourly Factor

          return f * inflow->avgValue;

This reply was deleted.