Skip to main content

Python interface to Pendulo water hammer simulation kernel

Project description

PenWin32 (Pendulo) python API calling interface

What is it?

A python package enabling users to call a minimal set of PenWin32.dll API functions and subroutines within python scripts. For latest python version e.g. 3.10. 32 bits only.

Installation

Windows only

pip install pendulo

Requirements (32 bits)

  1. python 3.10

  2. numpy 1.21.3 (python 3.10)

  3. Pendulo kernel library (penwin32.dll) 2022+

  4. valid Pendulo_size and Pendulo_version license

This tool expects Picwin32.dll to be in the PATH or in one of the following folders:

                %localappdata%/Programs/Safege/Pendulo or
                %localappdata%/Programs/Suez/Pendulo or
[ C: or D: ] / 'Program Files (x86)/Safege/Pendulo_'
             + ['' or '_fr' or '_uk' or '_esp' or '_eng'] + ['' or '_ck']

With custom installations, PENDULO_DIR environment variable can be set to define the path.

Content

The package provides:
  1. pen_vers = init(debug=0) function

  2. close() function

  3. vdat, vval = ts(id_elem, typelt, attr) retrieves the result TS for element ‘id_elem’ of type ‘typelt’ and attribute ‘attr’.

Example of ‘typelt’ and ‘attr’:
  1. ‘LINK’ or ‘ARC’: ‘Q’

  2. ‘NODE’ or ‘NOEUD’: ‘P’, ‘CH’ or ‘HH’

  3. ‘TANK’ or ‘RESERVOIR’: ‘NC’ or ‘NV’, ‘VO’

  4. ‘PUMP’ or ‘POMPE’: ‘PC’, ‘VR’, ‘Q’

  5. ‘VANNE’ or ‘ROBINET’ or ‘REGULATEUR’: ‘DO’, ‘PC’, ‘Q’

  6. ‘ANB’: ‘Q’, ‘VO’, ‘NC’ or ‘NV’

Example

# -*- coding: utf-8 -*-
from logging import root
import os.path as OP
import pendulo
from ganessa.plot import pageplot
from ganessa.util import winstr, strf3
import ganessa.sim as pic


folder = OP.dirname(__file__)
# init pendulo
pendulo.init()
model = OP.join(folder, 'VIROFL_1.PEN')
# load Pendulo model
print('===\nChargement de ', model)
istat = pendulo.loadmodel(winstr(model))
if not istat:
    print(' * Erreur au chargement *')

# get unit for demand at node
cs_coef, cs_name, cs_ref = pendulo.get_unit_info('CS')
print(f'Unit CS: {cs_name} = {cs_coef} {cs_ref}')
# get demand value at a given node
node = 'PEN1'
idx, z_node, cs_node, ch_node = pendulo.get_node(node)
print(f'Demand at node {node} is: {strf3(cs_node)} {cs_name}')
# set / change demand boundary condition: sequence of (time, value) tuples
stat = pendulo.set_node_boundary_condition(node, [(0, cs_node), (0.5, 3*cs_node)])
print('Changing demand', 'OK' if stat else '*failed*')

# run simulation
print('Starting simulation ... please wait')
stat = pendulo.run_simulation(horizon=20, storage_factor=10)
print('Simulation','OK' if stat else '*failed*')
# collect results
results = []
for node in ['PEN1', '36N646', '36N495', '36N488', '36N463', '36N35']:
    t, v = pendulo.ts(winstr(node), typelt='NODE', attr='CH')
    if len(t) and len(v):
        results.append((node, t, v))
fname = OP.join(folder, 'Simulation_1.png')
pageplot(results, 'Simulation #1 - Charge aux noeuds', 2, 3, fname, inter=False, orient='h')
pendulo.close()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

pendulo-0.9.7-cp310-cp310-win32.whl (226.7 kB view details)

Uploaded CPython 3.10 Windows x86

pendulo-0.9.7-cp39-cp39-win32.whl (226.6 kB view details)

Uploaded CPython 3.9 Windows x86

File details

Details for the file pendulo-0.9.7-cp310-cp310-win32.whl.

File metadata

  • Download URL: pendulo-0.9.7-cp310-cp310-win32.whl
  • Upload date:
  • Size: 226.7 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.10.1

File hashes

Hashes for pendulo-0.9.7-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 c6c561110457f0029e81a30a6372f9ddbd8e12c7556aefa85394b80446637155
MD5 98c51c52c483a54deba45e586703dbdc
BLAKE2b-256 3f288d940439f2df45aed77edbe1c2ae17eac1506548974b7f280bfca2e21822

See more details on using hashes here.

File details

Details for the file pendulo-0.9.7-cp39-cp39-win32.whl.

File metadata

  • Download URL: pendulo-0.9.7-cp39-cp39-win32.whl
  • Upload date:
  • Size: 226.6 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.9

File hashes

Hashes for pendulo-0.9.7-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 890f217cc8f210f43910fafa3cbbf88af0651f235e3584b1355eca5577a51fdd
MD5 7f0cb7a9fbf1e7943a5a1eefbd850202
BLAKE2b-256 66d22f8eb3f34d72af429b6452a272c6cad41428fd850df759b51fff52a93e76

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page