Grindex PumpSelect: About and Documentation
May 28th, 2008
When experiencing strange behaviour, try reloading the page by pressing F5.
Disclaimer
All efforts have been made to ensure the information and pump selection algorithm on these web pages are correct. However, the quality
and usefulness of the results are largely dependent on the quality of the input parameters supplied to the program,
so no responsibility can be taken for the correctness of the outcome of the pump selection. It is merely a tool for people
that 'know more or less what they are doing' when selecting pumps for dewatering applications. If you need help, please contact
a Grindex distributor in your area or contact
Grindex Sweden directly.
Contents:
1. Introduction
2. Features
2.1 Avanced options
3. Limitations
4. Reporting bugs
5. Detailed description of the selection algorithm
5.1 getpump.php script and its parameters
5.2 pngplotter.php script and its parameters
5.3 bigplotter.php script and its parameters
1. Introduction
The pump selection software on these pages tries to give a quick answer to the question "Which pump
do I need to get the water out of here?". Thick handbooks have been written on the subject of pump selection. This alone already
suggests that any online software application trying to automate the process, will have its limitations (see 3).
Grindex pumps excell in portable/semi-permanent installations which means that operating conditions and duty point are a moving
target. A pump might be selected for a certain application but rarely spends all of its life pumping in that original application.
Often after a shorter or longer time the pump is moved to another application with other operating conditions.
This is of course great because this is what the Grindex pumps were designed for: reliable pumping over a wide hydraulic range
in portable/semi-permanent installations.
It also justifies 'taking some shortcuts' while offering input options for the selection. For example: the friction calculations
take a common friction factor for hose/pipe instead of offering different options for different materials. This works 99% of the time
unless you have a very exotic duct (like a concrete pipe) but then the thought is that 'you know what you are doing, so you will
be able to correct for this particular application'. The same
applies to the fact that we don't include a tool for calculation of friction losses caused by accessories (valves, elbows, etc.)
along the discharge: unless you have very many of them, taking a couple of meters safety margin in the final selection is
enough to come to
a reliable selection. Again, if you have a very complicated set of pipes, valves, elbows, 'you know what you are doing' and
are probably looking for a permanent process pump and not for a portable/semi-permanent dewatering pump...
2. Features
Based on simple input parameters (flow, static head, discharge length and diameter) it will calculate the friction losses in the
discharge system and propose one or more pump posibilities (or none).
- You can search among all pump models, or only within a 'family' of pumps.
- The units for flow, head and diameter can be changed.
- The applet will propose a recommended discharge diameter, based on the criteria that the flow velocity in the discharge hose should
be between 2 and 4 meters/second (7 and 13 feet/second) for the water to drag sand and stones along. If you have clean water (no
solids at all) you can accept lower flow velocities as well (by increasing the discharge diameter, thus lowering friction losses).
- When the list of candidates is displayed, clicking on the pump name will show the pump curve graph and a small summary of the
required duty point (Rqd:) and the actual duty point (Act:) for the selected pump. By default the applet will select pumps with
duty points +/- 20% deviation from the required duty point.
- The candidates are sorted by (overall-efficiency / number-of-pumps). This was done to make one-pump-solutions have preference
over, sometimes more efficient, multiple-(parallel/series)-pump-solutions.
- By default the program will try to find one-pump-solutions or parallel and/or series connected pumps up to 2 pieces.
- Possibility of exporting the selection result to a pdf file, with the standard Grindex logo and contact information, or the
distributor's logo and contact information.
- As from 28th of May 2008 basic support for plotting P1, P2 and pump-efficiency is added. This will only work for drainage pumps and
sludge pumps, as these are the only models we provide P2 and efficiency data for (P1 is available for all models).
2.1 Avanced options
- One can enter a duty point manually. This will override the friction calculation, in other words, as soon as there is a manually
defined duty point, the data for hoselength and discharge diameter are ignored! (and this is far from obvious in the current
layout!)
- You can change the accepted range of flow/head deviation for the duty point of the pumps from the required duty point (default is
+/- 20%).
- You can change the maximum amount of pumps to be allowed in series and/or parallel connection. This is ofcourse a big opportunity
to 'screw things up' if you for example allow 100 pumps in series and 100 pumps in parallel, the applet instead of searching through
say 20 candidates, searches through thousands of combinations. This will most likely cause time-outs and unpredictable behaviour.
3. Limitations/Known issues
As indicated before: the limitations are many and mostly because of the outset when the software was developed: The goal
was to provide a 'quick-and-dirty working solution' for pump selection.
- Layout is neglected.
- No input validation: typing 'one hundred' in the flow field will not work, it will probably yield unpredictable results.
- Decimal point has to be a decimal point, not a comma. No leading or trailing spaces allowed either.
- Virtually no errors or hints on how to get sensible results.
- Some parts of the algorithm are unnecessarily processor-intensive (e.g. the selection is updated on every key press, typing '100'
liters/second will execute the selection script for '1' l/s, then for '10' l/s and then for '100' l/s. This was originally done to
stress-test the algorithm and has not yet been fixed).
- No automatic update of the curve area. When changing the selection parameters, the curve area does not update until one
explicitly selects a pump from the drop down list. (The page actually warns for this, but it might be overlooked easily).
- When changing the head units to 'feet' the hose-length-unit changes to 'feet' as well, but the value stays the same. This is
not really a bug or a problem, it is just not very clear to the user.
- For now only the English language is implemented.
4. Reporting bugs
If you find any bugs or have any suggestions please let us know: extranet grindex com
5. Detailed description
What follows is only interesting for people that want to program their own pumpselect program.
The entire pump selection application consists of several modules sending parametes to eachother to update their respective areas.
The main page pumpselect.html consists of the following areas with calls to the respective scripts:
Basically the scripts function as follows:
1. The form on the main pumpselect.html page contains several fields (flow, head, etc. etc.). A little javascript is executed at
every change in the input fields.
2. The javascript picks up the values from the fields in the forms, does some basic input validation and
constructs an URL of the form :
getpump.php?parameter1=value1¶meter2=value2...¶meterN=valueN&id=randomvalue
At the same
time it updates some div-tags on the form for example the 'recommended discharge diameter' according to the flow.
3. The getpump.php-script imports the values from the URL and starts checking if there is a pump, or combination of pumps that
fulfill the requirements. If not enough input data is supplied it might indicate a hint like 'please select 50Hz or 60Hz'.
4. The getpump.php-script either returns a hint or, if pumps are found, a dropdown box with the candidates.
5. The javascript updates the corresponding div-tag with the dropdown box returned by the getpump.php script.
6. Clicking on a pump in the dropdown box will call the wrapper.php script in the same way:
wrapper.php?parameter1=value1¶meter2=value2...¶meterN=valueN&id=randomvalue. The only thing the wrapper does is to supply
the img-tags and then calls the pngplotter.php script in the same way as the getpump.php and wrapper.php scripts.
7. The pngplotter.php script imports all the parameters from the URL and uses de GD2 plot library to create a PNG image and stream it
back directly to the wrapper.php script that encloses it in img-tags and then the entire image is placed back on the
pumpselect.html page.
8. Additionally a 'market select' dropdown box and a button are included which when selected/pressed call the PDF generator. As from
28th of May 2008 there are also checkboxes for plotting P1, P2 and Pump-Efficiency (only for drainage and sludge pumps).
bigplotter.php?parameter1=value1¶meter2=value2...¶meterN=valueN&id=randomvalue
5.1 The getpump.php script and its parameters
Call of the form getpump.php?parameter1=value1¶meter2=value2...¶meterN=valueN
And the possible parameters are:
&q=value   The flow in the units indicated by the 'qunits' parameter (see below)
&h=value   The total head in the units indicated by the 'hunits' parameter (see below). This is only used when
overriding the friction loss calculations.
&hs=value   The static head in the units indicated by the 'hunits' parameter (see below).
&uql=value   Allowable upper limit for flow (in percent 120=120%).
&lql=value   Allowable lower limit for flow (in percent 80=80%).
&uhl=value   Allowable upper limit for head (in percent 120=120%).
&lhl=value   Allowable lower limit for head (in percent 80=80%).
&freq50=value   Include 50Hz pumps (1 = yes or 0 = no
&freq60=value   Include 60Hz pumps (1 = yes or 0 = no
&name=value   Include only pumps starting with 'value'. This is used to select the pump group since all drainage pumps
start with 'M', all sludge pumps start with 'S' etc.
&hoselength=value   Hose length in 'hunits'.
&hosediam=value   Hose diameter in 'dunits'.
&qunits=value   Flow units. Possible values are: lps, m3h, lpm, gpm .
&hunits=value   Length and head units. Possible values are: meters, feet.
&dunits=value   Hose diameter units. Possible values are: mm, inch.
&maxpar=value   Allow up to 'value' pumps in parallel to get to the required duty point.
&maxser=value   Allow up to 'value' pumps in series to get to the required duty point.
Example:
http://extranet.grindex.com/php/getpump.php?name=M&q=10&hs=20&freq50=1&freq60=0&lql=80&uql=120&lhl=80&uhl=120&qunits=lps&hunits=meters&hoselength=100&hosediam=75&dunits=mm&maxpar=1&maxser=1
Will return a list with 50Hz drainage ('M') pumps that pump 10 (+- 20%) liters/second, through 100 meters of 75 mm pipe.
5.2 The pngplotter.php script and its parameters
Call of the form pngplotter.php?parameter1=value1¶meter2=value2...¶meterN=valueN
And the possible parameters are:
&q=value   The flow in the units indicated by the 'qunits' parameter.
&h=value   The total head in the units indicated by the 'hunits' parameter.
&hs=value   The static head in the units indicated by the 'hunits' parameter.
&curve1=value   Complete name of the pump curve to be plotted.
&curve2=value   Complete name of the second pump curve to be plotted. (not used by pumpselect)
&curve3=value   Complete name of the third pump curve to be plotted. (not used by pumpselect)
&color1=value   Color of the first pump curve. Possible values: black, grey, red
&color2=value   Color of the second pump curve. Possible values: black, grey, red
&color3=value   Color of the third pump curve. Possible values: black, grey, red
&imgwidth=value   Width in pixels of the resulting png image. Defaults to 340 (webpage).
&imgheight=value   Height in pixels of the resulting png image. Defaults to 250 (webpage).
&qunits=value   Flow units. Possible values are: lps, m3h, lpm, gpm .
&hunits=value   Length and head units. Possible values are: meters, feet.
&par=value   Plot the curves for 'value' pumps in parallel.
&ser=value   Plot the curves for 'value' pumps in series.
&try=value   Resulting duty point flow (in liters/second) as calculated by getpump.php
&pump_try=value   Resulting duty point head (in meters) as calculated by getpump.php
5.3 The bigplotter.php script and its parameters
Call of the form bigplotter.php?parameter1=value1¶meter2=value2...¶meterN=valueN
And the possible parameters are:
&q=value   The flow in the units indicated by the 'qunits' parameter.
&h=value   The total head in the units indicated by the 'hunits' parameter.
&hs=value   The static head in the units indicated by the 'hunits' parameter.
&curve1=value   Complete name of the pump curve to be plotted.
&curve2=value   Complete name of the second pump curve to be plotted. (not used by pumpselect)
&curve3=value   Complete name of the third pump curve to be plotted. (not used by pumpselect)
&color1=value   Color of the first pump curve. Possible values: black, grey, red
&color2=value   Color of the second pump curve. Possible values: black, grey, red
&color3=value   Color of the third pump curve. Possible values: black, grey, red
&qunits=value   Flow units. Possible values are: lps, m3h, lpm, gpm .
&hunits=value   Length and head units. Possible values are: meters, feet.
&dunits=value   Hose diameter units. Possible values are: mm, inch.
&hoselength=value   Hose length in 'hunits'.
&hosediam=value   Hose diameter in 'dunits'.
&par=value   Plot the curves for 'value' pumps in parallel.
&ser=value   Plot the curves for 'value' pumps in series.
&try=value   Resulting duty point flow (in liters/second) as calculated by getpump.php
&pump_try=value   Resulting duty point head (in meters) as calculated by getpump.php
&country=value   Country code for adding the logo and distributor address to the PDF. Default is 'int' which
means international and that the Grindex Sweden address will be printed. Other country codes are specified in the
distributors.xml file and usually follow the internet country codes: e.g. se=Sweden, pe=Peru, br=Brazil etc.
&power=value   Whether or not to plot the power curves for the pump, 1 = yes, 0 = no. This is overridden by the 'par' and
'ser' parameters, in other words this only works if par=1 and ser=1 !
&power2=value   Whether or not to plot the pump-power curves for the pump, 1 = yes, 0 = no. This is overridden by the 'par' and
'ser' parameters, in other words this only works if par=1 and ser=1 !
&eta=value   Whether or not to plot the pump-efficiency curves for the pump, 1 = yes, 0 = no. This is overridden by the 'par' and
'ser' parameters, in other words this only works if par=1 and ser=1 !
&scolor=value   Color of the system curve. Possible values: black, grey, red (default)