WNTR icon indicating copy to clipboard operation
WNTR copied to clipboard

Defaults > Hydraulics > Pattern

Open s-u-m-a-n-t-h opened this issue 2 years ago • 5 comments

  • For bug reports and code questions: provide a summary, information on your computing environment, and a simple example that replicates the issue. Water network models are available in the examples folder.
  • For feature requests and general questions: provide a summary.

Summary

In epanet, under project defaults>Hydraulics>Pattern , if the value is a string like 'time' or if it is a number that's not '1' , the wntr io does not allow importing the file. I found the following lines in wntr io relevant to this issue :

ln no 235 : class InpFile(object): """ EPANET INP file reader and writer class. This class provides read and write functionality for EPANET INP files. The EPANET Users Manual provides full documentation for the INP file format. """ . . . .

ln no 342 : self._read_patterns() . . . . ln no 973: def _read_patterns(self): _patterns = OrderedDict() for lnum, line in self.sections['[PATTERNS]']:

        # read the lines for each pattern -- patterns can be multiple lines of arbitrary length

        line = line.split(';')[0]
        current = line.split()
        if current == []:
            continue
        pattern_name = current[0]
        if pattern_name not in _patterns:
            _patterns[pattern_name] = []
            for i in current[1:]:
                _patterns[pattern_name].append(float(i))
        else:
            for i in current[1:]:
                _patterns[pattern_name].append(float(i))
    for pattern_name, pattern in _patterns.items():
        # add the patterns to the water newtork model
        self.wn.add_pattern(pattern_name, pattern)
    **if not self.wn.options.hydraulic.pattern and '1' in _patterns.keys():
        # If there is a pattern called "1", then it is the default pattern if no other is supplied
        self.wn.options.hydraulic.pattern = '1'
    elif self.wn.options.hydraulic.pattern not in _patterns.keys():

        # Sanity check - if the default pattern does not exist and it is not '1' then balk
        # If default is '1' but it does not exist, then it is constant
        # Any other default that does not exist is an error

        if self.wn.options.hydraulic.pattern is not None and self.wn.options.hydraulic.pattern != '1':
            raise KeyError('Default pattern {} is undefined'.format(self.wn.options.hydraulic.pattern))**
        self.wn.options.hydraulic.pattern = None

Environment

Python version, WNTR version, operating system

Example

s-u-m-a-n-t-h avatar Feb 13 '23 09:02 s-u-m-a-n-t-h

Any response to this please ?

s-u-m-a-n-t-h avatar Feb 22 '23 04:02 s-u-m-a-n-t-h

I'm sorry, I totally thought I had responded, and it looks like it never sent.

Can you provide us with just the [PATTERNS] section (or the part of it that is causing issues) that your .inp file is using? We are having trouble replicating the error, and that would probably help us get there quicker. We definitely don't want the whole file or proprietary data, but if you can give some of the patterns section lines, it would be very helpful. Thanks

dbhart avatar Feb 22 '23 22:02 dbhart

@s-u-m-a-n-t-h can I see the options section of the .inp file that you got out of EPANET that has the default pattern? Thanks!

dbhart avatar Feb 27 '23 17:02 dbhart

@dbhart Please find below the [OPTIONS] section of the .inp file when opened with a text editor :

[OPTIONS] Units LPS Headloss H-W Specific Gravity 1 Viscosity 1 Trials 500 Accuracy 0.001 Unbalanced Continue 10 Pattern time Demand Multiplier 1.0 Emitter Exponent 0.5 Quality Cloro mg/L Diffusivity 1 Tolerance 0.01

Please note that it says time against Pattern.

s-u-m-a-n-t-h avatar Mar 06 '23 04:03 s-u-m-a-n-t-h

Hi @dbhart , were you able to look at the options section of my input file ?

s-u-m-a-n-t-h avatar Mar 30 '23 10:03 s-u-m-a-n-t-h