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)