Importing asset data
Projections
Here’s how projections work in the case of GIS files:
- If the .prj file is not included in the Shapefile files, this layer is ignored.
- If the projection info is not declared in the GeoJSON file, it is assumed that the projection is canonical: WGS84 (EPSG:4326), as GeoJSON standard remarks.
GIS file names
To create a model, Qatium only requires you to import a pipe layer, but we recommend you import as many asset types as available to make the best of the platform.
In order for each asset to be visible on the map, it needs to be correctly assigned to a GIS file.
During the import, Qatium will categorize your valid GIS files (GeoJSON and Shapefiles) automatically.
Here’s how this automatic categorization works:
1. If a filename contains the aliases "no tratada", "non potable", "air valve", "ventosa", the layer is categorized as ignored.
Example:
2. After this first step, the categorization takes into account the following conditions:
- If a file contains linear elements (lines or polylines) it is considered a pipe layer.
- If a file contains polygons or multipolygons with a DemandPattern property in some element (or with a zone alias in the filename), it is considered a zone layer.
- For files containing point or multipoint assets, we search for aliases in the file name.
If there’s more than one asset that match, we associate the file to the asset type with the highest position in the table below:
Asset | Aliases |
Supply sources | "source", "reservoir", "fuente", "embalse", "pozo", "well", "suppl", "suministro", "inyeccion", "import", "input", "entrada", "wtp", "wtw" |
Tanks | "tank", "tanque", "deposito", "almacenamiento", "tower" |
Pumps | "pump", "bomba", "impulsion", "booster", "bombeo" |
Valves | "valve", "valvula", "shutoff", "tcv", "gpv", "prv", "psv", "fcv", "pbv", "regula", "control", "llave", "grifo", "reductora", "reducing”, “reducer”, “backflow” |
Junctions | "junction", "hydrant”, “hyd”, "fitting", "meter", "contador", "medidor" "hidrante", "nodo", "nudo", "ventosa", "incendio", "boca”, “cruce”, “sensor”, “logger”, “service”, “connection”, “desague”, “caudalimetro”, “clorador”, “filtro”, “muestreo”, “sondeo”, “toma_de_presion” |
Zones | "zone", "zona”, “dma”, “sector” |
Important:
Aliases are insensitive to case, accents and more than one space. For example, if you write zone instead of Zone the platform will still process it correctly.
Naming asset IDs
You can provide IDs to your assets and Qatium will do its best to maintain them, as long as they meet certain conditions.
Asset IDs must:
- include up to 31 valid characters
All characters are considered valid, including space, tab and line break.
Qatium will automatically shorten a longer ID to 31 characters and replace any unidentified character with a number.
- be unique
If 2 or more of your assets have the same ID, Qatium will assign that ID to the asset with the higher priority in the hierarchy list below:
Priority | Asset |
+ | 1. Reservoir (Supply source) |
2. Tank | |
3. Pump | |
4. Valve | |
5. Pipe | |
– | 6. Junction |
The rest of the assets will be renamed in the following way:
original ID + # (separator) + sequential number
For example:
Pipe1, Pipe1→ Pipe1, Pipe1#1
Junction1, Junction1, Junction1 → Junction1, Junction1#1, Junction1#2
GIS fields
To help you create your model from GIS data successfully, we’ve created a table detailing the GIS fields considered by Qatium for each asset type.
Pipes
Field | Default value | Aliases |
ID | sequential numbers | “assetid”, “ASSET_ID”, “WATHYDRANT”, “WATMAINID”, “WATSERVICE”, “WATVALVEID”, “OBJECTID”, “Unit_ID”, “Nombre”, “dc_id”, “Name, Id” |
Length | calculated from the GIS layer | "Shape__Len", "Longitud", "Length", "Long" |
Diameter | 200 mm | “diametro_nominal_dn__mm_”, “NominalDiameter”, “NOMINALDIA”, “Diameter_m”, “VALVE_SIZE”, “PIPE_SIZE”, PIPE_DIA, Diameter, “Diametro”, “DIAM_Ø”, “DIAM_Ø”, “dn_mm”, “Diam”, “Size, Ø”, “dn, Ø” |
Roughness coefficient |
H-W | "Roughness", "RoughCoeff", "Rugosidad", "CoefRug" |
Minor loss coefficient | 0 | "MinorLoss", "LossCoeff" |
Status: OPEN, CLOSED, CV | OPEN | "IniStatus", "Estado", "Status", "estado_ape", "estado_act",”d_presents”, “d_normalst”, "normalstat" |
Rule | No default value, ignored if no value field present | “Rules”, “Rule” |
Material | No default value, ignored if no value field present | "Material", "d_material", "PIPE_MTRL" |
Installation Date | No default value, ignored if no value field present | "FECHA_DE_INSTALACION", "FechaDeInstalacion", "Installation_Date", "InstallationDate", "created_date", "FECHA_DE_I", "Installati", "installdat", "Fecha", "Date", "instal", "laid" |
Description | No default value, ignored if no value field present | “Description”, “Descripcion” |
Group | No default value, ignored if no value field present | “Group”, "Grupo" |
Life | No default value, ignored if no value field present | "Life", "lifecycle", "d_lifecycl", "estado_de_servicio" |
WarningThresholdMax | No default value, ignored if no value field present | “WarningThresholdMax” |
WarningThresholdMin | No default value, ignored if no value field present | “WarningThresholdMin” |
Valves
Field | Default value | Aliases |
ID | sequential numbers | “assetid”, “ASSET_ID”, “WATHYDRANT”, “WATMAINID”, “WATSERVICE”, “WATVALVEID”, “OBJECTID”, “Unit_ID”, “Nombre”, “dc_id”, “Name, Id” |
Terrain elevation | Google API | "Elevation", "Elev", "COTASOLERA", "COTA_TER", "Altura", "Cota", "TotalHead", "Head" |
Diameter | 200 mm | “diametro_nominal_dn__mm_”, “NominalDiameter”, “NOMINALDIA”, “Diameter_m”, “VALVE_SIZE”, “PIPE_SIZE”, PIPE_DIA, Diameter, “Diametro”, “DIAM_Ø”, “DIAM_Ø”, “dn_mm”, “Diam”, “Size, Ø”, “dn, Ø” |
Family | TCV |
"ValveType", "Category", "Family", "Familia", "Type", "Tipo", "Class" |
Setting | 0 | "Setting", "Consigna" |
Minor loss coefficient | 0 | "MinorLoss", "LossCoeff" |
STATUS: OPEN, CLOSED, ACTIVE | OPEN | "IniStatus", "Estado", "Status", "estado_ape", "estado_act",”d_presents”, “d_normalst”, "normalstat" |
Rule | No default value, ignored if no value field present | “Rules”, “Rule” |
Upstream | depending on the orientation of the surrounding piping | "UpstreamConnections", “UP”, “upstream” |
Description | No default value, ignored if no value field present | “Description”, “Descripcion” |
Group | No default value, ignored if no value field present | “Group”, "Grupo" |
Life | No default value, ignored if no value field present | "Life", "lifecycle", "d_lifecycl", "estado_de_servicio" |
Pumps
Field | Default value | Aliases |
ID | sequential numbers | “assetid”, “ASSET_ID”, “WATHYDRANT”, “WATMAINID”, “WATSERVICE”, “WATVALVEID”, “OBJECTID”, “Unit_ID”, “Nombre”, “dc_id”, “Name, Id” |
Terrain elevation | Google API | "Elevation", "Elev", "COTASOLERA", "COTA_TER", "Altura", "Cota", "TotalHead", "Head" |
Power | 1 kW | "Power", "Potencia", "Potency", "Output", "Force" |
Status: OPEN, CLOSED | OPEN | "IniStatus", "Estado", "Status", "estado_ape", "estado_act",”d_presents”, “d_normalst”, “normalstat” |
Rule | No default value, ignored if no value field present | “Rules”, “Rule” |
Upstream | depending on the orientation of the surrounding piping | "UpstreamConnections", “UP”, “upstream” |
Setting | 0 | “Setting”, “Consigna” |
Description | No default value, ignored if no value field present | “Description”, “Descripcion” |
Group | No default value, ignored if no value field present | “Group”, "Grupo" |
Life | No default value, ignored if no value field present | "Life", "lifecycle", "d_lifecycl", "estado_de_servicio" |
Supply sources
Field | Default value | Aliases |
ID | sequential numbers |
“assetid”, “ASSET_ID”, “WATHYDRANT”, “WATMAINID”, “WATSERVICE”, “WATVALVEID”, “OBJECTID”, “Unit_ID”, “Nombre”, “dc_id”, “Name, Id” |
Terrain elevation | Google API | "Elevation", "Elev", "COTASOLERA", "COTA_TER", "Altura", "Cota", "TotalHead", "Head" |
Head (Total elevation) | 30 m (above ground) | “TotalHead”, “Head”, “Altura”, “Height” |
Description | No default value, ignored if no value field present | “Description”, “Descripcion” |
Group | No default value, ignored if no value field present | “Group”. "Grupo" |
Life | No default value, ignored if no value field present | "Life", "lifecycle", "d_lifecycl", "estado_de_servicio" |
Tanks
Field | Default value | Aliases |
ID | sequential numbers | “assetid”, “ASSET_ID”, “WATHYDRANT”, “WATMAINID”, “WATSERVICE”, “WATVALVEID”, “OBJECTID”, “Unit_ID”, “Nombre”, “dc_id”, “Name, Id” |
Terrain elevation | Google API | "Elevation", "Elev", "COTASOLERA", "COTA_TER", "Altura", "Cota", "TotalHead", "Head" |
Height | 0 m | "Height" |
Initial level | 2 m | “InitialLevel”, “StartLevel”, “NivelIni”, “IniLevel”, “Nivel”, “Level” |
Minimum level | 0 m | "MinimumLevel”, “MinLevel”, “NivelMin”, “NivMin" |
Maximum level | 4 m | “MaximumLevel”, “MaxLevel”, “NivelMax”, “NivMax” |
Diameter equivalent | 20 m | “diametro_nominal_dn__mm_”, “NominalDiameter”, “NOMINALDIA”, “Diameter_m”, “VALVE_SIZE”, “PIPE_SIZE”, PIPE_DIA, Diameter, “Diametro”, “DIAM_Ø”, “DIAM_Ø”, “dn_mm”, “Diam”, “Size, Ø”, “dn, Ø” |
Minimum volume | 0 m3 | “MinimumVolume”, “MinVolume”, “VolumenMin”, “VolMin” |
Description | No default value, ignored if no value field present | “Description”, “Descripcion” |
Group | No default value, ignored if no value field present | “Group”, "Grupo" |
Life | No default value, ignored if no value field present | "Life", "lifecycle", "d_lifecycl", "estado_de_servicio" |
Junctions
Field | Default value | Aliases |
ID | sequential numbers | “assetid”, “ASSET_ID”, “WATHYDRANT”, “WATMAINID”, “WATSERVICE”, “WATVALVEID”, “OBJECTID”, “Unit_ID”, “Nombre”, “dc_id”, “Name, Id” |
Terrain elevation | Google API | “Elevation”, “Elev”, “COTASOLERA”, “COTA_TER”, “Altura”, “Cota”, “TotalHead”, “Head” |
Base demand | Calculated as a function of the network | "Demand", "Demanda", "BaseDem", "DemBase" |
Description | No default value, ignored if no value field present | “Description”, “Descripcion” |
Emitter | No default value, ignored if no value field present | “Emitter”, “EmittCoef” |
Group | No default value, ignored if no value field present | “Group”, "Grupo" |
Life | No default value, ignored if no value field present | "Life", "lifecycle", "d_lifecycl", "estado_de_servicio" |
WarningThresholdMax | No default value, ignored if no value field present | “WarningThresholdMax” |
WarningThresholdMin | No default value, ignored if no value field present | “WarningThresholdMin” |
Zones
Field | Default value | Aliases |
ZoneId | sequential numbers |
“Name”, “Nombre”, “Zone”, “Zona”, “Id”, “text” |
BaseDemand | Calculated as a function of the network | "BaseDem”, “DemBase” |
DemandPattern | Calculated as a function of the network | “DemandPattern”, “DemandPatt” |
Description | No default value, ignored if no value field present | “Description”, “Descripcion” |
Inlets | No default value, ignored if no value field present | “inlets”, “entradas” |
Outlets | No default value, ignored if no value field present | “outlets”, “salidas” |
- Aliases are not case-sensitive
- The order of the aliases in the tables represents the priority we’ll give them in the network
Tip from Q:
Qatium validates your GIS data before creating a model from it, ensuring that the data uploaded is coherent. You can read more about Data Validation below.
Hydrants
Just like an existing EPANET model, when creating a model from GIS data, you can specify which junction layers represent hydrants on your model.
There are 2 ways to do it:
- By adding H_ as a prefix to the asset ID of the relevant junction layers
- By adding the word hydrant (or any of the accepted aliases) to the name of the relevant junction layers
Important:
“Hydrant” can be replaced by one of the following aliases: boca, faucet, fire, hidrante, hydrant, incendio, riego, salida, spigot
Laterals
You can also define lateral pipes in your network, so that you can visualize and filter them in the Network elements panel.
To do so, specify “group” as field and “lateral” as attribute in your imported pipes.
For example, in your GIS attributes table, laterals would look like this:
Customer points
Adding customer points to your network is very useful, as it allow you to:
- see the impact of an operation to the customers, when running scenarios
- visualize customer consumption
- add consumption info to the simulation to improve the accuracy of the network
- get Water balance insights, especially related to efficiency
You can do it in the following 2 ways:
- Using GeoJSON files: add “Customer”as an attribute to the “Group” field of your imported junction file.
For example:
- Using CSV files: you can export all the relevant data as a CSV file and then upload it directly to Qatium. There is no specific format required for your file but it should include longitude and latitude values, allowing Qatium to determine the coordinates.
From here on, Qatium takes charge of transforming the data so that you can see them in your network. Here’s how this works:
- Potential coordinate columns are identified. They should match a certain pattern, i.e. numbers between 180 -180 (for longitude) and 90 -90 (for latitude), with a decimal point (. or ,) and at least one number after. Next the candidate columns are checked and filtered and matched to longitude/latitude based on being within the bounding box of the network.
- Asset IDs are established by searching for columns with unique values and selecting the first one.
- The projection is assumed to be the default GIS projection (WGS84).
- All the remaining data in the CSV are added to the assets, and they are processed the same way as properties coming in GIS files.
Thresholds
You can set thresholds for your assets when importing your GIS files. These values will then be compared with the live data. If the live data values exceed the threshold values for more than 1 hour, they are considered an issue, triggering an alert. If you don’t preset the threshold values, no alert will be raised.
To add a threshold to an asset, add a new property called “WarningThresholdMin” (for minimum threshold) or “WarningThresholdMax” (for maximum threshold), as shown below:
Additional background layers
You can also add a layer containing any kind of geometry to your network. This can be useful to display buildings, labels etc.
In order to do so, you need to:
- contact Q
- upload your files (either Shapefiles or GeoJSON)
Once added, the new layer can be seen in the background of your network in a blue shade
For example, buildings would show like this:
Important:
If you experience any trouble while importing some background or zone layers involving demand zones, critical infrastructure, treatment plants, or any kind of boundary or label (like buildings, neighborhoods, city, region, restricted areas, etc), please get in touch with Q.
Recategorize layers
You can always recategorize your file layers any time after the import.
Using the Network layer panel, you can select what type of asset represents each source or ignore it.
Please bear in mind that
- if there is only one layer with line geometry, it will always be considered as a pipe and cannot be recategorized;
- layers with polygon geometry can only be recategorized as zones.
Importing simple control rules
Qatium supports 3 kinds of simple rules as defined in EPANET during a GIS import (GeoJSON or Shapefile).
You can include your rules in a field named [“rule”, “rules”] for pipes, valves and pumps.
Here’s what you need to know in order to import your simple control rules successfully:
- Qatium accepts a short version of control rules: the object type (here LINK) and ID followed by a list of its different settings separated by a separator:
Link 1 properties: LINK 1 CLOSED AT TIME 2, OPEN AT TIME 3
Will be interpreted as: LINK 1 CLOSED AT TIME 2 LINK 1 OPEN AT TIME 3
- Qatium accepts control rules defined for other elements: any valid rule (containing the object type (here LINK elements) and ID, will be applied to the mentioned object regardless of the location of the rule:
Link 1 properties: LINK 2 CLOSED AT TIME 2, LINK 2 OPEN AT TIME 3
Will be interpreted as: LINK 2 CLOSED AT TIME 2 LINK 2 OPEN AT TIME 3
E.g.: A rule for Link 2 located in Link 1 properties, will be applied to Link 2 as long as the rule starts with “LINK 2”.
- Qatium accepts multiple control rules separators: tab, comma, semicolon, break line. If the control rule is not valid, it will be included in the model and in the .inp file as a comment, in case the model is downloaded:
Link 1 properties: LINK 2 CLOSED AT TIME 2, LINK Qatium OPEN AT TIME 3
Will be interpreted as: LINK 2 CLOSED AT TIME 2 ; [not apply] LINK Qatium OPEN AT TIME 3
Important:
- Please import all GIS files at the same time. You can specify the Shapefile encoding in .cpg files, and for GeoJSON files, encoding shall be UTF-8 (as the JSON standard remarks).
- When uploading shapefiles, please upload .shp, .shx, .dbf and .prj files.
Data enhancement
If you don’t have all the optimal GIS data available, don’t worry.
Qatium performs some data enhancement during your GIS data import. Q - our Smart Assistant - will filter, validate and infer from your existing data to build a working hydraulic model.
Data filtering
To accurately reflect your currently active network, Q filters any abandoned and proposed elements from your GIS dataset, except for zone layers.
Qatium will rely on the lifecycle property of all assets to discard them. Q will look for GIS fields named "life", "lifecycle", "d_lifecycl".
Here you have a list of the aliases for the lifecycle property:
Lifecycle | Alias |
ACTIVE | "Active", "Activo", "Activa", "En servicio" |
ABANDONED | "Abandoned", "Abandonada", "Abandonado" |
PROPOSED | "Proposed", "Propuesta", "Propuesto", "Planned" |
Important:
Fields and attributes are not case sensitive.
Unit system detection
To determine the unit system of the network, Qatium performs checks on the diameter field of pipe files, which consist of 3 stages:
- Filtering: we accept values within the range from 1 to 4,000
- Classification by file: we check if each file can belong to US Customary when
- the value of the maximum diameter is less than 150
- the value of the minimum diameter is less than 15
If neither of the conditions is met, the file is set as International System.
- Setting the network unit system: if any of the pipe files was set as International System, the network unit is set as International System. Otherwise it is set as US Customary.
Geometry data filtering
Ignoring objects without geometry
Objects without coordinates in their geometry are discarded, which means that they won’t be represented in the model.
Discarding overlapping nodes
When there are overlapping nodes (nodes with the same coordinates, with a 0.1 m tolerance), only the first element is preserved, according to the following order of priorities:
- SUPPLY SOURCE
- TANK
- PUMP
- VALVE
- PRV
- PSV
- FCV
- PBV
- GPV
- TCV
- JUNCTION
- Hydrant family
- Junction family
- If a preserved node has no Elevation property, it is obtained from the first discarded node that contains that information.
- Demands are only preserved if the preserved node is a junction. If a junction with assigned demands overlaps with a valve, it will be displaced 0.5m away from that valve and over the pipe it belongs to. This way, the demands are not lost.
Rounding coordinates
For the purpose of reducing file sizes, Qatium rounds the coordinates of all objects to 8 decimal places.
Data validation
Qatium validates your GIS data before creating a model from it, ensuring that the data uploaded is coherent. Qatium will read the layer attributes and make sure that each value complies with the validation rules listed in the table below.
If a GIS attribute doesn't pass the validation stage, it will be ignored and we’ll replace the discarded values with default values.
Validation rules
Attribute | Object | Validation |
Demand | Nodes | -inf <demand <inf |
Description | All | It is converted to text |
Diameter | Pipes, Valves | [15-4000] mm |
Equivalent diameter | Tanks | > 0 m |
Group | All | “customer”, “lateral” |
Head | Supply sources | >= 0 |
Initial level | Tanks | Min level <= IL <= Max level |
Installation date | Pipes |
Format: YYYYMMDD |
Length | Pipe | > 0 |
Life | All | “ACTIVE”, “ABANDONED”, “PROPOSED” |
Material |
Pipes | See list of accepted aliases |
Maximum level | Tanks | > 0 |
Minimum level | Tanks | > = 0 and < Maximum level |
Minimum volume | Tanks | > 0 m3 |
Minor losses | Pipes, Valves | >= 0 |
Name | All | It is converted to text |
Power | Pumps | >0 kW |
Roughness coefficient | Pipes | > 0 |
Setting | Valves | >= 0 |
Status | Pipes, Valves and Pumps | See list of accepted aliases |
Type | Valves | "PRV", "PSV", "PBV", "FCV", "TCV", "GPV" |
Default attribute values
All attributes with unreadable or invalid values are set with the following default values in the defined unit system:
Attribute | Object | Default value | |
SI | US customary | ||
Diameter | Pipes, Valves | the mode* or 200 mm | the mode* or 7.87402 in |
Equivalent Diameter | Tanks | 20 m | 65.6168 ft |
Minimum volume | Tanks | 0 m3 | 0 ft3 |
Minimum level | Tanks | 0 m | 0 ft |
Maximum level | Tanks | Minimum level + 4 m | Minimum level + 13.1234 ft |
Initial level | Tanks | mean of max & min | |
Minor losses | Pipes, Valves | 0 | |
Status | Pipes, Valves and Pumps | OPEN | |
Roughness | Pipes | 148 (HW) | |
Power | Pumps | 1 kW | |
Setting | Valves | 0 | |
Type | Valves | TCV |
Important:
For pipes only: the mode is the most repeated value. Qatium will first try to calculate the mode of pipe diameter for each file. If successful, the value of the mode is used as the default value for pipes from a specific file.
Data inference
Qatium will try to interpret the GIS data imported and assign an asset type to each uploaded file. But if you can’t see all of your assets in your model, it is most likely that Q couldn’t recognize part of your dataset.
Here's how inference works for each asset:
Supply Sources
Inferring supply sources
If no supply source GIS data is provided or it is invalid, Qatium will infer the location of the source. If the simulation cannot run with the defined source, Qatium will try to infer the location of an additional source. The network is divided into subnetworks. The most dense one is checked for a supply source. If it doesn't contain a supply source, we infer it at the end node with the highest elevation of the pipes with the largest diameter.
Inferring total head
The total head of the supply source is set at 30 meters above the terrain elevation. The final result is recorded with only 1 decimal place. At the moment, this attribute value is not considered in the GIS dataset, therefore, we set it by default in all cases.
Junctions
Inferring connections
- If you don't have a junction data layer:
Qatium will infer where the junctions are missing and connect them to the pipes, creating a connected network.
- If you do have a junction data layer:
Qatium will interpret the junction locations and connect them to the relevant pipes, creating a connected network. Qatium will connect pipes with nearby junctions with a tolerance of 0.1 meters.
Inferring demands
If you haven’t provided demand data, Qatium will estimate the population and population density based on the size and density of the distribution network. Demands will be calculated from these estimates and will be assigned to the nearest junction.
Inferring elevation
Qatium will append elevation data to the nodes, transforming your GIS data into a working hydraulic model. From that moment on you can start visualizing your model and running what-if scenarios.
Pipes
Inferring pipe length
For each pipe not having the length attribute populated or invalid, it is calculated from its geometry. The turf.js library is used. This does not take into account the elevation of each vertex. The length is rounded to 2 decimal places for both systems of units.
Inferring headloss formula
If your network does not include an .inp file with a defined headloss formula, Qatium will infer it.
Depending on the case at hand, here’s how this works:
- If no roughness values are available in the pipe dataset, the Hazen-Williams (H-W) formula will be set as default (roughness = 148)
- If roughness values are available as properties only for some pipes, Qatium calculates the median and then, depending on the range, infers the formula as shown below:
- Hazen Williams (H-W) → Median roughness > 50
- Darcy Weisbach (D-W) → 50 >= Median roughness > 0.05
- Chezy Manning (C-M) →0.05 >= Median roughness > 0
Inferring roughness values
After inferring the formula, Qatium will also fill in any missing roughness values (null or blank, i.e. where no number is provided).
The values are calculated on the basis of the pipe's material and installation date (age), if available.
1. Roughness based on material
HW | CM | DW | |
AC: "Asbestos Cement" | 140 | 0.011 | 0.10000 |
ARO: "Abrasion Resistant Outerwrap" | 148 | 0.0148 | 0.14800 |
CI: "Cast Iron" | 130 | 0.012 | 0.80000 |
COPP: "Cooper" | 130 | 0.011 | 0.10000 |
CWOSMJ: "Concrete Without Sheet Metal Jacket" | 140 | 0.011 | 0.18 |
CWSMJ: "Concrete With Sheet Metal Jacket" | 135 | 0.013 | 0.36000 |
DI: "Ductile Iron" | 130 | 0.012 | 0.30000 |
DIL: "Lined Ductile Iron" | 130 | 0.0148 | 0.25000 |
FE: "Iron" | 148 | 0.0148 | 0.14800 |
GI: "Galvanized Iron" | 120 | 0.016 | 0.15000 |
GIL: "Lined Galvanized Iron" | 120 | 0.0148 | 0.15000 |
HDPE: "High Density Polyethylene" | 150 | 0.009 | 0.01000 |
L: "Lead" | 140 | 0.011 | 0.01000 |
LDPE: "Low Density Polyethylene" | 150 | 0.009 | 0.01000 |
MDPE: "Medium Density Polyethylene" | 150 | 0.009 | 0.01000 |
NA: "Not available" | 150 | 0.0148 | 0.14800 |
PC: "Prestressed Concrete" | 150 | 0.011 | 0.18000 |
PE: "Polyethylene" | 150 | 0.009 | 0.01000 |
PE80: "Polyethylene 80" | 150 | 0.009 | 0.01000 |
PE100: "Polyethylene 100" | 150 | 0.009 | 0.01000 |
PVC: "Polyvinyl Chloride" | 150 | 0.009 | 0.05000 |
PVCO: "Orientated PVC" | 150 | 0.0148 | 0.05000 |
RC: "Reinforced Concrete" | 140 | 0.0148 | 0.18 |
S: "Steel" | 150 | 0.0148 | 0.10000 |
SI: "Spun Iron" | 150 | 0.0148 | 0.60000 |
SS: "Stainless Steel" | 150 | 0.011 | 0.14800 |
UNK: "Unknown" | 148 | 0.0148 | 0.14800 |
UPVC: "Unplasticized PVC" | 150 | 0.009 | 0.05000 |
2. Roughness amended based on installation date (age)
The value calculated from the material will then be amended based on the pipe’s age, i.e. the number of years since its installation date.
Depending on the head loss formula applied, this is how this works:
H-W: InferredRoughness = Roughness(material)*(1-Age/180) [50 - inf] D-W: InferredRoughness = Roughness(material) / (1-Age/180) [0.05 - 50] C-M: InferredRoughness = Roughness(material) / (1-Age/180) [0 - 0.05] |
What if the resulting roughness value is out of range?
It would depend on the formula applied. In the case of the H-W formula, the value is decreasing up to a minimum of 50, so the minimum value would be chosen. Conversely, in the cases of D-W or C-M, the value increases, so the maximum would be chosen.
Connecting pipes at T-junctions
If one end of the pipe (not connected to another) spatially coincides with another pipe, the latter is split and a junction added at the intersection. The two resulting pipes inherit the properties from the original split pipe; only the length of each section is recalculated (proportionally to the original one). In this case, a tolerance of 0.1 m is used and the ends of the new pipes are extended to the end of the pipe that generates the split. Normally, these extensions are not noticeable on the map.
Tanks
Inferring tank elevations
The elevation (ground level) is defined by Google API. To specify the height of the tanks (distance between the ground level and the floor of the tanks), please add this information in a Height attribute in the corresponding GIS layer. In case you define both, elevation and height of the tank, the result will be the sum of both.
Demands
Inferring the base demand
If you have provided the demand data in your import, we don’t infer any additional consumption for the network.
Otherwise, Qatium infers this data in 2 steps:
- The population is estimated, with the following formula: * Formula:
- The base demand is estimated by multiplying the population by a usage of 135 L/inhabitant/day.
Consumption pattern
If you have provided the demand data in your import, we don’t infer any additional consumption for the network.
The hourly pattern applied by default is the following:
Allocating demand
This demand is assigned only to junctions connected to pipes whose diameter is less than or equal to the average diameter. The allocation of the demand is made proportionally to the minimum pipe diameter that is connected with each selected node.
In cases of models without tanks and a single supply source, a check is performed. A tree is generated over the network with unique paths to the demand points. The accumulated flows in each pipe of the tree are calculated. If at any time the optimum capacity of the pipe is exceeded, the downstream demands are reduced.
Pumps and valves
We recommend having the upstream pipe defined in your pump and valve layers as it limits inferences. However, we understand this data is not always available, and we want to help!
Element orientation
Qatium may go through the following stages to calculate orientation, until it gets a result:
- It calculates the shortest distance by counting the elements between water sources. If the distance is the same for different orientations, supply sources take priority over tanks, so that orientation is selected. If the distance is the same but all orientations point to the same upstream, that upstream will be selected, as it’s the only solution.
- If distance is the same but we have different possible upstream, none is selected as upstream. In this case, Qatium looks for the shortest path based on the distance of the pipes - as long as it doesn’t include closed valves or pumps.
- If the previous stage also fails to produce an orientation result, Qatium looks at the direction the pipe was drawn. The pipe pointing towards the element is considered upstream; and all other connections are considered downstream.
Reversely, the pipe pointing away is considered downstream; and all others are considered upstream.