122 lines
5.6 KiB
Markdown
122 lines
5.6 KiB
Markdown
# Runs the ILI clustering algorithm
|
||
|
||
Clustering criteria for pipeline defects refer to the guidelines or criteria that are used to
|
||
determine whether a group of defects in a pipeline should be considered a "cluster." These
|
||
criteria are typically based on a combination of factors, including the size, location, and
|
||
severity of the defects, as well as the spacing between them.
|
||
There are several different clustering criteria that can be used for pipeline defects,
|
||
depending on the specific context and application. Some common clustering criteria include:
|
||
|
||
- *Percentage of wall loss*: This criterion considers the percentage of the pipeline wall that has
|
||
been lost due to corrosion or other defects. A group of defects that collectively represent a
|
||
certain percentage of wall loss (e.g., 10%) may be considered a cluster.
|
||
- *Spacing between defects*: This criterion considers the distance between individual defects in a
|
||
pipeline. If the spacing between defects falls below a certain threshold (e.g., 1 meter), they
|
||
may be considered a cluster.
|
||
- *Geographic location*: This criterion considers the geographic location of defects within a
|
||
pipeline. If defects are clustered within a certain area of the pipeline (e.g., a bend or a
|
||
weld), they may be considered a cluster.
|
||
- *Severity of defects*: This criterion considers the severity or consequence of individual
|
||
defects. If a group of defects collectively represent a significant risk of failure or leakage,
|
||
they may be considered a cluster.
|
||
|
||
Pipeline operators typically use clustering criteria as part of their inspection and
|
||
maintenance programs to identify and prioritize areas of the pipeline that require attention.
|
||
By identifying and addressing clusters of defects, operators can help prevent failures and
|
||
ensure the safe and reliable operation of their pipelines.
|
||
|
||
Examining the clustering of pipeline defects is a crucial aspect of pipeline integrity
|
||
management. This involves evaluating the spacing between defects in a pipeline to determine the
|
||
likelihood of larger defects clustering together. Specific conditions must be met for this
|
||
distance to be considered acceptable. If these conditions are met, the possibility of defect
|
||
clustering cannot be overlooked.
|
||
|
||
## Clustering rules
|
||
|
||
Rules are used to configure the clustering algorithm. There are 11 standard rules and then a 12th custom rule.
|
||
|
||
Each rule is based on a length and circumferential criteria. If any two anomalies have a horizontal
|
||
separation less than the length criteria and a circumferential separation less than the circumferential
|
||
criteria the should be clustered.
|
||
|
||
The rules are details in the table below.
|
||
|
||
| Rule no. | Length Criteria | Circumferential Criteria |
|
||
| -------- | ------------------------------------------- | ------------------------------------------- |
|
||
| Rule 1 | Minimum (L1,L2) | Minimum (W1,W2) |
|
||
| Rule 2 | Minimum (6*wall thickness, Minimum (L1,L2)) | Minimum (6*wall thickness, Minimum (W1,W2)) |
|
||
| Rule 3 | Minimum (wall thickness, Minimum (L1,L2)) | Minimum (wall thickness, Minimum (W1,W2)) |
|
||
| Rule 4 | Minimum (L1,L2) | Minimum (wall thickness, Minimum (W1,W2)) |
|
||
| Rule 5 | Average (L1,L2) | Average (W1,W2) |
|
||
| Rule 6 | Wall thickness | Wall thickness |
|
||
| Rule 7 | 3*Wall thickness | 3*Wall thickness |
|
||
| Rule 8 | 2*Minimum (L1,L2) | 2*Minimum (W1,W2) |
|
||
| Rule 9 | Minimum (6*wall thickness, Average (L1,L2)) | Minimum (6*wall thickness, Average (W1,W2)) |
|
||
| Rule 10 | 1 inch = 25.4 mm | 6*wall thickness |
|
||
| Rule 11 | 1 inch = 25.4 mm | (3 × MAOP × OD) / (SF × SMYS × WJF) |
|
||
| Rule 12 | User Configurations | User Configurations |
|
||
|
||
|
||
## Input
|
||
|
||
### Arguments
|
||
|
||
- `org_id`: as string which should be a valid `uuid` for the organization
|
||
- `project_id`: the id of the data project where the pipeline data is found
|
||
- `pipeline_id`: an `array` of `strings` which should be valid UUIDs for pipelines
|
||
- `size_settings`: a string representing the size setting for clustering, possible values
|
||
- `original`
|
||
- `tolerance`
|
||
- `interaction`: a string representing the interaction setting for clustering, possible values
|
||
- `enabled`
|
||
- `disabled`
|
||
- `surface_location`: a string representing the surface location setting for clustering, possible values
|
||
- `matching`
|
||
- `any`
|
||
- `rule`: a string representing the clustering rule to use, possible values
|
||
- `rule1`
|
||
- `rule2`
|
||
- `rule3`
|
||
- `rule4`
|
||
- `rule5`
|
||
- `rule6`
|
||
- `rule7`
|
||
- `rule8`
|
||
- `rule9`
|
||
- `rule10`
|
||
- `rule11`
|
||
|
||
## Creating the function on the platform
|
||
|
||
To create this function on the platform using the `cli` set up the port forwarding as shown in README.
|
||
|
||
Then run the following command to create the function.
|
||
|
||
```bash
|
||
cargo run functions create \
|
||
-f functions/ili_clustering \
|
||
-d "Runs the ILI clustering algorithm" \
|
||
-i org_id=string \
|
||
-i project_id=string \
|
||
-i pipeline_id=array \
|
||
-i ili_id=array \
|
||
-i size_settings=string \
|
||
-i interaction=string \
|
||
-i surface_location=string \
|
||
-i rule=string
|
||
```
|
||
|
||
## Testing the function locally
|
||
|
||
You can run and test the function locally by running
|
||
|
||
```bash
|
||
cargo run
|
||
```
|
||
|
||
Then you can check it work with `curl` as follows
|
||
|
||
```bash
|
||
curl localhost:8080 -d $(jq '. | tojson' functions/ili_clustering/example_input.json)
|
||
```
|