knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
Aiming to avoid portability and accessibility problems made us search ways to restrict source code development by functionality of few external packages.
Since most functions have native argument vectorization usage of those functions with fast data.table framework is strongly encouraged when processing large data sets. For that purpose arguments for all package functions are thoroughly checked for type consistency and physical sense using asserts and tests from checkmate package. Moreover, in package documentation we borrow type designations according to checkmate notation.
It is recognized by pipeline companies that some sections of high pressure pipelines particularly those installed a number of years ago, have experienced some corrosion. Where corrosion is found, pipeline operators have been deeply concerned about the need for a method of determining the remaining strength of these corroded areas. If the corrosion does not penetrate the pipe wall, what is the pressure containing capability of the remaining pipe metal in terms of its ability to continue to operate safely at the maximum allowable operating pressure (MAOP) of pipeline system?
Thus, one of the needs of pipeline industry has been a procedure that will help operators, particularly field personnel, make decisions on existing pipelines, when exposed for any purpose, as to whether any corroded region may be left in service or whether it needs to be repaired or replaced. Such determinations must be based upon sound research and extensive testing in order to provide safe and conservative guidelines on which to base field decisions.
ASMEB31G-1991
and ASME
B31G-2012
codes have proven sound and have seen successful use in the pipeline
industry providing users with such required formalized framework for a very long period of time. That is why failure pressure calculators
b31gpf()
and b31gmodpf()
are widely used in assessment of POFs.
To preserve simplicity of traditional inline measurements during inspections we hereinafter consider only Analysis Level 1 in this R-package, since as noted in ASME B31G-2012 Level 1 evaluation is quite suitable for use in prioritizing corrosion defects identified by inline inspection.
Other approaches for operating with corrosion data presented in the package are aimed on
failure pressure calculations. Models like dnvpf()
, shell92pf()
, and
pcorrcpf()
assume different shapes of corrosion defects and usage
conditions for some cases. So, it is encouraged first to find out which
model is most suitable for solving some real world problem.
For the sake of simplicity and transparency the next values describing technological conditions, material properties of pipe and defect parameters are used as arguments throughout the most functions concerning corrosion diagnostics:
In the course of further development of functionality of this package, some revisions or supplements to the existing concept are not excepted.
Consistent estimate of failure for pipeline systems plays a critical role in optimizing their operation. To prevent pipeline failures due to growing corrosion defects it is necessary to assess the pipeline failure probability (POF) during a certain period, taking into account its actual level of defectiveness.
The pipeline failure is preceded by limit state which comes when the burst pressure, considered as a random variable, reaches an unacceptable level, or when the defect depth, also a random variable, exceeds the predetermined limit value.
Up to now no methods existed which would give absolutely correct POF assessments. Nevertheless the stochastic nature of corrosion processes clearly suggests exploiting of Monte-Carlo simulations (MC). Meanwhile the lack of comprehensive knowledge of stochastic properties of characteristics of pipe and of its defects aids in embracing of Principle of maximum entropy which allows to avoid doubtful and excessive preferences and specifications when choosing probability distribution models for failure factors and for inline inspection measurements.
Package function mepof()
is designed to calculate probability of failure (POF) of the corroded pipe by
MC, assigning maximum entropy
for stochastic nature of corroded area length and depth, as well as engineering characteristics of pipe with
thermal-hydraulic regime parameters.
Heat loss is the energy characteristic of district heating networks. It is the amount of heat energy spent on the transportation and distribution of heat energy from the source to the consumers.
Heat loss depends on the operating temperature, technical condition, volume and configuration of district heating network, as well as on climatic factors. Heat loss is additive being the sum of heat losses of individual pipeline segments.
Determination of heat loss for pipeline segments hereinafter is called heat loss localization.
It is assumed that actual heat loss ($Q_{\text{AHL}}$, [kcal]) of pipeline segment in certain period of time (duration) has two contributions: normative heat loss ($Q_{\text{NHL}}$, [kcal])) and extra-normative heat loss ($Q_{\text{ExNHL}}$, [kcal])). So we can write:
$$ Q_{\text{AHL}} = Q_{\text{NHL}} + Q_{\text{ExNHL}},\ Q_{\text{ExNHL}}> 0 $$
Localization of $Q_{\text{ExNHL}}$ is an important part of health maintenance activities of district heating network operation. One can determine $Q_{\text{ExNHL}}$ of pipeline segment as a positive difference between $Q_{\text{AHL}}$ and $Q_{\text{NHL}}$ and it is the most natural way. For that purpose Minenergo-325 and Minenergo-278 methods for postulating $Q_{\text{NHL}}$ are considered.
Minenergo-325 lists legally
affirmed maximum values of specific heat loss power ($q_s$, kcal/m/h) which is allowed for fault-free
steel pipes (see m325nhl()
), so that normative heat loss of L-meter length pipe for a duration $\tau$ is
$$Q_{NHL} = L\int_{\tau}^{}q_s(\tau)d\tau$$
ℹ Specific heat loss power may also be referred as specific rate of heat flow. Specific powers (specific rates of heat flow) higher than $q_s$ contribute to $Q_{\text{ExNHL}}$.
Minenergo-278 gives mathematical models
for calculation of specific heat loss power ($q_s$) as a function of
thermal-hydraulic regime and technical condition of pipeline segment (see m278hlcha()
,
m278hlund()
, and m278hlair()
).
Specific heat loss power ($q_{s}$, kcal/m/h) of cylindrical pipe can be more naturally expressed via the value of heat flux ($\phi_q$, W/m²) output by pipe wall through unit area:
$$q_s = \frac{3600}{4186.8} \cdot \phi_q \cdot \pi d$$
where $d$, [m], is an outside diameter of pipe, and $\frac{3600}{4186.8}\pi = 2.701283$ (kcal/h/W) is a dimension factor (see loss_flux()
, flux_loss()
).
Heat loss power for a pipe ($q_p$, kcal/hour) may be calculated as $$q_p = q_s L$$
where $L$ is a pipe length.
Localization of extra-normative heat loss
$Q_{\text{ExNHL}}$ could be performed if they know
thermal-hydraulic regime of district heating network for each pipeline
segment. In most cases thermal-hydraulic field (values of temperature,
pressure and heat carrier mass flow rate) is measured only on heat-supply
origins and near consumers, i.e. mostly on terminal nodes of
pipeline network. Middle segments of network are rarely equipped and
thus are not sensor-measured. For restoring of thermal-hydraulic field
at each pipeline segment they can trace temperature, pressure and
heat-carrier flow rate using hydraulic and thermal laws and
engineering characteristics of each pipe. Since only normative values of
heat flux are accessible for calculations the restored thermal-hydraulic
field is a normative (not actual) one. Nevertheless, even tracing small
networks may produce local inconsistencies in restored normative field
and those facts signal for possible extra-normative heat loss in-situ.
In accordance to sensor positions forward (see m325tracefw()
,
m325traceline()
) and backward (see m325tracebw()
,
m325traceline(forward = FALSE)
) tracing can be performed for the
linear and the bunched pipelines (also with massive data lack) on the basis of
Minenergo-325 norms.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.