Skip to main content

Pipeline integrity calculation

Project description

PipelineIntegrity library

GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status Codacy Badge Codacy Badge

In Russian

The free, open source PipelineIntegrity library designed to calculate the degree of danger of pipeline metal loss defects according to the ASME B31G method.

ASME B31G method

Installation

pip install pipeline-integrity

Usage

A pipe under pressure, with a length, diameter and wall thickness from specified material.

from pipeline_integrity.material import Material
from pipeline_integrity.pipe import Pipe

pipe = Pipe(
  440,  # length, inches
  56,  # diameter, inches
  0.63,  # wall thickness, inches
  Material(  # pipe material
    "Steel",
    52000  # SMYS, psi
  ),
  900  # pressure, psi
)
)

Metal loss defect with a specified position on the pipe and a specified depth.

defect = pipe.add_metal_loss(
  40,  # the defect starts at a distance of 40 inches from the beginning of the pipe
  4,  # defect length 4 inches
  10,  # along the circumference of the pipe, the defect begins
       # at 10 arc minutes from the top of the pipe
  20,  # the size of the defect along the circumference is 20 arc minutes
  0.039  # defect depth 0.039 inches
)

SMTS for pipe material must be set to create context for calculating the degree of severity of the defect according to the ASME B31G method

from pipeline_integrity.method.asme.b31g_2012 import Context

pipe.material.smts = 70000
asme = Context(defect)

Defect depth less than 10% wall thickness, no danger.

assert defect.depth == 0.039
assert pipe.wallthickness == 0.63

assert asme.years() > 0
assert 0.7 < asme.erf() < 0.71

For very low pressure cases, repair is never required (special value REPAIR_NOT_REQUIRED=777).

pipe.maop = 1
assert asme.years() == asme.REPAIR_NOT_REQUIRED

The depth of the defect is 50% of the pipe wall thickness.

pipe.maop = 900
defect.depth = 0.31
assert defect.length == 4
assert 0.74 < asme.erf() < 0.75

A defect with a length of 30 inches and a depth of 50% of the pipe wall thickness requires repair at the specified working pressure in the pipe.

defect.length = 30
assert asme.years() == 0
assert asme.erf() > 1.3

When the operating pressure is reduced to a safe value, the defect does not require repair.

assert pipe.maop == 900
assert round(asme.safe_pressure, 2) == 653.71
pipe.maop = 500
asme.is_explain = True
assert asme.years() > 0

If you set context property is_explain = True, then you can get explanation in text form.

asme.explain()
Calculate ERF by ASME B31G 2012 classic.
Calculate failure stress level by the classic way.
Parameter Sflow = 1.1 * material_smys.
Sflow = 1.1 * 52000 = 57200.0.
Parameter Z = length^2 / (diameter * wallthickness).
Z = 30^2 / (56 * 0.63) = 25.51.
Parameter Z = 25.51 > 20.
Failure stress level = Sflow * (1 - depth / wallthickness).
stress_fail = 57200.0 * (1 - 0.31 / 0.63) = 29053.968.
Failure pressure = 2 * stress_fail * wallthickness / diameter.
press_fail = 2 * 29053.968 * 0.63 / 56 = 653.714.
ERF = pipe_maop / press_fail.
ERF = 500 / 653.714 = 0.765

Repair is not required at the moment, calculate the time before repair.
With corrosion rate 0.016 mm/year, pipe wall 0.63 and depth 0.31 a through hole is formed after years: 21.
Calculating the year in which the corrosion growth of the defect will require repair.
Years: 4 ERF: 0.952.
Years: 5 ERF: 1.014.
Defect will require repair after years: 4.

Development

$ git clone git@github.com:vb64/pipeline.integrity.git
$ cd pipeline.integrity

With Python 3:

$ make setup PYTHON_BIN=/path/to/python3
$ make tests

With Python 2:

$ make setup2 PYTHON_BIN=/path/to/python2
$ make tests2

Example

Living version of online calculator example, that use this library, can be found here. The source code of this example placed in this repo in example dir.

Project details


Download files

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

Source Distribution

pipeline_integrity-1.5.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

pipeline_integrity-1.5-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file pipeline_integrity-1.5.tar.gz.

File metadata

  • Download URL: pipeline_integrity-1.5.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for pipeline_integrity-1.5.tar.gz
Algorithm Hash digest
SHA256 5c9c75e4225dba069d91c09a876efe3a079496086854e7e90b35f3c8b42c4e10
MD5 7195f96d982ea671e66c2d0cc63189ff
BLAKE2b-256 e450b6dc66aa28c3606bed5dd3c929819a969841082a69d6f4fa3870eea2380f

See more details on using hashes here.

File details

Details for the file pipeline_integrity-1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for pipeline_integrity-1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 86ca9816558ec7f9432c26acf835e3279457cd4e9efab2d7cde7bff282acacfd
MD5 5e8609d4e19ae93095a126ede722e5b2
BLAKE2b-256 221e3b9e6834e44ff1dbc8e10e9d6c964e98b3d853e961324b388f8b24aa7a13

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